Skip to content

Commit a7e833e

Browse files
authored
Merge pull request #2079 from gottesmm/pr-400082eaa63991e6cdae229be5e30e6b83c38363
[reference-bindings] Small fixups as requested from @ahoppen's review.
2 parents b2eefce + 8695927 commit a7e833e

File tree

2 files changed

+14
-49
lines changed

2 files changed

+14
-49
lines changed

Sources/SwiftParser/Declarations.swift

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ extension Parser {
210210
// while recovering to the declaration start.
211211
let recoveryPrecedence = inMemberDeclList ? TokenPrecedence.closingBrace : nil
212212

213-
CanRecoverToSwitch: switch self.canRecoverTo(anyIn: DeclarationKeyword.self, overrideRecoveryPrecedence: recoveryPrecedence) {
213+
switch self.canRecoverTo(anyIn: DeclarationKeyword.self, overrideRecoveryPrecedence: recoveryPrecedence) {
214214
case (.lhs(.import), let handle)?:
215215
return RawDeclSyntax(self.parseImportDeclaration(attrs, handle))
216216
case (.lhs(.class), let handle)?:
@@ -249,21 +249,12 @@ extension Parser {
249249
return RawDeclSyntax(self.parseMacroExpansionDeclaration(attrs, handle))
250250
case (.rhs(let binding), let handle)?:
251251
switch binding {
252-
case ._mutating:
253-
fallthrough
254-
case ._borrowing:
255-
fallthrough
256-
case ._consuming:
252+
case ._mutating, ._borrowing, ._consuming:
257253
guard experimentalFeatures.contains(.referenceBindings) else {
258-
break CanRecoverToSwitch
254+
break
259255
}
260256
fallthrough
261-
case .let:
262-
fallthrough
263-
case .var:
264-
fallthrough
265-
case .inout:
266-
// Handle all cases of `ValueBindingPatternSyntax.BindingSpecifierOptions` in the same way.
257+
case .let, .var, .inout:
267258
return RawDeclSyntax(self.parseBindingDeclaration(attrs, handle, inMemberDeclList: inMemberDeclList))
268259
}
269260
case nil:

Sources/SwiftParser/Patterns.swift

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -88,21 +88,12 @@ extension Parser {
8888
)
8989
case (.rhs(let binding), let handle)?:
9090
switch binding {
91-
case ._mutating:
92-
fallthrough
93-
case ._borrowing:
94-
fallthrough
95-
case ._consuming:
91+
case ._mutating, ._borrowing, ._consuming:
9692
guard experimentalFeatures.contains(.referenceBindings) else {
9793
break
9894
}
9995
fallthrough
100-
case .let:
101-
fallthrough
102-
case .var:
103-
fallthrough
104-
case .inout:
105-
// Handle all cases of `ValueBindingPatternSyntax.BindingSpecifierOptions` in the same way.
96+
case .let, .var, .inout:
10697
let bindingSpecifier = self.eat(handle)
10798
let value = self.parsePattern()
10899
return RawPatternSyntax(
@@ -225,7 +216,7 @@ extension Parser {
225216
/// for-in loops and guard clauses.
226217
mutating func parseMatchingPattern(context: PatternContext) -> RawPatternSyntax {
227218
// Parse productions that can only be patterns.
228-
OuterSwitch: switch self.at(anyIn: MatchingPatternStart.self) {
219+
switch self.at(anyIn: MatchingPatternStart.self) {
229220
case (.lhs(.is), let handle)?:
230221
let isKeyword = self.eat(handle)
231222
let type = self.parseType()
@@ -238,21 +229,12 @@ extension Parser {
238229
)
239230
case (.rhs(let binding), let handle)?:
240231
switch binding {
241-
case ._mutating:
242-
fallthrough
243-
case ._borrowing:
244-
fallthrough
245-
case ._consuming:
232+
case ._mutating, ._borrowing, ._consuming:
246233
guard experimentalFeatures.contains(.referenceBindings) else {
247-
break OuterSwitch
234+
break
248235
}
249236
fallthrough
250-
case .let:
251-
fallthrough
252-
case .var:
253-
fallthrough
254-
case .inout:
255-
// Handle all cases of `ValueBindingPatternSyntax.BindingSpecifierOptions` in the same way.
237+
case .let, .var, .inout:
256238
let bindingSpecifier = self.eat(handle)
257239
let value = self.parseMatchingPattern(context: .bindingIntroducer)
258240
return RawPatternSyntax(
@@ -327,27 +309,19 @@ extension Parser.Lookahead {
327309
(.lhs(.wildcard), let handle)?:
328310
self.eat(handle)
329311
return true
312+
case (.lhs(.leftParen), _)?:
313+
return self.canParsePatternTuple()
330314
case (.rhs(let binding), let handle)?:
331315
switch binding {
332-
case ._mutating:
333-
fallthrough
334-
case ._borrowing:
335-
fallthrough
336-
case ._consuming:
316+
case ._mutating, ._borrowing, ._consuming:
337317
guard experimentalFeatures.contains(.referenceBindings) else {
338318
return false
339319
}
340320
fallthrough
341-
case .let:
342-
fallthrough
343-
case .var:
344-
fallthrough
345-
case .inout:
321+
case .let, .var, .inout:
346322
self.eat(handle)
347323
return self.canParsePattern()
348324
}
349-
case (.lhs(.leftParen), _)?:
350-
return self.canParsePatternTuple()
351325
case nil:
352326
return false
353327
}

0 commit comments

Comments
 (0)