Skip to content

Commit 45d3b25

Browse files
authored
Merge pull request #27564 from rintaro/tupleelement-functioncallargument
[Syntax] Consolidate 'TupleElement' and 'FunctionCallArgument' kinds
2 parents 64224ca + f42f60f commit 45d3b25

12 files changed

+138
-157
lines changed

lib/Parse/ParseDecl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1785,7 +1785,7 @@ ParserStatus Parser::parseDeclAttribute(DeclAttributes &Attributes, SourceLoc At
17851785
/*isPostfix=*/false, /*isExprBasic=*/true,
17861786
lParenLoc, args, argLabels, argLabelLocs,
17871787
rParenLoc, trailingClosure,
1788-
SyntaxKind::FunctionCallArgumentList);
1788+
SyntaxKind::TupleExprElementList);
17891789
assert(!trailingClosure && "Cannot parse a trailing closure here");
17901790
hasInitializer = true;
17911791
}

lib/Parse/ParseExpr.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,7 +1117,7 @@ Parser::parseExprPostfixSuffix(ParserResult<Expr> Result, bool isExprBasic,
11171117
tok::l_square, tok::r_square,
11181118
/*isPostfix=*/true, isExprBasic, lSquareLoc, indexArgs,
11191119
indexArgLabels, indexArgLabelLocs, rSquareLoc, trailingClosure,
1120-
SyntaxKind::FunctionCallArgumentList);
1120+
SyntaxKind::TupleExprElementList);
11211121
Result = makeParserResult(
11221122
status | Result,
11231123
SubscriptExpr::create(Context, Result.get(), lSquareLoc, indexArgs,
@@ -1140,7 +1140,7 @@ Parser::parseExprPostfixSuffix(ParserResult<Expr> Result, bool isExprBasic,
11401140

11411141
// Add dummy blank argument list to the call expression syntax.
11421142
SyntaxContext->addSyntax(
1143-
ParsedSyntaxRecorder::makeBlankFunctionCallArgumentList(
1143+
ParsedSyntaxRecorder::makeBlankTupleExprElementList(
11441144
Tok.getLoc(), *SyntaxContext));
11451145

11461146
ParserResult<Expr> closure =
@@ -1590,7 +1590,7 @@ ParserResult<Expr> Parser::parseExprPrimary(Diag<> ID, bool isExprBasic) {
15901590
argLabelLocs,
15911591
rParenLoc,
15921592
trailingClosure,
1593-
SyntaxKind::FunctionCallArgumentList);
1593+
SyntaxKind::TupleExprElementList);
15941594
SyntaxContext->createNodeInPlace(SyntaxKind::FunctionCallExpr);
15951595
return makeParserResult(
15961596
status,
@@ -1605,7 +1605,7 @@ ParserResult<Expr> Parser::parseExprPrimary(Diag<> ID, bool isExprBasic) {
16051605
if (Tok.is(tok::l_brace) && isValidTrailingClosure(isExprBasic, *this)) {
16061606
// Add dummy blank argument list to the call expression syntax.
16071607
SyntaxContext->addSyntax(
1608-
ParsedSyntaxRecorder::makeBlankFunctionCallArgumentList(
1608+
ParsedSyntaxRecorder::makeBlankTupleExprElementList(
16091609
Tok.getLoc(), *SyntaxContext));
16101610

16111611
ParserResult<Expr> closure =
@@ -1639,7 +1639,7 @@ ParserResult<Expr> Parser::parseExprPrimary(Diag<> ID, bool isExprBasic) {
16391639
// element without label.
16401640
ExprContext.setCreateSyntax(SyntaxKind::TupleExpr);
16411641
return parseExprList(tok::l_paren, tok::r_paren,
1642-
SyntaxKind::TupleElementList);
1642+
SyntaxKind::TupleExprElementList);
16431643

16441644
case tok::l_square:
16451645
return parseExprCollection();
@@ -3015,8 +3015,7 @@ ParserStatus Parser::parseExprList(tok leftTok, tok rightTok,
30153015
SubExpr = new(Context) UnresolvedDeclRefExpr(OperName,
30163016
DeclRefKind::Ordinary,
30173017
DeclNameLoc(Loc));
3018-
} else if (Kind == SyntaxKind::FunctionCallArgumentList &&
3019-
Tok.is(tok::code_complete)) {
3018+
} else if (isPostfix && Tok.is(tok::code_complete)) {
30203019
// Handle call arguments specially because it may need argument labels.
30213020
auto CCExpr = new (Context) CodeCompletionExpr(Tok.getLoc());
30223021
if (CodeCompletion)
@@ -3131,7 +3130,7 @@ Parser::parseExprObjectLiteral(ObjectLiteralExpr::LiteralKind LitKind,
31313130
argLabelLocs,
31323131
rParenLoc,
31333132
trailingClosure,
3134-
SyntaxKind::FunctionCallArgumentList);
3133+
SyntaxKind::TupleExprElementList);
31353134
if (status.hasCodeCompletion())
31363135
return makeParserCodeCompletionResult<Expr>();
31373136
if (status.isError())
@@ -3170,9 +3169,9 @@ ParserResult<Expr> Parser::parseExprPoundUnknown(SourceLoc LSquareLoc) {
31703169
// Parse arguments.
31713170
ParserStatus status =
31723171
parseExprList(tok::l_paren, tok::r_paren,
3173-
/*isPostfix=*/false, /*isExprBasic*/ false, LParenLoc,
3172+
/*isPostfix=*/true, /*isExprBasic*/ true, LParenLoc,
31743173
args, argLabels, argLabelLocs, RParenLoc, trailingClosure,
3175-
SyntaxKind::FunctionCallArgumentList);
3174+
SyntaxKind::TupleExprElementList);
31763175
if (status.hasCodeCompletion())
31773176
return makeParserCodeCompletionResult<Expr>();
31783177
if (status.isError())
@@ -3288,7 +3287,7 @@ Parser::parseExprCallSuffix(ParserResult<Expr> fn, bool isExprBasic) {
32883287
argLabelLocs,
32893288
rParenLoc,
32903289
trailingClosure,
3291-
SyntaxKind::FunctionCallArgumentList);
3290+
SyntaxKind::TupleExprElementList);
32923291

32933292
// Form the call.
32943293
return makeParserResult(

lib/Parse/Parser.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1299,14 +1299,12 @@ SourceLoc Parser::getErrorOrMissingLoc() const {
12991299

13001300
static SyntaxKind getListElementKind(SyntaxKind ListKind) {
13011301
switch (ListKind) {
1302-
case SyntaxKind::FunctionCallArgumentList:
1303-
return SyntaxKind::FunctionCallArgument;
1302+
case SyntaxKind::TupleExprElementList:
1303+
return SyntaxKind::TupleExprElement;
13041304
case SyntaxKind::ArrayElementList:
13051305
return SyntaxKind::ArrayElement;
13061306
case SyntaxKind::DictionaryElementList:
13071307
return SyntaxKind::DictionaryElement;
1308-
case SyntaxKind::TupleElementList:
1309-
return SyntaxKind::TupleElement;
13101308
case SyntaxKind::FunctionParameterList:
13111309
return SyntaxKind::FunctionParameter;
13121310
case SyntaxKind::TupleTypeElementList:

test/Syntax/Outputs/round_trip_module_interface.swiftinterface.withkinds

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ public </DeclModifier>class Foo<TypeInheritanceClause>: <InheritedType><SimpleTy
2020
public </DeclModifier>subscript<ParameterClause>(<FunctionParameter>k: <SimpleTypeIdentifier>Int </SimpleTypeIdentifier><InitializerClause>= <SuperRefExpr>super</SuperRefExpr></InitializerClause></FunctionParameter>) </ParameterClause><ReturnClause>-> <SimpleTypeIdentifier>Int </SimpleTypeIdentifier></ReturnClause><AccessorBlock>{ <AccessorDecl>get </AccessorDecl>}</AccessorBlock></SubscriptDecl></MemberDeclListItem><MemberDeclListItem><FunctionDecl><DeclModifier>
2121
public </DeclModifier>func foo<FunctionSignature><ParameterClause>(<FunctionParameter>x: <SimpleTypeIdentifier>Int </SimpleTypeIdentifier><InitializerClause>= <SuperRefExpr>super</SuperRefExpr></InitializerClause></FunctionParameter>)</ParameterClause></FunctionSignature></FunctionDecl></MemberDeclListItem><MemberDeclListItem><FunctionDecl><DeclModifier>
2222
public </DeclModifier>func foo<FunctionSignature><ParameterClause>(<FunctionParameter>y: <SimpleTypeIdentifier>Int </SimpleTypeIdentifier><InitializerClause>= <MemberAccessExpr><SuperRefExpr>super</SuperRefExpr>.init</MemberAccessExpr></InitializerClause></FunctionParameter>)</ParameterClause></FunctionSignature></FunctionDecl></MemberDeclListItem><MemberDeclListItem><FunctionDecl><DeclModifier>
23-
public </DeclModifier>func foo<FunctionSignature><ParameterClause>(<FunctionParameter>z: <SimpleTypeIdentifier>Int </SimpleTypeIdentifier><InitializerClause>= <SubscriptExpr><SuperRefExpr>super</SuperRefExpr>[<FunctionCallArgument><IntegerLiteralExpr>1</IntegerLiteralExpr></FunctionCallArgument>]</SubscriptExpr></InitializerClause></FunctionParameter>)</ParameterClause></FunctionSignature></FunctionDecl></MemberDeclListItem>
23+
public </DeclModifier>func foo<FunctionSignature><ParameterClause>(<FunctionParameter>z: <SimpleTypeIdentifier>Int </SimpleTypeIdentifier><InitializerClause>= <SubscriptExpr><SuperRefExpr>super</SuperRefExpr>[<TupleExprElement><IntegerLiteralExpr>1</IntegerLiteralExpr></TupleExprElement>]</SubscriptExpr></InitializerClause></FunctionParameter>)</ParameterClause></FunctionSignature></FunctionDecl></MemberDeclListItem>
2424
}</MemberDeclBlock></ClassDecl>

0 commit comments

Comments
 (0)