[ASTPrinter/Parse] Disambiguate accessor block in .swiftinterface #84972
+60
−3
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.
.swiftinterface sometimes prints a pattern binding initializer and the accessor block. However the parser doesn't expect such constructs and the disambiguation from trailing closures would be fragile. To make it reliable, introduce a disambiguation marker
@_accessorBlock
.ASTPrinter
print it right after{
only if 1) The accrssor block is for a pattern binding declration, 2) the decl has an initializer printed, and 3) the non-observer accessor block is being printed. In the parser, If the block after an initializer starts with{ @_accessorBlock
it's always parsed as an accessor block instead of a trailing closure.rdar://140943107