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 {
123
123
if currentTokenPrecedence >= recoveryPrecedence {
124
124
break
125
125
}
126
- self . consumeAnyToken ( )
127
126
if let closingDelimiter = currentTokenPrecedence. closingTokenKind {
128
127
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 ( )
129
143
guard self . canRecoverTo ( closingDelimiterSpec) != nil else {
130
144
continue
131
145
}
132
146
self . eat ( closingDelimiterSpec)
147
+ } else {
148
+ self . consumeAnyToken ( )
133
149
}
134
150
}
135
151
Original file line number Diff line number Diff line change @@ -1935,19 +1935,12 @@ final class RecoveryTests: ParserTestCase {
1935
1935
assertParse (
1936
1936
"""
1937
1937
struct ErrorInFunctionSignatureResultArrayType11 {
1938
- func foo() -> Int1️⃣[(a){a++}2️⃣ ] {
1938
+ func foo() -> Int1️⃣[(a){a++}] {
1939
1939
}
1940
1940
}
1941
1941
""" ,
1942
1942
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 " )
1951
1944
]
1952
1945
)
1953
1946
}
You can’t perform that action at this time.
0 commit comments