Skip to content

Commit 53942bd

Browse files
committed
Add syntax node choices for RawSyntax
1 parent f4f791e commit 53942bd

File tree

19 files changed

+830
-147
lines changed

19 files changed

+830
-147
lines changed

CodeGeneration/Sources/SyntaxSupport/gyb_generated/AttributeNodes.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ public let ATTRIBUTE_NODES: [Node] = [
9494
tokenChoices: [
9595
"StringLiteral"
9696
]),
97+
Child(name: "StringExpr",
98+
kind: "StringLiteralExpr"),
9799
Child(name: "Integer",
98100
kind: "IntegerLiteralToken",
99101
tokenChoices: [
@@ -119,6 +121,8 @@ public let ATTRIBUTE_NODES: [Node] = [
119121
kind: "ConventionAttributeArguments"),
120122
Child(name: "ConventionWitnessMethodArguments",
121123
kind: "ConventionWitnessMethodAttributeArguments"),
124+
Child(name: "OpaqueReturnTypeOfAttributeArguments",
125+
kind: "OpaqueReturnTypeOfAttributeArguments"),
122126
Child(name: "TokenList",
123127
kind: "TokenList",
124128
collectionElementName: "Token")

CodeGeneration/Sources/SyntaxSupport/gyb_generated/AvailabilityNodes.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ public let AVAILABILITY_NODES: [Node] = [
4343
Child(name: "AvailabilityVersionRestriction",
4444
kind: "AvailabilityVersionRestriction"),
4545
Child(name: "AvailabilityLabeledArgument",
46-
kind: "AvailabilityLabeledArgument")
46+
kind: "AvailabilityLabeledArgument"),
47+
Child(name: "TokenList",
48+
kind: "TokenList")
4749
]),
4850
Child(name: "TrailingComma",
4951
kind: "CommaToken",

CodeGeneration/Sources/SyntaxSupport/gyb_generated/DeclNodes.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,9 @@ public let DECL_NODES: [Node] = [
192192
Child(name: "Decls",
193193
kind: "MemberDeclList"),
194194
Child(name: "PostfixExpression",
195-
kind: "Expr")
195+
kind: "Expr"),
196+
Child(name: "Attributes",
197+
kind: "AttributeList")
196198
])
197199
]),
198200

Sources/SwiftParser/Attributes.swift

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ extension Parser {
3434
return RawSyntax(self.parsePoundIfDirective { parser -> RawSyntax in
3535
return parser.parseAttribute()
3636
} syntax: { parser, attributes in
37-
return RawSyntax(RawAttributeListSyntax(elements: attributes, arena: parser.arena))
37+
return .attributes(RawAttributeListSyntax(elements: attributes, arena: parser.arena))
3838
})
3939
}
4040

@@ -75,7 +75,7 @@ extension Parser {
7575
let (unexpectedBeforeAtSign, atSign) = self.expect(.atSign)
7676
let (unexpectedBeforeIdent, ident) = self.expectIdentifierOrRethrows()
7777
let leftParen = self.consume(if: .leftParen)
78-
let arg: RawSyntax?
78+
let arg: RawAttributeSyntax.Argument?
7979
let unexpectedBeforeRightParen: RawUnexpectedNodesSyntax?
8080
let rightParen: RawTokenSyntax?
8181
if leftParen != nil {
@@ -84,7 +84,7 @@ extension Parser {
8484
while !self.at(any: [.eof, .rightParen]) && loopProgress.evaluate(currentToken) {
8585
args.append(self.consumeAnyToken())
8686
}
87-
arg = RawSyntax(RawTokenListSyntax(elements: args, arena: self.arena))
87+
arg = .tokenList(RawTokenListSyntax(elements: args, arena: self.arena))
8888
(unexpectedBeforeRightParen, rightParen) = self.expect(.rightParen)
8989
} else {
9090
arg = nil
@@ -137,14 +137,14 @@ extension Parser {
137137
let (unexpectedBeforeAvailable, available) = self.expectContextualKeyword("available")
138138
let (unexpectedBeforeLeftParen, leftParen) = self.expect(.leftParen)
139139

140-
let argument: RawSyntax
140+
let argument: RawAttributeSyntax.Argument
141141
do {
142142
if self.peek().tokenKind == .integerLiteral {
143-
argument = RawSyntax(self.parseAvailabilitySpecList(from: .available))
143+
argument = .availability(self.parseAvailabilitySpecList(from: .available))
144144
} else if self.peek().tokenKind == .floatingLiteral {
145-
argument = RawSyntax(self.parseAvailabilitySpecList(from: .available))
145+
argument = .availability(self.parseAvailabilitySpecList(from: .available))
146146
} else {
147-
argument = RawSyntax(self.parseExtendedAvailabilitySpecList())
147+
argument = .availability(self.parseExtendedAvailabilitySpecList())
148148
}
149149
}
150150
let (unexpectedBeforeRightParen, rightParen) = self.expect(.rightParen)
@@ -168,14 +168,14 @@ extension Parser {
168168
let (unexpectedBeforeAvailable, available) = self.expectContextualKeyword("_spi_available")
169169
let (unexpectedBeforeLeftParen, leftParen) = self.expect(.leftParen)
170170

171-
let argument: RawSyntax
171+
let argument: RawAttributeSyntax.Argument
172172
do {
173173
if self.peek().tokenKind == .integerLiteral {
174-
argument = RawSyntax(self.parseAvailabilitySpecList(from: .available))
174+
argument = .availability(self.parseAvailabilitySpecList(from: .available))
175175
} else if self.peek().tokenKind == .floatingLiteral {
176-
argument = RawSyntax(self.parseAvailabilitySpecList(from: .available))
176+
argument = .availability(self.parseAvailabilitySpecList(from: .available))
177177
} else {
178-
argument = RawSyntax(self.parseExtendedAvailabilitySpecList())
178+
argument = .availability(self.parseExtendedAvailabilitySpecList())
179179
}
180180
}
181181
let (unexpectedBeforeRightParen, rightParen) = self.expect(.rightParen)
@@ -211,7 +211,7 @@ extension Parser {
211211
attributeName: differentiable,
212212
unexpectedBeforeLeftParen,
213213
leftParen: leftParen,
214-
argument: RawSyntax(argument),
214+
argument: .differentiableArguments(argument),
215215
unexpectedBeforeRightParen,
216216
rightParen: rightParen,
217217
tokenList: nil,
@@ -266,14 +266,18 @@ extension Parser {
266266

267267
guard let leftParen = self.consume(if: .leftParen) else {
268268
// If no opening '(' for parameter list, parse a single parameter.
269-
let param = self.parseDifferentiabilityParameter().map(RawSyntax.init(_:))
270-
?? RawSyntax(RawMissingSyntax(arena: self.arena))
269+
let param = self.parseDifferentiabilityParameter()
270+
?? RawDifferentiabilityParamSyntax(
271+
parameter: .name(missingToken(.identifier)),
272+
trailingComma: nil,
273+
arena: self.arena
274+
)
271275
return RawDifferentiabilityParamsClauseSyntax(
272276
unexpectedBeforeWrt,
273277
wrtLabel: wrt,
274278
unexpectedBeforeColon,
275279
colon: colon,
276-
parameters: param,
280+
parameters: .parameter(param),
277281
arena: self.arena
278282
)
279283
}
@@ -300,7 +304,7 @@ extension Parser {
300304
wrtLabel: wrt,
301305
unexpectedBeforeColon,
302306
colon: colon,
303-
parameters: RawSyntax(list),
307+
parameters: .parameterList(list),
304308
arena: self.arena
305309
)
306310
}
@@ -334,17 +338,17 @@ extension Parser {
334338
let token = self.eat(handle)
335339
let comma = self.consume(if: .comma)
336340
return RawDifferentiabilityParamSyntax(
337-
parameter: RawSyntax(token), trailingComma: comma, arena: self.arena)
341+
parameter: .name(token), trailingComma: comma, arena: self.arena)
338342
case (.integerLiteral, let handle)?:
339343
let token = self.eat(handle)
340344
let comma = self.consume(if: .comma)
341345
return RawDifferentiabilityParamSyntax(
342-
parameter: RawSyntax(token), trailingComma: comma, arena: self.arena)
346+
parameter: .index(token), trailingComma: comma, arena: self.arena)
343347
case (.selfKeyword, let handle)?:
344348
let token = self.eat(handle)
345349
let comma = self.consume(if: .comma)
346350
return RawDifferentiabilityParamSyntax(
347-
parameter: RawSyntax(token),
351+
parameter: .self(token),
348352
trailingComma: comma,
349353
arena: self.arena
350354
)
@@ -370,7 +374,7 @@ extension Parser {
370374
attributeName: derivative,
371375
unexpectedBeforeLeftParen,
372376
leftParen: leftParen,
373-
argument: RawSyntax(argument),
377+
argument: .derivativeRegistrationArguments(argument),
374378
unexpectedBeforeRightParen,
375379
rightParen: rightParen,
376380
tokenList: nil,
@@ -392,7 +396,7 @@ extension Parser {
392396
attributeName: transpose,
393397
unexpectedBeforeLeftParen,
394398
leftParen: leftParen,
395-
argument: RawSyntax(argument),
399+
argument: .derivativeRegistrationArguments(argument),
396400
unexpectedBeforeRightParen,
397401
rightParen: rightParen,
398402
tokenList: nil,
@@ -456,7 +460,7 @@ extension Parser {
456460
unexpectedBeforeObjc,
457461
attributeName: objc,
458462
leftParen: leftParen,
459-
argument: argument.map(RawSyntax.init),
463+
argument: argument.map({ .objCName($0) }),
460464
unexpectedBeforeRightParen,
461465
rightParen: rightParen,
462466
tokenList: nil,
@@ -515,7 +519,7 @@ extension Parser {
515519
attributeName: specializeToken,
516520
unexpectedBeforeLeftParen,
517521
leftParen: leftParen,
518-
argument: RawSyntax(argument),
522+
argument: .specializeArguments(argument),
519523
unexpectedBeforeRightParen,
520524
rightParen: rightParen,
521525
tokenList: nil,
@@ -542,7 +546,7 @@ extension Parser {
542546
let (unexpectedBeforeColon, colon) = self.expect(.colon)
543547
let (targetFunction, args) = self.parseDeclNameRef([ .zeroArgCompoundNames, .keywordsUsingSpecialNames, .operators ])
544548
let declName = RawDeclNameSyntax(
545-
declBaseName: RawSyntax(targetFunction),
549+
declBaseName: .identifier(targetFunction),
546550
declNameArguments: args,
547551
arena: self.arena)
548552
let comma = self.consume(if: .comma)
@@ -665,12 +669,12 @@ extension Parser {
665669
attributeName: privateToken,
666670
unexpectedBeforeLeftParen,
667671
leftParen: leftParen,
668-
argument: RawSyntax(RawNamedAttributeStringArgumentSyntax(
672+
argument: .namedAttributeString(RawNamedAttributeStringArgumentSyntax(
669673
unexpectedBeforeLabel,
670674
nameTok: label,
671675
unexpectedBeforeColon,
672676
colon: colon,
673-
stringOrDeclname: RawSyntax(filename),
677+
stringOrDeclname: .string(filename),
674678
arena: self.arena
675679
)),
676680
unexpectedBeforeRightParen,
@@ -697,7 +701,7 @@ extension Parser {
697701
.zeroArgCompoundNames, .keywordsUsingSpecialNames, .operators,
698702
])
699703
}
700-
let method = RawDeclNameSyntax(declBaseName: RawSyntax(base), declNameArguments: args, arena: self.arena)
704+
let method = RawDeclNameSyntax(declBaseName: .identifier(base), declNameArguments: args, arena: self.arena)
701705
let (unexpectedBeforeRightParen, rightParen) = self.expect(.rightParen)
702706
return RawAttributeSyntax(
703707
unexpectedBeforeAtSign,
@@ -706,12 +710,12 @@ extension Parser {
706710
attributeName: dynamicReplacementToken,
707711
unexpectedBeforeLeftParen,
708712
leftParen: leftParen,
709-
argument: RawSyntax(RawNamedAttributeStringArgumentSyntax(
713+
argument: .namedAttributeString(RawNamedAttributeStringArgumentSyntax(
710714
unexpectedBeforeLabel,
711715
nameTok: label,
712716
unexpectedBeforeColon,
713717
colon: colon,
714-
stringOrDeclname: RawSyntax(method),
718+
stringOrDeclname: .declname(method),
715719
arena: self.arena
716720
)),
717721
unexpectedBeforeRightParen,
@@ -735,7 +739,7 @@ extension Parser {
735739
attributeName: spiToken,
736740
unexpectedBeforeLeftParen,
737741
leftParen: leftParen,
738-
argument: RawSyntax(label),
742+
argument: .identifier(label),
739743
unexpectedBeforeRightParen,
740744
rightParen: rightParen,
741745
tokenList: nil,
@@ -757,7 +761,7 @@ extension Parser {
757761
attributeName: spiToken,
758762
unexpectedBeforeLeftParen,
759763
leftParen: leftParen,
760-
argument: RawSyntax(label),
764+
argument: .implementsArguments(label),
761765
unexpectedBeforeRightParen,
762766
rightParen: rightParen,
763767
tokenList: nil,
@@ -810,7 +814,7 @@ extension Parser {
810814
attributeName: semanticsToken,
811815
unexpectedBeforeLeftParen,
812816
leftParen: leftParen,
813-
argument: RawSyntax(label),
817+
argument: .stringExpr(label),
814818
unexpectedBeforeRightParen,
815819
rightParen: rightParen,
816820
tokenList: nil,
@@ -819,11 +823,11 @@ extension Parser {
819823
}
820824

821825
extension Parser {
822-
mutating func parseConventionArguments() -> RawSyntax {
826+
mutating func parseConventionArguments() -> RawAttributeSyntax.Argument {
823827
if let witnessMethod = self.consumeIfContextualKeyword("witness_method") {
824828
let (unexpectedBeforeColon, colon) = self.expect(.colon)
825829
let name = self.parseAnyIdentifier()
826-
return RawSyntax(RawConventionWitnessMethodAttributeArgumentsSyntax(
830+
return .conventionWitnessMethodArguments(RawConventionWitnessMethodAttributeArgumentsSyntax(
827831
witnessMethodLabel: witnessMethod,
828832
unexpectedBeforeColon,
829833
colon: colon,
@@ -852,7 +856,7 @@ extension Parser {
852856
unexpectedBeforeCTypeString = nil
853857
cTypeString = nil
854858
}
855-
return RawSyntax(RawConventionAttributeArgumentsSyntax(
859+
return .conventionArguments(RawConventionAttributeArgumentsSyntax(
856860
conventionLabel: label,
857861
unexpectedBeforeComma,
858862
comma: comma,

0 commit comments

Comments
 (0)