Expand description

Code related to match expressions. These are sufficiently complex to warrant their own module and submodules. :) This main module includes the high-level algorithm, the submodules contain the details.

This also includes code for pattern bindings in let statements and function parameters.

Modules

simplify 🔒
Simplifying Candidates
test 🔒
util 🔒

Structs

ArmHasGuard is a wrapper around a boolean flag. It indicates whether a match arm has a guard expression attached to it.
Ascription 🔒
Indicates that the type of source must be a subtype of the user-given type user_ty; this is basically a no-op but can influence region inference.
Binding 🔒
Candidate 🔒
MatchPair 🔒
Test 🔒
A test to perform to determine which Candidate matches a value.

Enums

TestKind 🔒
See Test for more.

Functions

A depth-first traversal of the Candidate and all of its recursive subcandidates.