diff options
Diffstat (limited to 'Notes/Inferrence-ConstraintsAndRules.md')
-rw-r--r-- | Notes/Inferrence-ConstraintsAndRules.md | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/Notes/Inferrence-ConstraintsAndRules.md b/Notes/Inferrence-ConstraintsAndRules.md index e8398892..58aac54d 100644 --- a/Notes/Inferrence-ConstraintsAndRules.md +++ b/Notes/Inferrence-ConstraintsAndRules.md @@ -24,16 +24,18 @@ - Pointer to node for coercion ## Actions taken -- Destructuring and re-structurings are applied directly - - E.g. New tuples/arrays, destructuring patterns, ... -- Equalities are applied until none are left - - NOTE: Dead ivars (ones that have been aliased) should be omitted from listings -- Apply coercions that are known to not coerce - - E.g. `str` cannot coerce to anything -- Apply coercions that are known -- Check associated type projections - - Apply single-trait rule (If there's only one trait that could apply, use it) -- Keep going until out or rules or ambiguity is hit +- Build up ruleset from HIR + - Destructuring and re-structurings are applied directly + - E.g. New tuples/arrays, destructuring patterns, ... + - Direct equalities unify ivars + - NOTE: Dead ivars (ones that have been aliased) should be omitted from listings +- Iterate rulesets + - Apply coercions that are known to not coerce + - E.g. `str` cannot coerce to anything + - Check associated type projections + - Apply single-trait rule (If there's only one trait that could apply, use it) + - Run "revisit" nodes + - Keep going until out or rules or ambiguity is hit <!-- vim: ft=markdown |