Skip to content

Commit f3e5396

Browse files
authored
Merge pull request swiftlang#12811 from nkcsgexi/lib-syntax-gyb-blank-collection
2 parents ad17a6c + 9272e0d commit f3e5396

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

include/swift/Syntax/SyntaxFactory.h.gyb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ struct SyntaxFactory {
5656

5757
static SyntaxKind getUnknownKind(SyntaxKind Kind);
5858

59+
static Syntax
60+
makeBlankCollectionSyntax(SyntaxKind Kind);
61+
5962
% for node in SYNTAX_NODES:
6063
% if node.children:
6164
% child_params = []

lib/Syntax/SyntaxFactory.cpp.gyb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,18 @@ SyntaxFactory::makeUnknownSyntax(llvm::ArrayRef<TokenSyntax> Tokens) {
5757
return make<UnknownSyntax>(Raw);
5858
}
5959

60+
Syntax SyntaxFactory::makeBlankCollectionSyntax(SyntaxKind Kind) {
61+
switch(Kind) {
62+
% for node in SYNTAX_NODES:
63+
% if node.is_syntax_collection():
64+
case SyntaxKind::${node.syntax_kind}: return makeBlank${node.syntax_kind}();
65+
% end
66+
% end
67+
default: break;
68+
}
69+
llvm_unreachable("not collection kind.");
70+
}
71+
6072
Optional<Syntax>
6173
SyntaxFactory::createSyntax(SyntaxKind Kind, llvm::ArrayRef<Syntax> Elements) {
6274
switch(Kind) {

lib/Syntax/SyntaxParsingContext.cpp

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -317,22 +317,12 @@ void SyntaxParsingContextChild::makeNodeWhole(SyntaxKind Kind) {
317317
ContextData.createWhole(Kind, AllNodes);
318318
break;
319319
}
320+
case SyntaxKind::StmtList:
320321
case SyntaxKind::FunctionCallArgumentList: {
321322
if (AllNodes.empty()) {
322323
// Create an empty argument list if no arguments are in the context.
323324
RawSyntaxInfo Empty(SyntaxFactory::
324-
makeBlankFunctionCallArgumentList().getRaw());
325-
Empty.setBeforeLoc(EndLoc);
326-
ContextData.addPendingSyntax(Empty);
327-
} else {
328-
ContextData.createWhole(Kind, AllNodes);
329-
}
330-
break;
331-
}
332-
case SyntaxKind::StmtList: {
333-
if (AllNodes.empty()) {
334-
// Create an empty statement list if no statement is in the context.
335-
RawSyntaxInfo Empty(SyntaxFactory::makeBlankStmtList().getRaw());
325+
makeBlankCollectionSyntax(Kind).getRaw());
336326
Empty.setBeforeLoc(EndLoc);
337327
ContextData.addPendingSyntax(Empty);
338328
} else {

0 commit comments

Comments
 (0)