File tree Expand file tree Collapse file tree 2 files changed +19
-10
lines changed
Tests/SwiftParserTest/translated Expand file tree Collapse file tree 2 files changed +19
-10
lines changed Original file line number Diff line number Diff line change @@ -123,13 +123,29 @@ extension Parser.Lookahead {
123123 if currentTokenPrecedence >= recoveryPrecedence {
124124 break
125125 }
126- self . consumeAnyToken ( )
127126 if let closingDelimiter = currentTokenPrecedence. closingTokenKind {
128127 let closingDelimiterSpec = TokenSpec ( closingDelimiter)
128+ let canSkipSingleAtSameLine = self . withLookahead { lookahead in
129+ while !lookahead. at ( . endOfFile) , !lookahead. currentToken. isAtStartOfLine {
130+ if lookahead. at ( closingDelimiterSpec) {
131+ return true
132+ } else {
133+ lookahead. consumeAnyToken ( )
134+ }
135+ }
136+ return false
137+ }
138+ if canSkipSingleAtSameLine {
139+ skipSingle ( )
140+ continue
141+ }
142+ self . consumeAnyToken ( )
129143 guard self . canRecoverTo ( closingDelimiterSpec) != nil else {
130144 continue
131145 }
132146 self . eat ( closingDelimiterSpec)
147+ } else {
148+ self . consumeAnyToken ( )
133149 }
134150 }
135151
Original file line number Diff line number Diff line change @@ -1935,19 +1935,12 @@ final class RecoveryTests: ParserTestCase {
19351935 assertParse (
19361936 """
19371937 struct ErrorInFunctionSignatureResultArrayType11 {
1938- func foo() -> Int1️⃣[(a){a++}2️⃣ ] {
1938+ func foo() -> Int1️⃣[(a){a++}] {
19391939 }
19401940 }
19411941 """ ,
19421942 diagnostics: [
1943- DiagnosticSpec (
1944- locationMarker: " 1️⃣ " ,
1945- message: " unexpected code '[(a)' in function "
1946- ) ,
1947- DiagnosticSpec (
1948- locationMarker: " 2️⃣ " ,
1949- message: " unexpected code in struct "
1950- )
1943+ DiagnosticSpec ( message: " unexpected code '[(a){a++}]' in function " )
19511944 ]
19521945 )
19531946 }
You can’t perform that action at this time.
0 commit comments