Skip to content

Commit 5155461

Browse files
authored
Merge pull request #1579 from ahoppen/ahoppen/no-arbitrary-keywords
Remove all token children that allowed arbitrary keywords
2 parents 88baad6 + faadf2e commit 5155461

File tree

7 files changed

+28
-17
lines changed

7 files changed

+28
-17
lines changed

CodeGeneration/Sources/SyntaxSupport/AttributeNodes.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ public let ATTRIBUTE_NODES: [Node] = [
388388
children: [
389389
Child(
390390
name: "Parameter",
391-
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .token(tokenKind: "IntegerLiteralToken"), .token(tokenKind: "KeywordToken")])
391+
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .token(tokenKind: "IntegerLiteralToken"), .keyword(text: "self")])
392392
),
393393
Child(
394394
name: "TrailingComma",
@@ -518,7 +518,7 @@ public let ATTRIBUTE_NODES: [Node] = [
518518
kind: .nodeChoices(choices: [
519519
Child(
520520
name: "Token",
521-
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .token(tokenKind: "KeywordToken")])
521+
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .keyword(text: "private"), .keyword(text: "fileprivate"), .keyword(text: "internal"), .keyword(text: "public"), .keyword(text: "open")])
522522
), // Keywords can be: public, internal, private, fileprivate, open
523523
Child(
524524
name: "String",

CodeGeneration/Sources/SyntaxSupport/ExprNodes.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -781,7 +781,7 @@ public let EXPR_NODES: [Node] = [
781781
children: [
782782
Child(
783783
name: "Identifier",
784-
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .token(tokenKind: "KeywordToken"), .token(tokenKind: "DollarIdentifierToken"), .token(tokenKind: "BinaryOperatorToken")])
784+
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .keyword(text: "self"), .keyword(text: "Self"), .keyword(text: "init"), .token(tokenKind: "DollarIdentifierToken"), .token(tokenKind: "BinaryOperatorToken")])
785785
),
786786
Child(
787787
name: "DeclNameArguments",
@@ -1005,7 +1005,7 @@ public let EXPR_NODES: [Node] = [
10051005
children: [
10061006
Child(
10071007
name: "Identifier",
1008-
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .token(tokenKind: "KeywordToken"), .token(tokenKind: "DollarIdentifierToken"), .token(tokenKind: "BinaryOperatorToken"), .token(tokenKind: "IntegerLiteralToken")])
1008+
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .keyword(text: "self"), .keyword(text: "Self"), .keyword(text: "init"), .token(tokenKind: "DollarIdentifierToken"), .token(tokenKind: "BinaryOperatorToken"), .token(tokenKind: "IntegerLiteralToken")])
10091009
),
10101010
Child(
10111011
name: "DeclNameArguments",

CodeGeneration/Sources/SyntaxSupport/PatternNodes.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public let PATTERN_NODES: [Node] = [
3131
children: [
3232
Child(
3333
name: "Identifier",
34-
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .token(tokenKind: "KeywordToken")])
34+
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .keyword(text: "self"), .keyword(text: "init")])
3535
)
3636
]
3737
),

CodeGeneration/Sources/SyntaxSupport/Traits.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ public let TRAITS: [Trait] = [
4848
traitName: "EffectSpecifiers",
4949
children: [
5050
Child(name: "UnexpectedBeforeAsyncSpecifier", kind: .node(kind: "UnexpectedNodes"), isOptional: true),
51-
Child(name: "AsyncSpecifier", kind: .token(choices: [.token(tokenKind: "KeywordToken")]), isOptional: true),
51+
Child(name: "AsyncSpecifier", kind: .token(choices: [.keyword(text: "async"), .keyword(text: "reasync")]), isOptional: true),
5252
Child(name: "UnexpectedBetweenAsyncSpecifierAndThrowsSpecifier", kind: .node(kind: "UnexpectedNodes"), isOptional: true),
53-
Child(name: "ThrowsSpecifier", kind: .token(choices: [.token(tokenKind: "KeywordToken")]), isOptional: true),
53+
Child(name: "ThrowsSpecifier", kind: .token(choices: [.keyword(text: "throws"), .keyword(text: "rethrows")]), isOptional: true),
5454
Child(name: "UnexpectedAfterThrowsSpecifier", kind: .node(kind: "UnexpectedNodes"), isOptional: true),
5555
]
5656
),

CodeGeneration/Sources/SyntaxSupport/TypeNodes.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ public let TYPE_NODES: [Node] = [
281281
),
282282
Child(
283283
name: "Name",
284-
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .token(tokenKind: "KeywordToken")]),
284+
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .keyword(text: "self"), .keyword(text: "Self")]),
285285
nameForDiagnostics: "name",
286286
classification: "TypeIdentifier"
287287
),
@@ -391,7 +391,7 @@ public let TYPE_NODES: [Node] = [
391391
children: [
392392
Child(
393393
name: "Name",
394-
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .token(tokenKind: "KeywordToken"), .token(tokenKind: "WildcardToken")]),
394+
kind: .token(choices: [.token(tokenKind: "IdentifierToken"), .keyword(text: "self"), .keyword(text: "Self"), .keyword(text: "Any"), .token(tokenKind: "KeywordToken"), .token(tokenKind: "WildcardToken")]),
395395
classification: "TypeIdentifier"
396396
),
397397
Child(

Sources/SwiftParser/Attributes.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ extension Parser {
340340
extension Parser {
341341
mutating func parseDifferentiableAttribute() -> RawAttributeSyntax {
342342
let (unexpectedBeforeAtSign, atSign) = self.expect(.atSign)
343-
let (unexpectedBeforeDifferentiable, differentiable) = self.expect(.keyword(.differentiable))
343+
let (unexpectedBeforeDifferentiable, differentiable) = self.expect(TokenSpec(.differentiable, remapping: .identifier))
344344
let (unexpectedBeforeLeftParen, leftParen) = self.expect(.leftParen)
345345

346346
let argument = self.parseDifferentiableAttributeArguments()
@@ -528,7 +528,7 @@ extension Parser {
528528
extension Parser {
529529
mutating func parseDerivativeAttribute() -> RawAttributeSyntax {
530530
let (unexpectedBeforeAtSign, atSign) = self.expect(.atSign)
531-
let (unexpectedBeforeDerivative, derivative) = self.expect(.keyword(.derivative))
531+
let (unexpectedBeforeDerivative, derivative) = self.expect(TokenSpec(.derivative, remapping: .identifier))
532532

533533
let (unexpectedBeforeLeftParen, leftParen) = self.expect(.leftParen)
534534
let argument = self.parseDerivativeAttributeArguments()

Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -952,7 +952,7 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
952952
case .differentiabilityParam:
953953
assert(layout.count == 5)
954954
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
955-
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.identifier), .tokenKind(.integerLiteral), .tokenKind(.keyword)]))
955+
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.identifier), .tokenKind(.integerLiteral), .keyword("self")]))
956956
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
957957
assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax?.self, tokenChoices: [.tokenKind(.comma)]))
958958
assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self))
@@ -1394,7 +1394,9 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
13941394
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
13951395
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [
13961396
.tokenKind(.identifier),
1397-
.tokenKind(.keyword),
1397+
.keyword("self"),
1398+
.keyword("Self"),
1399+
.keyword("init"),
13981400
.tokenKind(.dollarIdentifier),
13991401
.tokenKind(.binaryOperator)
14001402
]))
@@ -1404,7 +1406,7 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
14041406
case .identifierPattern:
14051407
assert(layout.count == 3)
14061408
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
1407-
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.identifier), .tokenKind(.keyword)]))
1409+
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.identifier), .keyword("self"), .keyword("init")]))
14081410
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
14091411
case .ifConfigClauseList:
14101412
for (index, element) in layout.enumerated() {
@@ -1589,7 +1591,9 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
15891591
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
15901592
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [
15911593
.tokenKind(.identifier),
1592-
.tokenKind(.keyword),
1594+
.keyword("self"),
1595+
.keyword("Self"),
1596+
.keyword("init"),
15931597
.tokenKind(.dollarIdentifier),
15941598
.tokenKind(.binaryOperator),
15951599
.tokenKind(.integerLiteral)
@@ -1761,7 +1765,7 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
17611765
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
17621766
assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.period)]))
17631767
assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self))
1764-
assertNoError(kind, 5, verify(layout[5], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.identifier), .tokenKind(.keyword)]))
1768+
assertNoError(kind, 5, verify(layout[5], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.identifier), .keyword("self"), .keyword("Self")]))
17651769
assertNoError(kind, 6, verify(layout[6], as: RawUnexpectedNodesSyntax?.self))
17661770
assertNoError(kind, 7, verify(layout[7], as: RawGenericArgumentClauseSyntax?.self))
17671771
assertNoError(kind, 8, verify(layout[8], as: RawUnexpectedNodesSyntax?.self))
@@ -2201,7 +2205,14 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
22012205
case .simpleTypeIdentifier:
22022206
assert(layout.count == 5)
22032207
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
2204-
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.identifier), .tokenKind(.keyword), .tokenKind(.wildcard)]))
2208+
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [
2209+
.tokenKind(.identifier),
2210+
.keyword("self"),
2211+
.keyword("Self"),
2212+
.keyword("Any"),
2213+
.tokenKind(.keyword),
2214+
.tokenKind(.wildcard)
2215+
]))
22052216
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
22062217
assertNoError(kind, 3, verify(layout[3], as: RawGenericArgumentClauseSyntax?.self))
22072218
assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self))

0 commit comments

Comments
 (0)