-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Delete ReferencedNameTracker #31960
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
Delete ReferencedNameTracker #31960
Conversation
Have to find a way to hide these implementation details from clients if possible...
We'll be able to delete this once we cut over to private dependencies
…ctor This completely obviates the need for the referenced name trackers rdar://59076016
This abstraction turns out to have hidden dependencies from the dependency verifier. Invert the dependency here and have it use the new enumerators in the DependencyRecorder instead.
@swift-ci test |
@swift-ci test compiler performance |
Build failed |
@swift-ci clean test macOS |
Compilation-performance test failed |
Not sure if this works @swift-ci clean test compiler performance |
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.
Didn't burrow down into the details, but it looks fine to me.
The
DependencyRecorder
has grown a mapping from primaries to sets ofReference
s they consume. This removes the last reason we had for keeping theReferencedNameTracker
abstraction around.While we're here, put the
UsedDeclEnumerator
back in its place - it turns out to have hidden information from the dependency verifier and reported incorrect cascading information. On top of that, we no longer have to go through the mangle->demangle->copy dance when producing keys in the dependency verifier. Instead, just use the ASTPrinter to print out the fully-qualified declared interface type of each subject. This explains e.g. the change from__C
toObjectiveC
.Once we cut over to private dependencies, we can delete everything with the word "cascading" in it - and also get the dependency graph out of the business of using access control levels to add implementation/interface edges which we know to be incorrect.