Skip to content

Commit 709aee7

Browse files
authored
Merge pull request swiftlang#21651 from compnerd/parse-ordering
Parse: explicitly state ordering of parsing (NFC)
2 parents b3d6473 + 8738b80 commit 709aee7

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

lib/Parse/ParseType.cpp

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,13 @@ ParserResult<TypeRepr> Parser::parseTypeSimple(Diag<> MessageID,
219219
if (!SyntaxContext->isEnabled())
220220
return;
221221
MetatypeTypeSyntaxBuilder Builder(Context.getSyntaxArena());
222+
auto TypeOrProtocol = SyntaxContext->popToken();
223+
auto Period = SyntaxContext->popToken();
224+
auto BaseType = SyntaxContext->popIf<TypeSyntax>().getValue();
222225
Builder
223-
.useTypeOrProtocol(SyntaxContext->popToken())
224-
.usePeriod(SyntaxContext->popToken())
225-
.useBaseType(SyntaxContext->popIf<TypeSyntax>().getValue());
226+
.useTypeOrProtocol(TypeOrProtocol)
227+
.usePeriod(Period)
228+
.useBaseType(BaseType);
226229
SyntaxContext->addSyntax(Builder.build());
227230
};
228231

@@ -433,10 +436,13 @@ ParserResult<TypeRepr> Parser::parseType(Diag<> MessageID,
433436
auto InputNode = SyntaxContext->popIf<TypeSyntax>().getValue();
434437
if (auto TupleTypeNode = InputNode.getAs<TupleTypeSyntax>()) {
435438
// Decompose TupleTypeSyntax and repack into FunctionType.
439+
auto LeftParen = TupleTypeNode->getLeftParen();
440+
auto Arguments = TupleTypeNode->getElements();
441+
auto RightParen = TupleTypeNode->getRightParen();
436442
Builder
437-
.useLeftParen(TupleTypeNode->getLeftParen())
438-
.useArguments(TupleTypeNode->getElements())
439-
.useRightParen(TupleTypeNode->getRightParen());
443+
.useLeftParen(LeftParen)
444+
.useArguments(Arguments)
445+
.useRightParen(RightParen);
440446
} else {
441447
Builder.addTupleTypeElement(SyntaxFactory::makeTupleTypeElement(
442448
InputNode, /*TrailingComma=*/None, Context.getSyntaxArena()));
@@ -705,9 +711,11 @@ Parser::parseTypeSimpleOrComposition(Diag<> MessageID,
705711

706712
if (SyntaxContext->isEnabled() && Status.isSuccess()) {
707713
CompositionTypeElementSyntaxBuilder Builder(Context.getSyntaxArena());
714+
auto Ampersand = SyntaxContext->popToken();
715+
auto Type = SyntaxContext->popIf<TypeSyntax>().getValue();
708716
Builder
709-
.useAmpersand(SyntaxContext->popToken())
710-
.useType(SyntaxContext->popIf<TypeSyntax>().getValue());
717+
.useAmpersand(Ampersand)
718+
.useType(Type);
711719
SyntaxContext->addSyntax(Builder.build());
712720
}
713721

@@ -1114,23 +1122,31 @@ SyntaxParserResult<TypeSyntax, TypeRepr> Parser::parseTypeCollection() {
11141122
DictionaryTypeRepr(firstTy.get(), secondTy.get(), colonLoc, brackets);
11151123
if (SyntaxContext->isEnabled()) {
11161124
DictionaryTypeSyntaxBuilder Builder(Context.getSyntaxArena());
1125+
auto RightSquareBracket = SyntaxContext->popToken();
1126+
auto ValueType = SyntaxContext->popIf<TypeSyntax>().getValue();
1127+
auto Colon = SyntaxContext->popToken();
1128+
auto KeyType = SyntaxContext->popIf<TypeSyntax>().getValue();
1129+
auto LeftSquareBracket = SyntaxContext->popToken();
11171130
Builder
1118-
.useRightSquareBracket(SyntaxContext->popToken())
1119-
.useValueType(SyntaxContext->popIf<TypeSyntax>().getValue())
1120-
.useColon(SyntaxContext->popToken())
1121-
.useKeyType(SyntaxContext->popIf<TypeSyntax>().getValue())
1122-
.useLeftSquareBracket(SyntaxContext->popToken());
1131+
.useRightSquareBracket(RightSquareBracket)
1132+
.useValueType(ValueType)
1133+
.useColon(Colon)
1134+
.useKeyType(KeyType)
1135+
.useLeftSquareBracket(LeftSquareBracket);
11231136
SyntaxNode.emplace(Builder.build());
11241137
}
11251138
} else {
11261139
// Form the array type.
11271140
TyR = new (Context) ArrayTypeRepr(firstTy.get(), brackets);
11281141
if (SyntaxContext->isEnabled()) {
11291142
ArrayTypeSyntaxBuilder Builder(Context.getSyntaxArena());
1143+
auto RightSquareBracket = SyntaxContext->popToken();
1144+
auto ElementType = SyntaxContext->popIf<TypeSyntax>().getValue();
1145+
auto LeftSquareBracket = SyntaxContext->popToken();
11301146
Builder
1131-
.useRightSquareBracket(SyntaxContext->popToken())
1132-
.useElementType(SyntaxContext->popIf<TypeSyntax>().getValue())
1133-
.useLeftSquareBracket(SyntaxContext->popToken());
1147+
.useRightSquareBracket(RightSquareBracket)
1148+
.useElementType(ElementType)
1149+
.useLeftSquareBracket(LeftSquareBracket);
11341150
SyntaxNode.emplace(Builder.build());
11351151
}
11361152
}
@@ -1212,9 +1228,11 @@ Parser::parseTypeImplicitlyUnwrappedOptional(TypeRepr *base) {
12121228
if (SyntaxContext->isEnabled()) {
12131229
ImplicitlyUnwrappedOptionalTypeSyntaxBuilder Builder(
12141230
Context.getSyntaxArena());
1231+
auto ExclamationMark = SyntaxContext->popToken();
1232+
auto WrappedType = SyntaxContext->popIf<TypeSyntax>().getValue();
12151233
Builder
1216-
.useExclamationMark(SyntaxContext->popToken())
1217-
.useWrappedType(SyntaxContext->popIf<TypeSyntax>().getValue());
1234+
.useExclamationMark(ExclamationMark)
1235+
.useWrappedType(WrappedType);
12181236
SyntaxNode.emplace(Builder.build());
12191237
}
12201238
return makeSyntaxResult(SyntaxNode, TyR);

0 commit comments

Comments
 (0)