-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Refactor conformance checker diagnostics #71041
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
Merged
slavapestov
merged 13 commits into
swiftlang:main
from
slavapestov:refactor-conformance-checker-diagnostics
Jan 21, 2024
Merged
Refactor conformance checker diagnostics #71041
slavapestov
merged 13 commits into
swiftlang:main
from
slavapestov:refactor-conformance-checker-diagnostics
Jan 21, 2024
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…ntsAreSatisfied()
@swift-ci Please test source compatibility |
f2a7222
to
76d9805
Compare
76d9805
to
0bc2e3f
Compare
@swift-ci Please smoke test |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 PR moves delayed diagnostics state entirely out of ConformanceChecker. The goal is to decouple type witness inference from ConformanceChecker, leaving it in charge of value witness inference only. This will in turn lead to better request evaluator usage in type witness inference.
This also fixes a case where we accepted invalid AST because a protocol conformance check failed in a secondary source file. We now emit a fallback diagnostic
type T does not conform to protocol P
in this case. The source location is chosen to be that of the innermost active request that refers to a primary file; if no active requests have such a location, we use the location of the conformance instead.With a few more cleanups this will allow removing the older
reference to invalid associated type
fallback diagnostic, which is inaccurate because it misses cases where the invalid type witness ends up in a substitution map, or if the type witness is valid but does not satisfy an associated conformance requirement.