[5.3][Parser/libSyntax] Avoid doing lookup for a previous parsed node when we are in backtracking mode #31718
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.
Cherry-pick of #31685 for 5.3.
Explanation: Fixes a crash during SwiftSyntax incremental re-parsing that was found by the stress tester. The incremental parse was re-using previously parsed nodes while the parser was backtracking for property body parsing, which was violating some invariants of the libSyntax parsing mechanism. The change fixes this and also reduces parser backtracking until the accessor introducer, and not for the whole property body.
Scope of issue: Primarily affects SwiftSyntax usage with a minor and safe change to how property bodies are parsed.
Origination: Unclear. I suspect this has been an issue for a while.
Risk: Low. Changes are scoped to SwiftSyntax and to the parsing of property bodies.
Testing: Added regression tests.
Reviewer: Rintaro Ishizaki (@rintaro)
Resolves rdar://57679731