Skip to content

Commit ef7f0a8

Browse files
authored
Merge pull request #1130 from DougGregor/macro-decl-definition-syntax
[Macros] Adjust macro declaration syntax to match the latest pitch.
2 parents b0fc9a0 + b9a05bc commit ef7f0a8

File tree

19 files changed

+84
-644
lines changed

19 files changed

+84
-644
lines changed

CodeGeneration/Sources/SyntaxSupport/gyb_generated/DeclNodes.swift

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1543,40 +1543,14 @@ public let DECL_NODES: [Node] = [
15431543
Child(name: "ValueLike",
15441544
kind: "TypeAnnotation")
15451545
]),
1546-
Child(name: "Equal",
1547-
kind: "EqualToken",
1548-
tokenChoices: [
1549-
"Equal"
1550-
]),
1551-
Child(name: "ExternalName",
1552-
kind: "ExternalMacroName",
1546+
Child(name: "Definition",
1547+
kind: "InitializerClause",
15531548
isOptional: true),
15541549
Child(name: "GenericWhereClause",
15551550
kind: "GenericWhereClause",
15561551
isOptional: true)
15571552
]),
15581553

1559-
Node(name: "ExternalMacroName",
1560-
nameForDiagnostics: "external macro name",
1561-
kind: "Syntax",
1562-
children: [
1563-
Child(name: "ModuleName",
1564-
kind: "IdentifierToken",
1565-
tokenChoices: [
1566-
"Identifier"
1567-
]),
1568-
Child(name: "Period",
1569-
kind: "PeriodToken",
1570-
tokenChoices: [
1571-
"Period"
1572-
]),
1573-
Child(name: "MacroTypeName",
1574-
kind: "IdentifierToken",
1575-
tokenChoices: [
1576-
"Identifier"
1577-
])
1578-
]),
1579-
15801554
Node(name: "MacroExpansionDecl",
15811555
nameForDiagnostics: "pound literal declaration",
15821556
kind: "Decl",

Sources/SwiftParser/Declarations.swift

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2039,18 +2039,16 @@ extension Parser {
20392039
signature = .functionLike(self.parseFunctionSignature())
20402040
}
20412041

2042-
// External macro name
2043-
let (unexpectedBeforeEqual, equal) = self.expect(.equal)
2044-
let (unexpectedBeforeModuleName, moduleName) = self.expectIdentifier()
2045-
let (unexpectedBeforePeriod, period) = self.expect(.period)
2046-
let (unexpectedBeforeMacroTypeName, macroTypeName) = self.expectIdentifier()
2047-
2048-
let externalMacroName = RawExternalMacroNameSyntax(
2049-
unexpectedBeforeModuleName, moduleName: moduleName,
2050-
unexpectedBeforePeriod, period: period,
2051-
unexpectedBeforeMacroTypeName, macroTypeName: macroTypeName,
2052-
arena: self.arena
2053-
)
2042+
// Initializer, if any.
2043+
let definition: RawInitializerClauseSyntax?
2044+
if let equal = self.consume(if: .equal) {
2045+
let expr = self.parseExpression()
2046+
definition = RawInitializerClauseSyntax(
2047+
equal: equal, value: expr, arena: self.arena
2048+
)
2049+
} else {
2050+
definition = nil
2051+
}
20542052

20552053
// Parse a 'where' clause if present.
20562054
let whereClause: RawGenericWhereClauseSyntax?
@@ -2065,8 +2063,7 @@ extension Parser {
20652063
unexpectedBeforeIntroducerKeyword, macroKeyword: introducerKeyword,
20662064
unexpectedBeforeName, identifier: name,
20672065
genericParameterClause: genericParams,
2068-
signature: signature, unexpectedBeforeEqual, equal: equal,
2069-
externalName: externalMacroName,
2066+
signature: signature, definition: definition,
20702067
genericWhereClause: whereClause,
20712068
arena: self.arena
20722069
)

Sources/SwiftSyntax/Documentation.docc/gyb_generated/SwiftSyntax.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,6 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
354354
- <doc:SwiftSyntax/PrecedenceGroupNameElementSyntax>
355355
- <doc:SwiftSyntax/PrecedenceGroupAssignmentSyntax>
356356
- <doc:SwiftSyntax/PrecedenceGroupAssociativitySyntax>
357-
- <doc:SwiftSyntax/ExternalMacroNameSyntax>
358357
- <doc:SwiftSyntax/TokenListSyntax>
359358
- <doc:SwiftSyntax/NonEmptyTokenListSyntax>
360359
- <doc:SwiftSyntax/CustomAttributeSyntax>

Sources/SwiftSyntax/Raw/gyb_generated/RawSyntaxNodes.swift

Lines changed: 15 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -10878,17 +10878,15 @@ public struct RawMacroDeclSyntax: RawDeclSyntaxNodeProtocol {
1087810878
genericParameterClause: RawGenericParameterClauseSyntax?,
1087910879
_ unexpectedBetweenGenericParameterClauseAndSignature: RawUnexpectedNodesSyntax? = nil,
1088010880
signature: Signature,
10881-
_ unexpectedBetweenSignatureAndEqual: RawUnexpectedNodesSyntax? = nil,
10882-
equal: RawTokenSyntax,
10883-
_ unexpectedBetweenEqualAndExternalName: RawUnexpectedNodesSyntax? = nil,
10884-
externalName: RawExternalMacroNameSyntax?,
10885-
_ unexpectedBetweenExternalNameAndGenericWhereClause: RawUnexpectedNodesSyntax? = nil,
10881+
_ unexpectedBetweenSignatureAndDefinition: RawUnexpectedNodesSyntax? = nil,
10882+
definition: RawInitializerClauseSyntax?,
10883+
_ unexpectedBetweenDefinitionAndGenericWhereClause: RawUnexpectedNodesSyntax? = nil,
1088610884
genericWhereClause: RawGenericWhereClauseSyntax?,
1088710885
_ unexpectedAfterGenericWhereClause: RawUnexpectedNodesSyntax? = nil,
1088810886
arena: __shared SyntaxArena
1088910887
) {
1089010888
let raw = RawSyntax.makeLayout(
10891-
kind: .macroDecl, uninitializedCount: 19, arena: arena) { layout in
10889+
kind: .macroDecl, uninitializedCount: 17, arena: arena) { layout in
1089210890
layout.initialize(repeating: nil)
1089310891
layout[0] = unexpectedBeforeAttributes?.raw
1089410892
layout[1] = attributes?.raw
@@ -10902,13 +10900,11 @@ public struct RawMacroDeclSyntax: RawDeclSyntaxNodeProtocol {
1090210900
layout[9] = genericParameterClause?.raw
1090310901
layout[10] = unexpectedBetweenGenericParameterClauseAndSignature?.raw
1090410902
layout[11] = signature.raw
10905-
layout[12] = unexpectedBetweenSignatureAndEqual?.raw
10906-
layout[13] = equal.raw
10907-
layout[14] = unexpectedBetweenEqualAndExternalName?.raw
10908-
layout[15] = externalName?.raw
10909-
layout[16] = unexpectedBetweenExternalNameAndGenericWhereClause?.raw
10910-
layout[17] = genericWhereClause?.raw
10911-
layout[18] = unexpectedAfterGenericWhereClause?.raw
10903+
layout[12] = unexpectedBetweenSignatureAndDefinition?.raw
10904+
layout[13] = definition?.raw
10905+
layout[14] = unexpectedBetweenDefinitionAndGenericWhereClause?.raw
10906+
layout[15] = genericWhereClause?.raw
10907+
layout[16] = unexpectedAfterGenericWhereClause?.raw
1091210908
}
1091310909
self.init(raw: raw)
1091410910
}
@@ -10949,96 +10945,20 @@ public struct RawMacroDeclSyntax: RawDeclSyntaxNodeProtocol {
1094910945
public var signature: RawSyntax {
1095010946
layoutView.children[11]!
1095110947
}
10952-
public var unexpectedBetweenSignatureAndEqual: RawUnexpectedNodesSyntax? {
10948+
public var unexpectedBetweenSignatureAndDefinition: RawUnexpectedNodesSyntax? {
1095310949
layoutView.children[12].map(RawUnexpectedNodesSyntax.init(raw:))
1095410950
}
10955-
public var equal: RawTokenSyntax {
10956-
layoutView.children[13].map(RawTokenSyntax.init(raw:))!
10951+
public var definition: RawInitializerClauseSyntax? {
10952+
layoutView.children[13].map(RawInitializerClauseSyntax.init(raw:))
1095710953
}
10958-
public var unexpectedBetweenEqualAndExternalName: RawUnexpectedNodesSyntax? {
10954+
public var unexpectedBetweenDefinitionAndGenericWhereClause: RawUnexpectedNodesSyntax? {
1095910955
layoutView.children[14].map(RawUnexpectedNodesSyntax.init(raw:))
1096010956
}
10961-
public var externalName: RawExternalMacroNameSyntax? {
10962-
layoutView.children[15].map(RawExternalMacroNameSyntax.init(raw:))
10963-
}
10964-
public var unexpectedBetweenExternalNameAndGenericWhereClause: RawUnexpectedNodesSyntax? {
10965-
layoutView.children[16].map(RawUnexpectedNodesSyntax.init(raw:))
10966-
}
1096710957
public var genericWhereClause: RawGenericWhereClauseSyntax? {
10968-
layoutView.children[17].map(RawGenericWhereClauseSyntax.init(raw:))
10958+
layoutView.children[15].map(RawGenericWhereClauseSyntax.init(raw:))
1096910959
}
1097010960
public var unexpectedAfterGenericWhereClause: RawUnexpectedNodesSyntax? {
10971-
layoutView.children[18].map(RawUnexpectedNodesSyntax.init(raw:))
10972-
}
10973-
}
10974-
10975-
@_spi(RawSyntax)
10976-
public struct RawExternalMacroNameSyntax: RawSyntaxNodeProtocol {
10977-
10978-
@_spi(RawSyntax)
10979-
public var layoutView: RawSyntaxLayoutView {
10980-
return raw.layoutView!
10981-
}
10982-
10983-
public static func isKindOf(_ raw: RawSyntax) -> Bool {
10984-
return raw.kind == .externalMacroName
10985-
}
10986-
10987-
public var raw: RawSyntax
10988-
init(raw: RawSyntax) {
10989-
assert(Self.isKindOf(raw))
10990-
self.raw = raw
10991-
}
10992-
10993-
public init?<Node: RawSyntaxNodeProtocol>(_ other: Node) {
10994-
guard Self.isKindOf(other.raw) else { return nil }
10995-
self.init(raw: other.raw)
10996-
}
10997-
10998-
public init(
10999-
_ unexpectedBeforeModuleName: RawUnexpectedNodesSyntax? = nil,
11000-
moduleName: RawTokenSyntax,
11001-
_ unexpectedBetweenModuleNameAndPeriod: RawUnexpectedNodesSyntax? = nil,
11002-
period: RawTokenSyntax,
11003-
_ unexpectedBetweenPeriodAndMacroTypeName: RawUnexpectedNodesSyntax? = nil,
11004-
macroTypeName: RawTokenSyntax,
11005-
_ unexpectedAfterMacroTypeName: RawUnexpectedNodesSyntax? = nil,
11006-
arena: __shared SyntaxArena
11007-
) {
11008-
let raw = RawSyntax.makeLayout(
11009-
kind: .externalMacroName, uninitializedCount: 7, arena: arena) { layout in
11010-
layout.initialize(repeating: nil)
11011-
layout[0] = unexpectedBeforeModuleName?.raw
11012-
layout[1] = moduleName.raw
11013-
layout[2] = unexpectedBetweenModuleNameAndPeriod?.raw
11014-
layout[3] = period.raw
11015-
layout[4] = unexpectedBetweenPeriodAndMacroTypeName?.raw
11016-
layout[5] = macroTypeName.raw
11017-
layout[6] = unexpectedAfterMacroTypeName?.raw
11018-
}
11019-
self.init(raw: raw)
11020-
}
11021-
11022-
public var unexpectedBeforeModuleName: RawUnexpectedNodesSyntax? {
11023-
layoutView.children[0].map(RawUnexpectedNodesSyntax.init(raw:))
11024-
}
11025-
public var moduleName: RawTokenSyntax {
11026-
layoutView.children[1].map(RawTokenSyntax.init(raw:))!
11027-
}
11028-
public var unexpectedBetweenModuleNameAndPeriod: RawUnexpectedNodesSyntax? {
11029-
layoutView.children[2].map(RawUnexpectedNodesSyntax.init(raw:))
11030-
}
11031-
public var period: RawTokenSyntax {
11032-
layoutView.children[3].map(RawTokenSyntax.init(raw:))!
11033-
}
11034-
public var unexpectedBetweenPeriodAndMacroTypeName: RawUnexpectedNodesSyntax? {
11035-
layoutView.children[4].map(RawUnexpectedNodesSyntax.init(raw:))
11036-
}
11037-
public var macroTypeName: RawTokenSyntax {
11038-
layoutView.children[5].map(RawTokenSyntax.init(raw:))!
11039-
}
11040-
public var unexpectedAfterMacroTypeName: RawUnexpectedNodesSyntax? {
11041-
layoutView.children[6].map(RawUnexpectedNodesSyntax.init(raw:))
10961+
layoutView.children[16].map(RawUnexpectedNodesSyntax.init(raw:))
1104210962
}
1104310963
}
1104410964

Sources/SwiftSyntax/Raw/gyb_generated/RawSyntaxValidation.swift

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1588,7 +1588,7 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
15881588
assertNoError(kind, 6, verify(layout[6], as: RawUnexpectedNodesSyntax?.self))
15891589
break
15901590
case .macroDecl:
1591-
assert(layout.count == 19)
1591+
assert(layout.count == 17)
15921592
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
15931593
assertNoError(kind, 1, verify(layout[1], as: RawAttributeListSyntax?.self))
15941594
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
@@ -1605,22 +1605,10 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
16051605
verify(layout[11], as: RawSyntax.self),
16061606
])
16071607
assertNoError(kind, 12, verify(layout[12], as: RawUnexpectedNodesSyntax?.self))
1608-
assertNoError(kind, 13, verify(layout[13], as: RawTokenSyntax.self))
1608+
assertNoError(kind, 13, verify(layout[13], as: RawInitializerClauseSyntax?.self))
16091609
assertNoError(kind, 14, verify(layout[14], as: RawUnexpectedNodesSyntax?.self))
1610-
assertNoError(kind, 15, verify(layout[15], as: RawExternalMacroNameSyntax?.self))
1610+
assertNoError(kind, 15, verify(layout[15], as: RawGenericWhereClauseSyntax?.self))
16111611
assertNoError(kind, 16, verify(layout[16], as: RawUnexpectedNodesSyntax?.self))
1612-
assertNoError(kind, 17, verify(layout[17], as: RawGenericWhereClauseSyntax?.self))
1613-
assertNoError(kind, 18, verify(layout[18], as: RawUnexpectedNodesSyntax?.self))
1614-
break
1615-
case .externalMacroName:
1616-
assert(layout.count == 7)
1617-
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
1618-
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self))
1619-
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
1620-
assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax.self))
1621-
assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self))
1622-
assertNoError(kind, 5, verify(layout[5], as: RawTokenSyntax.self))
1623-
assertNoError(kind, 6, verify(layout[6], as: RawUnexpectedNodesSyntax?.self))
16241612
break
16251613
case .macroExpansionDecl:
16261614
assert(layout.count == 17)

Sources/SwiftSyntax/gyb_generated/Misc.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,6 @@ extension Syntax {
177177
.node(PrecedenceGroupAssignmentSyntax.self),
178178
.node(PrecedenceGroupAssociativitySyntax.self),
179179
.node(MacroDeclSyntax.self),
180-
.node(ExternalMacroNameSyntax.self),
181180
.node(MacroExpansionDeclSyntax.self),
182181
.node(TokenListSyntax.self),
183182
.node(NonEmptyTokenListSyntax.self),
@@ -464,7 +463,6 @@ extension SyntaxKind {
464463
case .precedenceGroupAssignment: return PrecedenceGroupAssignmentSyntax.self
465464
case .precedenceGroupAssociativity: return PrecedenceGroupAssociativitySyntax.self
466465
case .macroDecl: return MacroDeclSyntax.self
467-
case .externalMacroName: return ExternalMacroNameSyntax.self
468466
case .macroExpansionDecl: return MacroExpansionDeclSyntax.self
469467
case .tokenList: return TokenListSyntax.self
470468
case .nonEmptyTokenList: return NonEmptyTokenListSyntax.self
@@ -911,8 +909,6 @@ extension SyntaxKind {
911909
return "'associativity' property of precedencegroup"
912910
case .macroDecl:
913911
return "macro"
914-
case .externalMacroName:
915-
return "external macro name"
916912
case .macroExpansionDecl:
917913
return "pound literal declaration"
918914
case .tokenList:

Sources/SwiftSyntax/gyb_generated/SyntaxAnyVisitor.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1181,13 +1181,6 @@ open class SyntaxAnyVisitor: SyntaxVisitor {
11811181
override open func visitPost(_ node: MacroDeclSyntax) {
11821182
visitAnyPost(node._syntaxNode)
11831183
}
1184-
override open func visit(_ node: ExternalMacroNameSyntax) -> SyntaxVisitorContinueKind {
1185-
return visitAny(node._syntaxNode)
1186-
}
1187-
1188-
override open func visitPost(_ node: ExternalMacroNameSyntax) {
1189-
visitAnyPost(node._syntaxNode)
1190-
}
11911184
override open func visit(_ node: MacroExpansionDeclSyntax) -> SyntaxVisitorContinueKind {
11921185
return visitAny(node._syntaxNode)
11931186
}

Sources/SwiftSyntax/gyb_generated/SyntaxEnum.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,6 @@ public enum SyntaxEnum {
177177
case precedenceGroupAssignment(PrecedenceGroupAssignmentSyntax)
178178
case precedenceGroupAssociativity(PrecedenceGroupAssociativitySyntax)
179179
case macroDecl(MacroDeclSyntax)
180-
case externalMacroName(ExternalMacroNameSyntax)
181180
case macroExpansionDecl(MacroExpansionDeclSyntax)
182181
case tokenList(TokenListSyntax)
183182
case nonEmptyTokenList(NonEmptyTokenListSyntax)
@@ -625,8 +624,6 @@ public extension Syntax {
625624
return .precedenceGroupAssociativity(PrecedenceGroupAssociativitySyntax(self)!)
626625
case .macroDecl:
627626
return .macroDecl(MacroDeclSyntax(self)!)
628-
case .externalMacroName:
629-
return .externalMacroName(ExternalMacroNameSyntax(self)!)
630627
case .macroExpansionDecl:
631628
return .macroExpansionDecl(MacroExpansionDeclSyntax(self)!)
632629
case .tokenList:

0 commit comments

Comments
 (0)