-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Labels
area - type checkerRelated to the type checkerRelated to the type checkerkind - code qualityImprove the code or the build, with no functionality changeImprove the code or the build, with no functionality changekind - robustnessMake the program less buggy, or more failure tolerantMake the program less buggy, or more failure tolerant
Description
As discussed on #324, there are a lot of legacy issues in the typechecker that make it buggy and more complex than it needs to be. Here are some ideas that popped up after reading through the most important functions
- remove typefunc unification variables (Remove typefunc vars #324)
- expose a better typevar constraint API, replacing the
new_dummy_*family (Type constraint api #329) - check typevar constraints when unifying a concrete type -- right now
satisfies()just returns true - expose better, shorter-named APIs for creating types (Remove typefunc vars #324, Use VarId where appropriate #325, Jan 1st refactor #327)
- use
VarIdinstead ofMonoIdinPolyDataandgather_free_vars(Use VarId where appropriate #325) - simplify ct_eval ... somehow (Remove typefunc vars #324, Dont rewrite nodes in ct_eval #328, Jan 8 refactor #330)
- remove debug data from typechecker nodes (Jan 1st refactor #327)
- don't do AST rewriting in the typechecker -- specifically in
ct_eval(Dont rewrite nodes in ct_eval #328)
Metadata
Metadata
Assignees
Labels
area - type checkerRelated to the type checkerRelated to the type checkerkind - code qualityImprove the code or the build, with no functionality changeImprove the code or the build, with no functionality changekind - robustnessMake the program less buggy, or more failure tolerantMake the program less buggy, or more failure tolerant