[RFC007] Cleanup post "typechecker migration, part I" #2129
+791
−750
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a clean-up following #2121.
This PR cleans the typechecker code by gathering functions that are implemented by several Rust types as traits, instead of having a lot of free-standing variations
walk_foo
,walk_bar
, etc. This also allows for some code deduplication for example when walking an array of walkable element, that can be factored out.infer
is a bit of an exception since it relies oncheck
and is only implemented on one type. Still, in the sake of consistency,infer
gets its trait as well (including for calling convention - it would be a bit odd to callvalue.check(..)
butinfer(.., value, ..)
).