-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Create fewer GenericSignatureBuilders, part 2 #19601
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
Conversation
@swift-ci Please test |
@swift-ci Please test source compatibility |
Build failed |
Build failed |
…parameter type and not an archetype There's no need to instantiate archetypes in the generic environment of the declaration being opened. A couple of diagnostics changed. They were already misleading, and the new diagnostics, while different, are not any more misleading than before.
In one test where we used to dump conditional requirements we now print a message that they have not been computed yet. I couldn't come up with a way to force them to be computed here, but for the most part this test is just ensuring that we don't recurse forever when printing recursive conformances.
This replaces the inefficient pattern: for (auto param : sig->getGenericParams()) { if (sig->isCanonicalTypeInContext(param)) { ... } else { ... } }
Generic environments and archetypes can be expensive to deserialize if they involve a generic signature not seen before. Also, canonicalize the witness substitutions to eliminate type aliases, and map them to interface types, which again are cheaper to deserialize.
bd27b74
to
3b203a5
Compare
@swift-ci Please test |
@swift-ci Please test source compatibility |
Build failed |
Build failed |
@swift-ci Please test compiler performance |
1 similar comment
@swift-ci Please test compiler performance |
No description provided.