-
Notifications
You must be signed in to change notification settings - Fork 5.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement hierarchical trait map and namespace lookups. #6516
base: master
Are you sure you want to change the base?
Conversation
dc00260
to
60db3a9
Compare
60db3a9
to
486df45
Compare
CodSpeed Performance ReportMerging #6516 will not alter performanceComparing Summary
|
self.get_items_for_type(engines, type_id) | ||
.into_iter() | ||
.filter_map(|item| match item { | ||
ResolvedTraitImplItem::Parsed(_) => todo!(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: I see that this was just moved from another file, but I think we should replace the todo!
with something else, like None
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: I see that this was just moved from another file, but I think we should replace the
todo!
with something else, likeNone
I don't think it should return None
in this case because that would be a silent failure to the dev. I think maybe an unreachable
here probably makes the most sense, and this code is not really designed to be called for parsed declarations.
Description
This PR implements a hierarchical-based trait map and namespace lookup system while type checking.
Previously we added the concept of lexical concepts, which store all the names in a tree-based hierarchy.
But currently we still rely on a single "global" namespace, which is maintained by the type check context as we go down the tree. Thus, so far, all trait and namespace lookup have relied on looking up in that single namespace.
The main idea here is to be able to just rely on the names existing in the lexical scopes, and walk up those lexical scope chains as we need to lookup any name or trait.
The logic is split into these two commits:
Implement hierarchical trait map lookups.
Implement hierarchical namespace lookups.
This PR still does not remove that cloning, which will be done in a separate future PR.
Checklist
Breaking*
orNew Feature
labels where relevant.