diff --git a/Sources/SwiftParser/Declarations.swift b/Sources/SwiftParser/Declarations.swift index b403ac8b80c..f063648b8f5 100644 --- a/Sources/SwiftParser/Declarations.swift +++ b/Sources/SwiftParser/Declarations.swift @@ -1354,7 +1354,8 @@ extension Parser { } let accessors: RawAccessorBlockSyntax? - if self.at(.leftBrace) + if (self.at(.leftBrace) + && (!self.currentToken.isAtStartOfLine || self.withLookahead({ $0.atStartOfGetSetAccessor() }))) || (inMemberDeclList && self.at(anyIn: AccessorDeclSyntax.AccessorSpecifierOptions.self) != nil && !self.at(.keyword(.`init`))) { diff --git a/Tests/SwiftParserTest/ExpressionTests.swift b/Tests/SwiftParserTest/ExpressionTests.swift index f5b2f9e0454..babcbffb250 100644 --- a/Tests/SwiftParserTest/ExpressionTests.swift +++ b/Tests/SwiftParserTest/ExpressionTests.swift @@ -58,6 +58,18 @@ final class ExpressionTests: ParserTestCase { } """ ) + + assertParse( + """ + func f(x:[Void]) + { + var y:[[Void]] = x.map { [$0] } + { + $0.reserveCapacity(1) + } (&y[0]) + } + """ + ) } func testTrailingClosures() {