summaryrefslogtreecommitdiff
path: root/Notes/Inferrence-ConstraintsAndRules.md
diff options
context:
space:
mode:
Diffstat (limited to 'Notes/Inferrence-ConstraintsAndRules.md')
-rw-r--r--Notes/Inferrence-ConstraintsAndRules.md22
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