Skip to content

Commit 4679895

Browse files
authored
Merge pull request #1898 from rintaro/5.9-parse-each-self-rdar107450487
[5.9][Parser] Accept 'self' after 'each'
2 parents 67c5007 + 52cfbaf commit 4679895

File tree

7 files changed

+372
-351
lines changed

7 files changed

+372
-351
lines changed

Sources/SwiftParser/Attributes.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -392,23 +392,23 @@ extension Parser {
392392

393393
enum DifferentiabilityKind: TokenSpecSet {
394394
case reverse
395-
case linear
396-
case forward
395+
case _linear
396+
case _forward
397397

398398
init?(lexeme: Lexer.Lexeme) {
399399
switch PrepareForKeywordMatch(lexeme) {
400400
case TokenSpec(.reverse): self = .reverse
401-
case TokenSpec(._linear): self = .linear
402-
case TokenSpec(._forward): self = .forward
401+
case TokenSpec(._linear): self = ._linear
402+
case TokenSpec(._forward): self = ._forward
403403
default: return nil
404404
}
405405
}
406406

407407
var spec: TokenSpec {
408408
switch self {
409409
case .reverse: return .keyword(.reverse)
410-
case .linear: return .keyword(._linear)
411-
case .forward: return .keyword(._forward)
410+
case ._linear: return .keyword(._linear)
411+
case ._forward: return .keyword(._forward)
412412
}
413413
}
414414
}
@@ -504,13 +504,13 @@ extension Parser {
504504
enum ExpectedTokenKind: TokenSpecSet {
505505
case identifier
506506
case integerLiteral
507-
case selfKeyword
507+
case `self`
508508

509509
init?(lexeme: Lexer.Lexeme) {
510510
switch PrepareForKeywordMatch(lexeme) {
511511
case TokenSpec(.identifier): self = .identifier
512512
case TokenSpec(.integerLiteral): self = .integerLiteral
513-
case TokenSpec(.self): self = .selfKeyword
513+
case TokenSpec(.self): self = .self
514514
default: return nil
515515
}
516516
}
@@ -519,7 +519,7 @@ extension Parser {
519519
switch self {
520520
case .identifier: return .identifier
521521
case .integerLiteral: return .integerLiteral
522-
case .selfKeyword: return .keyword(.self)
522+
case .self: return .keyword(.self)
523523
}
524524
}
525525
}
@@ -541,7 +541,7 @@ extension Parser {
541541
trailingComma: comma,
542542
arena: self.arena
543543
)
544-
case (.selfKeyword, let handle)?:
544+
case (.self, let handle)?:
545545
let token = self.eat(handle)
546546
let comma = self.consume(if: .comma)
547547
return RawDifferentiabilityParamSyntax(

Sources/SwiftParser/Declarations.swift

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ extension TokenConsumer {
100100
declStartKeyword = subparser.at(anyIn: DeclarationStart.self)?.0
101101
}
102102
switch declStartKeyword {
103-
case .actorKeyword:
103+
case .actor:
104104
// actor Foo {}
105105
if subparser.peek().rawTokenKind == .identifier {
106106
return true
@@ -113,13 +113,13 @@ extension TokenConsumer {
113113
lookahead.consumeAnyToken()
114114
} while lookahead.atStartOfDeclaration(isAtTopLevel: isAtTopLevel, allowInitDecl: allowInitDecl)
115115
return lookahead.at(.identifier)
116-
case .caseKeyword:
116+
case .case:
117117
// When 'case' appears inside a function, it's probably a switch
118118
// case, not an enum case declaration.
119119
return false
120-
case .initKeyword:
120+
case .`init`:
121121
return allowInitDecl
122-
case .macroKeyword:
122+
case .macro:
123123
// macro Foo ...
124124
return subparser.peek().rawTokenKind == .identifier
125125
case .pound:
@@ -234,42 +234,42 @@ extension Parser {
234234
let recoveryPrecedence = inMemberDeclList ? TokenPrecedence.closingBrace : nil
235235

236236
switch self.canRecoverTo(anyIn: DeclarationStart.self, overrideRecoveryPrecedence: recoveryPrecedence) {
237-
case (.importKeyword, let handle)?:
237+
case (.import, let handle)?:
238238
return RawDeclSyntax(self.parseImportDeclaration(attrs, handle))
239-
case (.classKeyword, let handle)?:
239+
case (.class, let handle)?:
240240
return RawDeclSyntax(self.parseNominalTypeDeclaration(for: RawClassDeclSyntax.self, attrs: attrs, introucerHandle: handle))
241-
case (.enumKeyword, let handle)?:
241+
case (.enum, let handle)?:
242242
return RawDeclSyntax(self.parseNominalTypeDeclaration(for: RawEnumDeclSyntax.self, attrs: attrs, introucerHandle: handle))
243-
case (.caseKeyword, let handle)?:
243+
case (.case, let handle)?:
244244
return RawDeclSyntax(self.parseEnumCaseDeclaration(attrs, handle))
245-
case (.structKeyword, let handle)?:
245+
case (.struct, let handle)?:
246246
return RawDeclSyntax(self.parseNominalTypeDeclaration(for: RawStructDeclSyntax.self, attrs: attrs, introucerHandle: handle))
247-
case (.protocolKeyword, let handle)?:
247+
case (.protocol, let handle)?:
248248
return RawDeclSyntax(self.parseNominalTypeDeclaration(for: RawProtocolDeclSyntax.self, attrs: attrs, introucerHandle: handle))
249-
case (.associatedtypeKeyword, let handle)?:
249+
case (.associatedtype, let handle)?:
250250
return RawDeclSyntax(self.parseAssociatedTypeDeclaration(attrs, handle))
251-
case (.typealiasKeyword, let handle)?:
251+
case (.typealias, let handle)?:
252252
return RawDeclSyntax(self.parseTypealiasDeclaration(attrs, handle))
253-
case (.extensionKeyword, let handle)?:
253+
case (.extension, let handle)?:
254254
return RawDeclSyntax(self.parseExtensionDeclaration(attrs, handle))
255-
case (.funcKeyword, let handle)?:
255+
case (.func, let handle)?:
256256
return RawDeclSyntax(self.parseFuncDeclaration(attrs, handle))
257-
case (.subscriptKeyword, let handle)?:
257+
case (.subscript, let handle)?:
258258
return RawDeclSyntax(self.parseSubscriptDeclaration(attrs, handle))
259-
case (.letKeyword, let handle)?, (.varKeyword, let handle)?,
260-
(.inoutKeyword, let handle)?:
259+
case (.let, let handle)?, (.var, let handle)?,
260+
(.inout, let handle)?:
261261
return RawDeclSyntax(self.parseBindingDeclaration(attrs, handle, inMemberDeclList: inMemberDeclList))
262-
case (.initKeyword, let handle)?:
262+
case (.`init`, let handle)?:
263263
return RawDeclSyntax(self.parseInitializerDeclaration(attrs, handle))
264-
case (.deinitKeyword, let handle)?:
264+
case (.deinit, let handle)?:
265265
return RawDeclSyntax(self.parseDeinitializerDeclaration(attrs, handle))
266-
case (.operatorKeyword, let handle)?:
266+
case (.operator, let handle)?:
267267
return RawDeclSyntax(self.parseOperatorDeclaration(attrs, handle))
268-
case (.precedencegroupKeyword, let handle)?:
268+
case (.precedencegroup, let handle)?:
269269
return RawDeclSyntax(self.parsePrecedenceGroupDeclaration(attrs, handle))
270-
case (.actorKeyword, let handle)?:
270+
case (.actor, let handle)?:
271271
return RawDeclSyntax(self.parseNominalTypeDeclaration(for: RawActorDeclSyntax.self, attrs: attrs, introucerHandle: handle))
272-
case (.macroKeyword, let handle)?:
272+
case (.macro, let handle)?:
273273
return RawDeclSyntax(self.parseMacroDeclaration(attrs: attrs, introducerHandle: handle))
274274
case (.pound, let handle)?:
275275
return RawDeclSyntax(self.parseMacroExpansionDeclaration(attrs, handle))
@@ -581,50 +581,50 @@ extension Parser {
581581
}
582582

583583
enum LayoutConstraint: TokenSpecSet {
584-
case trivialLayout
585-
case trivialAtMostLayout
586-
case unknownLayout
587-
case refCountedObjectLayout
588-
case nativeRefCountedObjectLayout
589-
case classLayout
590-
case nativeClassLayout
584+
case _Trivial
585+
case _TrivialAtMost
586+
case _UnknownLayout
587+
case _RefCountedObjectLayout
588+
case _NativeRefCountedObjectLayout
589+
case _Class
590+
case _NativeClass
591591

592592
init?(lexeme: Lexer.Lexeme) {
593593
switch PrepareForKeywordMatch(lexeme) {
594-
case TokenSpec(._Trivial): self = .trivialLayout
595-
case TokenSpec(._TrivialAtMost): self = .trivialAtMostLayout
596-
case TokenSpec(._UnknownLayout): self = .unknownLayout
597-
case TokenSpec(._RefCountedObject): self = .refCountedObjectLayout
598-
case TokenSpec(._NativeRefCountedObject): self = .nativeRefCountedObjectLayout
599-
case TokenSpec(._Class): self = .classLayout
600-
case TokenSpec(._NativeClass): self = .nativeClassLayout
594+
case TokenSpec(._Trivial): self = ._Trivial
595+
case TokenSpec(._TrivialAtMost): self = ._TrivialAtMost
596+
case TokenSpec(._UnknownLayout): self = ._UnknownLayout
597+
case TokenSpec(._RefCountedObject): self = ._RefCountedObjectLayout
598+
case TokenSpec(._NativeRefCountedObject): self = ._NativeRefCountedObjectLayout
599+
case TokenSpec(._Class): self = ._Class
600+
case TokenSpec(._NativeClass): self = ._NativeClass
601601
default: return nil
602602
}
603603
}
604604

605605
var spec: TokenSpec {
606606
switch self {
607-
case .trivialLayout: return .keyword(._Trivial)
608-
case .trivialAtMostLayout: return .keyword(._TrivialAtMost)
609-
case .unknownLayout: return .keyword(._UnknownLayout)
610-
case .refCountedObjectLayout: return .keyword(._RefCountedObject)
611-
case .nativeRefCountedObjectLayout: return .keyword(._NativeRefCountedObject)
612-
case .classLayout: return .keyword(._Class)
613-
case .nativeClassLayout: return .keyword(._NativeClass)
607+
case ._Trivial: return .keyword(._Trivial)
608+
case ._TrivialAtMost: return .keyword(._TrivialAtMost)
609+
case ._UnknownLayout: return .keyword(._UnknownLayout)
610+
case ._RefCountedObjectLayout: return .keyword(._RefCountedObject)
611+
case ._NativeRefCountedObjectLayout: return .keyword(._NativeRefCountedObject)
612+
case ._Class: return .keyword(._Class)
613+
case ._NativeClass: return .keyword(._NativeClass)
614614
}
615615
}
616616

617617
var hasArguments: Bool {
618618
switch self {
619-
case .trivialLayout,
620-
.trivialAtMostLayout:
619+
case ._Trivial,
620+
._TrivialAtMost:
621621
return true
622622

623-
case .unknownLayout,
624-
.refCountedObjectLayout,
625-
.nativeRefCountedObjectLayout,
626-
.classLayout,
627-
.nativeClassLayout:
623+
case ._UnknownLayout,
624+
._RefCountedObjectLayout,
625+
._NativeRefCountedObjectLayout,
626+
._Class,
627+
._NativeClass:
628628
return false
629629
}
630630
}
@@ -702,7 +702,7 @@ extension Parser {
702702
let rightParen: RawTokenSyntax?
703703
// Unlike the other layout constraints, _Trivial's argument list
704704
// is optional.
705-
if layoutConstraint.hasArguments && (layoutConstraint != .trivialLayout || self.at(.leftParen)) {
705+
if layoutConstraint.hasArguments && (layoutConstraint != ._Trivial || self.at(.leftParen)) {
706706
(unexpectedBeforeLeftParen, leftParen) = self.expect(.leftParen)
707707
size = self.expectWithoutRecovery(.integerLiteral)
708708
comma = self.consume(if: .comma)

0 commit comments

Comments
 (0)