-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Simplify lazy member parsing #26955
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
DougGregor
merged 4 commits into
swiftlang:master
from
DougGregor:simplify-lazy-member-parsing
Aug 30, 2019
Merged
Simplify lazy member parsing #26955
DougGregor
merged 4 commits into
swiftlang:master
from
DougGregor:simplify-lazy-member-parsing
Aug 30, 2019
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
…" state. The `DelayedDeclKind` structure that's allocated for each case where we delay parsing the members of a nominal type definition or extension contains information that is already available on the `IterableDeclContext` (or can be reconstructed trivially from it). Use that AST information rather than this side structure.
Lazy parsing for the members of nominal types and extensions depends only on information already present in `IterableDeclContext`. Eliminate the use of PersistentParserState as an intermediary and have the member-parsing request construct a new `Parser` instance itself to handle parsing. Make this possible even for ill-formed nominal types/extensions to simplify the code path. Eliminate `LazyMemberParser` and all of its uses, because it was only present for lazy member parsing, which no longer needs it.
@swift-ci please smoke test |
@swift-ci please test source compatibility |
This is to avoid having to sychronize PRs across LLDB and Swift.
@swift-ci please smoke test |
@swift-ci please test source compatibility |
There's no reason not to do delayed member parsing for SIL files.
@swift-ci please smoke test |
@swift-ci please test source compatibility |
nkcsgexi
approved these changes
Aug 30, 2019
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.
LGTM, Thank you for making type member delayed parsing less stateful!
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.
Lazy parsing for the members of nominal types and extensions depends
only on information already present in
IterableDeclContext
. Eliminate the use of PersistentParserState asan intermediary and have the member-parsing request construct a new
Parser
instance itself to handle parsing. Make this possible evenfor ill-formed nominal types/extensions to simplify the code path.
Eliminate
LazyMemberParser
and all of its uses, because it was onlypresent for lazy member parsing, which no longer needs it.