Skip to content

Commit 3a37761

Browse files
authored
Merge pull request #24238 from akyrtzi/5.1-gyb-syntax-def-element-name
2 parents e3975e2 + 2b208e8 commit 3a37761

17 files changed

+188
-114
lines changed

include/swift/Syntax/SyntaxBuilders.h.gyb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,12 @@ public:
4848
${node.name}Builder &use${child.name}(${child.type_name} ${child.name});
4949
% child_node = NODE_MAP.get(child.syntax_kind)
5050
% if child_node and child_node.is_syntax_collection():
51-
% child_elt = child_node.collection_element_name
51+
% child_elt = child.collection_element_name
5252
% child_elt_type = child_node.collection_element_type
53-
% child_elt_name = child.name + 'Member'
54-
${node.name}Builder &add${child_elt_name}(${child_elt_type} ${child_elt});
53+
% if not child_elt:
54+
% raise Exception("'collection_element_name' should be set for '%s' of '%s'" % (child.name, node.name))
55+
% end
56+
${node.name}Builder &add${child_elt}(${child_elt_type} ${child_elt});
5557
% end
5658
% end
5759

include/swift/Syntax/SyntaxNodes.h.gyb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,18 @@ public:
8888

8989
% child_node = NODE_MAP.get(child.syntax_kind)
9090
% if child_node and child_node.is_syntax_collection():
91-
% child_elt = child_node.collection_element_name
91+
% child_elt = child.collection_element_name
9292
% child_elt_type = child_node.collection_element_type
93+
% if not child_elt:
94+
% raise Exception("'collection_element_name' should be set for '%s' of '%s'" % (child.name, node.name))
95+
% end
9396
/// Adds the provided `${child_elt}` to the node's `${child.name}`
9497
/// collection.
9598
/// - param element: The new `${child_elt}` to add to the node's
9699
/// `${child.name}` collection.
97100
/// - returns: A copy of the receiver with the provided `${child_elt}`
98101
/// appended to its `${child.name}` collection.
99-
${node.name} add${child.name}Member(${child_elt_type} ${child_elt});
102+
${node.name} add${child_elt}(${child_elt_type} ${child_elt});
100103
% end
101104

102105
/// Returns a copy of the receiver with its `${child.name}` replaced.

lib/Syntax/SyntaxBuilders.cpp.gyb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,13 @@ ${node.name}Builder::use${child.name}(${child.type_name} ${child.name}) {
3636
}
3737
% child_node = NODE_MAP.get(child.syntax_kind)
3838
% if child_node and child_node.is_syntax_collection():
39-
% child_elt = child_node.collection_element_name
39+
% child_elt = child.collection_element_name
4040
% child_elt_type = child_node.collection_element_type
41-
% child_elt_name = child.name + 'Member'
41+
% if not child_elt:
42+
% raise Exception("'collection_element_name' should be set for '%s' of '%s'" % (child.name, node.name))
43+
% end
4244
${node.name}Builder &
43-
${node.name}Builder::add${child_elt_name}(${child_elt_type} ${child_elt}) {
45+
${node.name}Builder::add${child_elt}(${child_elt_type} ${child_elt}) {
4446
auto &raw = Layout[cursorIndex(${node.name}::Cursor::${child.name})];
4547
if (!raw)
4648
raw = RawSyntax::make(SyntaxKind::${child_node.syntax_kind},

lib/Syntax/SyntaxNodes.cpp.gyb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,12 @@ ${child.type_name} ${node.name}::get${child.name}() {
6969

7070
% child_node = NODE_MAP.get(child.syntax_kind)
7171
% if child_node and child_node.is_syntax_collection():
72-
% child_elt = child_node.collection_element_name
72+
% child_elt = child.collection_element_name
7373
% child_elt_type = child_node.collection_element_type
74-
% child_elt_name = child.name + 'Member'
75-
${node.name} ${node.name}::add${child_elt_name}(${child_elt_type} ${child_elt}) {
74+
% if not child_elt:
75+
% raise Exception("'collection_element_name' should be set for '%s' of '%s'" % (child.name, node.name))
76+
% end
77+
${node.name} ${node.name}::add${child_elt}(${child_elt_type} ${child_elt}) {
7678
RC<RawSyntax> raw = getRaw()->getChild(Cursor::${child.name});
7779
if (raw)
7880
raw = raw->append(${child_elt}.getRaw());

unittests/Syntax/DeclSyntaxTests.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ TEST(DeclSyntaxTests, TypealiasMakeAPIs) {
8888
auto GenericParams = GenericParameterClauseSyntaxBuilder()
8989
.useLeftAngleBracket(LeftAngle)
9090
.useRightAngleBracket(RightAngle)
91-
.addGenericParameterListMember(ElementParam)
91+
.addGenericParameter(ElementParam)
9292
.build();
9393
auto Assignment = SyntaxFactory::makeEqualToken({}, { Trivia::spaces(1) });
9494
auto ElementType = SyntaxFactory::makeTypeIdentifier("Element", {}, {});
@@ -97,7 +97,7 @@ TEST(DeclSyntaxTests, TypealiasMakeAPIs) {
9797
auto GenericArgs = GenericArgumentClauseSyntaxBuilder()
9898
.useLeftAngleBracket(LeftAngle)
9999
.useRightAngleBracket(SyntaxFactory::makeRightAngleToken({}, {}))
100-
.addArgumentsMember(ElementArg)
100+
.addArgument(ElementArg)
101101
.build();
102102

103103
auto Array = SyntaxFactory::makeIdentifier("Array", {}, {});
@@ -126,7 +126,7 @@ TEST(DeclSyntaxTests, TypealiasWithAPIs) {
126126
auto GenericParams = GenericParameterClauseSyntaxBuilder()
127127
.useLeftAngleBracket(LeftAngle)
128128
.useRightAngleBracket(RightAngle)
129-
.addGenericParameterListMember(ElementParam)
129+
.addGenericParameter(ElementParam)
130130
.build();
131131
auto Equal = SyntaxFactory::makeEqualToken({}, { Trivia::spaces(1) });
132132

@@ -135,7 +135,7 @@ TEST(DeclSyntaxTests, TypealiasWithAPIs) {
135135
auto GenericArgs = GenericArgumentClauseSyntaxBuilder()
136136
.useLeftAngleBracket(LeftAngle)
137137
.useRightAngleBracket(SyntaxFactory::makeRightAngleToken({}, {}))
138-
.addArgumentsMember(ElementArg)
138+
.addArgument(ElementArg)
139139
.build();
140140

141141
auto Array = SyntaxFactory::makeIdentifier("Array", {}, {});
@@ -170,7 +170,7 @@ TEST(DeclSyntaxTests, TypealiasBuilderAPIs) {
170170
auto GenericParams = GenericParameterClauseSyntaxBuilder()
171171
.useLeftAngleBracket(LeftAngle)
172172
.useRightAngleBracket(RightAngle)
173-
.addGenericParameterListMember(ElementParam)
173+
.addGenericParameter(ElementParam)
174174
.build();
175175
auto Equal =
176176
SyntaxFactory::makeEqualToken({}, { Trivia::spaces(1) });
@@ -181,7 +181,7 @@ TEST(DeclSyntaxTests, TypealiasBuilderAPIs) {
181181
auto GenericArgs = GenericArgumentClauseSyntaxBuilder()
182182
.useLeftAngleBracket(LeftAngle)
183183
.useRightAngleBracket(SyntaxFactory::makeRightAngleToken({}, {}))
184-
.addArgumentsMember(ElementArg)
184+
.addArgument(ElementArg)
185185
.build();
186186

187187
auto Array = SyntaxFactory::makeIdentifier("Array", {}, {});
@@ -519,8 +519,8 @@ GenericParameterClauseSyntax getCannedGenericParams() {
519519
auto T = SyntaxFactory::makeGenericParameter(TType, Comma);
520520
auto U = SyntaxFactory::makeGenericParameter(UType, None);
521521

522-
GB.addGenericParameterListMember(T);
523-
GB.addGenericParameterListMember(U);
522+
GB.addGenericParameter(T);
523+
GB.addGenericParameter(U);
524524
GB.useLeftAngleBracket(LAngle);
525525
GB.useRightAngleBracket(RAngle);
526526

unittests/Syntax/ExprSyntaxTests.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ TEST(ExprSyntaxTests, SymbolicReferenceExprGetAPIs) {
6868
ArgBuilder
6969
.useLeftAngleBracket(SyntaxFactory::makeLeftAngleToken({}, {}))
7070
.useRightAngleBracket(SyntaxFactory::makeRightAngleToken({}, {}))
71-
.addArgumentsMember(GenericArg);
71+
.addArgument(GenericArg);
7272

7373
auto GenericArgs = ArgBuilder.build();
7474

@@ -98,7 +98,7 @@ TEST(ExprSyntaxTests, SymbolicReferenceExprMakeAPIs) {
9898
ArgBuilder
9999
.useLeftAngleBracket(SyntaxFactory::makeLeftAngleToken({}, {}))
100100
.useRightAngleBracket(SyntaxFactory::makeRightAngleToken({}, {}))
101-
.addArgumentsMember(GenericArg);
101+
.addArgument(GenericArg);
102102
auto GenericArgs = ArgBuilder.build();
103103

104104
{
@@ -135,7 +135,7 @@ TEST(ExprSyntaxTests, SymbolicReferenceExprWithAPIs) {
135135
ArgBuilder
136136
.useLeftAngleBracket(SyntaxFactory::makeLeftAngleToken({}, {}))
137137
.useRightAngleBracket(SyntaxFactory::makeRightAngleToken({}, {}))
138-
.addArgumentsMember(GenericArg);
138+
.addArgument(GenericArg);
139139
auto GenericArgs = ArgBuilder.build();
140140

141141
{
@@ -528,15 +528,15 @@ TEST(ExprSyntaxTests, FunctionCallExprBuilderAPIs) {
528528
{
529529
llvm::SmallString<64> Scratch;
530530
llvm::raw_svector_ostream OS(Scratch);
531-
CallBuilder.addArgumentListMember(OneArg);
531+
CallBuilder.addArgument(OneArg);
532532
CallBuilder.build().print(OS);
533533
ASSERT_EQ(OS.str().str(), "foo(1, )");
534534
}
535535

536536
{
537537
llvm::SmallString<64> Scratch;
538538
llvm::raw_svector_ostream OS(Scratch);
539-
CallBuilder.addArgumentListMember(OneArg.withTrailingComma(NoComma));
539+
CallBuilder.addArgument(OneArg.withTrailingComma(NoComma));
540540
CallBuilder.build().print(OS);
541541
ASSERT_EQ(OS.str().str(), "foo(1, 1)");
542542
}

unittests/Syntax/TypeSyntaxTests.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,9 @@ TEST(TypeSyntaxTests, TupleBuilderAPIs) {
202202
auto StringId = SyntaxFactory::makeIdentifier("String", {}, {});
203203
auto StringType = SyntaxFactory::makeSimpleTypeIdentifier(StringId, None);
204204
auto String = SyntaxFactory::makeTupleTypeElement(StringType, Comma);
205-
Builder.addElementsMember(IntWithComma);
206-
Builder.addElementsMember(String);
207-
Builder.addElementsMember(Int);
205+
Builder.addElement(IntWithComma);
206+
Builder.addElement(String);
207+
Builder.addElement(Int);
208208
Builder.useRightParen(SyntaxFactory::makeRightParenToken({}, {}));
209209

210210
auto TupleType = Builder.build();
@@ -229,8 +229,8 @@ TEST(TypeSyntaxTests, TupleBuilderAPIs) {
229229
auto yTypeElt = SyntaxFactory::makeTupleTypeElement(yLabel, Colon,
230230
Int)
231231
.withInOut(inout);
232-
Builder.addElementsMember(xTypeElt);
233-
Builder.addElementsMember(yTypeElt);
232+
Builder.addElement(xTypeElt);
233+
Builder.addElement(yTypeElt);
234234
Builder.useRightParen(SyntaxFactory::makeRightParenToken({}, {}));
235235

236236
auto TupleType = Builder.build();
@@ -562,8 +562,8 @@ TEST(TypeSyntaxTests, FunctionTypeWithAPIs) {
562562

563563
SyntaxFactory::makeBlankFunctionType()
564564
.withLeftParen(LeftParen)
565-
.addArgumentsMember(xArg)
566-
.addArgumentsMember(yArg)
565+
.addArgument(xArg)
566+
.addArgument(yArg)
567567
.withRightParen(RightParen)
568568
.withThrowsOrRethrowsKeyword(Throws)
569569
.withArrow(Arrow)
@@ -580,8 +580,8 @@ TEST(TypeSyntaxTests, FunctionTypeWithAPIs) {
580580
SyntaxFactory::makeBlankFunctionType()
581581
.withLeftParen(LeftParen)
582582
.withRightParen(RightParen)
583-
.addArgumentsMember(IntArg.withTrailingComma(Comma))
584-
.addArgumentsMember(IntArg)
583+
.addArgument(IntArg.withTrailingComma(Comma))
584+
.addArgument(IntArg)
585585
.withThrowsOrRethrowsKeyword(Rethrows)
586586
.withArrow(Arrow)
587587
.withReturnType(Int)
@@ -628,8 +628,8 @@ TEST(TypeSyntaxTests, FunctionTypeBuilderAPIs) {
628628

629629
Builder.useLeftParen(LeftParen)
630630
.useRightParen(RightParen)
631-
.addArgumentsMember(xArg)
632-
.addArgumentsMember(yArg)
631+
.addArgument(xArg)
632+
.addArgument(yArg)
633633
.useThrowsOrRethrowsKeyword(Throws)
634634
.useArrow(Arrow)
635635
.useReturnType(Int);
@@ -646,8 +646,8 @@ TEST(TypeSyntaxTests, FunctionTypeBuilderAPIs) {
646646
Int, None, None, None);
647647
Builder.useLeftParen(LeftParen)
648648
.useRightParen(RightParen)
649-
.addArgumentsMember(IntArg.withTrailingComma(Comma))
650-
.addArgumentsMember(IntArg)
649+
.addArgument(IntArg.withTrailingComma(Comma))
650+
.addArgument(IntArg)
651651
.useThrowsOrRethrowsKeyword(Rethrows)
652652
.useArrow(Arrow)
653653
.useReturnType(Int);

utils/gyb_syntax_support/AttributeNodes.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@
5656
'''),
5757
# TokenList to gather remaining tokens of invalid attributes
5858
# FIXME: Remove this recovery option entirely
59-
Child('TokenList', kind='TokenList', is_optional=True),
59+
Child('TokenList', kind='TokenList',
60+
collection_element_name='Token', is_optional=True),
6061
]),
6162

6263
# attribute-list -> attribute attribute-list?
@@ -72,7 +73,7 @@
7273
description='''
7374
A collection of arguments for the `@_specialize` attribute
7475
''',
75-
element='Syntax',
76+
element='Syntax', element_name='SpecializeAttribute',
7677
element_choices=[
7778
'LabeledSpecializeEntry',
7879
'GenericWhereClause',

utils/gyb_syntax_support/Child.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class Child(object):
1111
"""
1212
def __init__(self, name, kind, description=None, is_optional=False,
1313
token_choices=None, text_choices=None, node_choices=None,
14+
collection_element_name=None,
1415
classification=None, force_classification=False):
1516
"""
1617
If a classification is passed, it specifies the color identifiers in
@@ -25,6 +26,7 @@ def __init__(self, name, kind, description=None, is_optional=False,
2526
self.description = description
2627
self.swift_syntax_kind = lowercase_first_word(self.syntax_kind)
2728
self.type_name = kind_to_type(self.syntax_kind)
29+
self.collection_element_name = collection_element_name
2830
self.classification = classification_by_name(classification)
2931
self.force_classification = force_classification
3032

utils/gyb_syntax_support/CommonNodes.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@
4646
traits=['Braced', 'WithStatements'],
4747
children=[
4848
Child('LeftBrace', kind='LeftBraceToken'),
49-
Child('Statements', kind='CodeBlockItemList'),
49+
Child('Statements', kind='CodeBlockItemList',
50+
collection_element_name='Statement'),
5051
Child('RightBrace', kind='RightBraceToken'),
5152
]),
5253
]

0 commit comments

Comments
 (0)