Skip to content

Commit 03373c9

Browse files
authored
Merge pull request #36236 from ahoppen/pr/re-enable-unknown-syntax-tests
[libSyntax] Re-enable the UnknownSyntaxTests
2 parents d35017b + 3927c76 commit 03373c9

File tree

3 files changed

+47
-54
lines changed

3 files changed

+47
-54
lines changed

unittests/Syntax/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
add_swift_unittest(SwiftSyntaxTests
22
DeclSyntaxTests.cpp
33
ExprSyntaxTests.cpp
4-
GenericSyntaxTests.cpp
54
StmtSyntaxTests.cpp
65
SyntaxCollectionTests.cpp
76
TriviaTests.cpp

unittests/Syntax/GenericSyntaxTests.cpp

Whitespace-only changes.

unittests/Syntax/UnknownSyntaxTests.cpp

Lines changed: 47 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -9,45 +9,46 @@ using llvm::SmallString;
99
using namespace swift;
1010
using namespace swift::syntax;
1111

12-
/*
13-
SymbolicReferenceExprSyntax getCannedSymbolicRef() {
12+
13+
SymbolicReferenceExprSyntax getCannedSymbolicRef(const RC<SyntaxArena> &Arena) {
1414
// First, make a symbolic reference to an 'Array<Int>'
15-
auto Array = SyntaxFactory::makeIdentifier("Array", {}, {});
16-
auto Int = SyntaxFactory::makeIdentifier("Int", {}, {});
17-
auto IntType = SyntaxFactory::makeSimpleTypeIdentifier(Int, None);
18-
auto IntArg = SyntaxFactory::makeGenericArgument(IntType, None);
19-
GenericArgumentClauseSyntaxBuilder ArgBuilder;
15+
auto Array = SyntaxFactory::makeIdentifier("Array", {}, {}, Arena);
16+
auto Int = SyntaxFactory::makeIdentifier("Int", {}, {}, Arena);
17+
auto IntType = SyntaxFactory::makeSimpleTypeIdentifier(Int, None, Arena);
18+
auto IntArg = SyntaxFactory::makeGenericArgument(IntType, None, Arena);
19+
GenericArgumentClauseSyntaxBuilder ArgBuilder(Arena);
2020
ArgBuilder
21-
.useLeftAngleBracket(SyntaxFactory::makeLeftAngleToken({}, {}))
22-
.useRightAngleBracket(SyntaxFactory::makeRightAngleToken({}, {}))
23-
.addArgumentsMember(IntArg);
21+
.useLeftAngleBracket(SyntaxFactory::makeLeftAngleToken({}, {}, Arena))
22+
.useRightAngleBracket(SyntaxFactory::makeRightAngleToken({}, {}, Arena))
23+
.addArgument(IntArg);
2424

25-
return SyntaxFactory::makeSymbolicReferenceExpr(Array, ArgBuilder.build());
25+
return SyntaxFactory::makeSymbolicReferenceExpr(Array, ArgBuilder.build(), Arena);
2626
}
2727

28-
FunctionCallExprSyntax getCannedFunctionCall() {
29-
auto LParen = SyntaxFactory::makeLeftParenToken({}, {});
30-
auto RParen = SyntaxFactory::makeRightParenToken({}, {});
28+
FunctionCallExprSyntax getCannedFunctionCall(const RC<SyntaxArena> &Arena) {
29+
auto LParen = SyntaxFactory::makeLeftParenToken({}, {}, Arena);
30+
auto RParen = SyntaxFactory::makeRightParenToken({}, {}, Arena);
3131

32-
auto Label = SyntaxFactory::makeIdentifier("elements", {}, {});
33-
auto Colon = SyntaxFactory::makeColonToken({}, Trivia::spaces(1));
34-
auto OneDigits = SyntaxFactory::makeIntegerLiteral("1", {}, {});
35-
auto NoSign = TokenSyntax::missingToken(tok::oper_prefix, "");
32+
auto Label = SyntaxFactory::makeIdentifier("elements", {}, {}, Arena);
33+
auto Colon = SyntaxFactory::makeColonToken({}, " ", Arena);
34+
auto OneDigits = SyntaxFactory::makeIntegerLiteral("1", {}, {}, Arena);
35+
auto NoSign = TokenSyntax::missingToken(tok::oper_prefix, "", Arena);
3636
auto One = SyntaxFactory::makePrefixOperatorExpr(NoSign,
37-
SyntaxFactory::makeIntegerLiteralExpr(OneDigits));
38-
auto NoComma = TokenSyntax::missingToken(tok::comma, ",");
37+
SyntaxFactory::makeIntegerLiteralExpr(OneDigits, Arena), Arena);
38+
auto NoComma = TokenSyntax::missingToken(tok::comma, ",", Arena);
3939

4040
auto Arg = SyntaxFactory::makeTupleExprElement(Label, Colon, One,
41-
NoComma);
42-
auto Args = SyntaxFactory::makeTupleExprElementList({ Arg });
41+
NoComma, Arena);
42+
auto Args = SyntaxFactory::makeTupleExprElementList({ Arg }, Arena);
4343

44-
return SyntaxFactory::makeFunctionCallExpr(getCannedSymbolicRef(), LParen,
45-
Args, RParen, None);
44+
return SyntaxFactory::makeFunctionCallExpr(getCannedSymbolicRef(Arena), LParen,
45+
Args, RParen, None, None, Arena);
4646
}
4747

4848
TEST(UnknownSyntaxTests, UnknownSyntaxMakeAPIs) {
49+
RC<SyntaxArena> Arena = SyntaxArena::make();
4950
{
50-
auto SymbolicRef = getCannedSymbolicRef();
51+
auto SymbolicRef = getCannedSymbolicRef(Arena);
5152

5253
// Print the known symbolic reference. It should print as "Array<Int>".
5354
SmallString<48> KnownScratch;
@@ -57,7 +58,7 @@ TEST(UnknownSyntaxTests, UnknownSyntaxMakeAPIs) {
5758

5859
// Wrap that symbolic reference as an UnknownSyntax. This has the same
5960
// RawSyntax layout but with the Unknown Kind.
60-
auto Unknown = make<UnknownSyntax>(SymbolicRef.getRaw());
61+
auto Unknown = makeRoot<UnknownSyntax>(SymbolicRef.getRaw());
6162

6263
// Print the unknown syntax. It should also print as "Array<Int>".
6364
SmallString<48> UnknownScratch;
@@ -69,7 +70,8 @@ TEST(UnknownSyntaxTests, UnknownSyntaxMakeAPIs) {
6970
}
7071

7172
TEST(UnknownSyntaxTests, UnknownSyntaxGetAPIs) {
72-
auto Call = getCannedFunctionCall();
73+
RC<SyntaxArena> Arena = SyntaxArena::make();
74+
auto Call = getCannedFunctionCall(Arena);
7375

7476
// Function call child 0 -> layout child 0 -> called expression
7577
{
@@ -82,23 +84,23 @@ TEST(UnknownSyntaxTests, UnknownSyntaxGetAPIs) {
8284

8385
// Wrap that call as an UnknownExprSyntax. This has the same
8486
// RawSyntax layout but with the UnknownExpr Kind.;
85-
auto Unknown = make<UnknownExprSyntax>(Call.getRaw());
87+
auto Unknown = makeRoot<UnknownExprSyntax>(Call.getRaw());
8688

87-
ASSERT_EQ(Unknown.getNumChildren(), size_t(3));
89+
ASSERT_EQ(Unknown.getNumChildren(), size_t(6));
8890

8991
// Get the second child from the unknown call, which is the argument list.
9092
// This should print the same as the known one: "elements: 1"
9193
SmallString<48> UnknownScratch;
9294
llvm::raw_svector_ostream UnknownOS(UnknownScratch);
9395
auto ExprGottenFromUnknown = Unknown.getChild(0)
94-
.castTo<SymbolicReferenceExprSyntax>();
96+
->castTo<SymbolicReferenceExprSyntax>();
9597
ExprGottenFromUnknown.print(UnknownOS);
9698

9799
ASSERT_EQ(KnownOS.str().str(), UnknownOS.str().str());
98100

99101
auto ExprGottenFromUnknown2 = Unknown.getChild(0);
100102
ASSERT_TRUE(ExprGottenFromUnknown
101-
.hasSameIdentityAs(ExprGottenFromUnknown2));
103+
.hasSameIdentityAs(*ExprGottenFromUnknown2));
102104
}
103105

104106
// Function call child 1 -> layout child 2 -> function call argument list
@@ -112,44 +114,45 @@ TEST(UnknownSyntaxTests, UnknownSyntaxGetAPIs) {
112114

113115
// Wrap that symbolic reference as an UnknownSyntax. This has the same
114116
// RawSyntax layout but with the Unknown Kind.
115-
auto Unknown = make<UnknownSyntax>(Call.getRaw());
117+
auto Unknown = makeRoot<UnknownSyntax>(Call.getRaw());
116118

117-
ASSERT_EQ(Unknown.getNumChildren(), size_t(3));
119+
ASSERT_EQ(Unknown.getNumChildren(), size_t(6));
118120

119-
// Get the second child from the unknown call, which is the argument list.
121+
// Get the third child from the unknown call, which is the argument list.
120122
// This should print the same as the known one: "elements: 1"
121123
SmallString<48> UnknownScratch;
122124
llvm::raw_svector_ostream UnknownOS(UnknownScratch);
123-
auto ArgsGottenFromUnknown = Unknown.getChild(1)
124-
.castTo<TupleExprElementListSyntax>();
125+
auto ArgsGottenFromUnknown = Unknown.getChild(2)
126+
->castTo<TupleExprElementListSyntax>();
125127
ArgsGottenFromUnknown.print(UnknownOS);
126128

127129
ASSERT_EQ(KnownOS.str().str(), UnknownOS.str().str());
128130

129-
auto ArgsGottenFromUnknown2 = Unknown.getChild(1);
131+
auto ArgsGottenFromUnknown2 = Unknown.getChild(2);
130132
ASSERT_TRUE(ArgsGottenFromUnknown
131-
.hasSameIdentityAs(ArgsGottenFromUnknown2));
133+
.hasSameIdentityAs(*ArgsGottenFromUnknown2));
132134
}
133135
}
134136

135137
TEST(UnknownSyntaxTests, EmbedUnknownExpr) {
136-
auto SymbolicRef = getCannedSymbolicRef();
137-
auto LParen = SyntaxFactory::makeLeftParenToken({}, {});
138-
auto RParen = SyntaxFactory::makeRightParenToken({}, {});
139-
auto EmptyArgs = SyntaxFactory::makeBlankTupleExprElementList();
138+
RC<SyntaxArena> Arena = SyntaxArena::make();
139+
auto SymbolicRef = getCannedSymbolicRef(Arena);
140+
auto LParen = SyntaxFactory::makeLeftParenToken({}, {}, Arena);
141+
auto RParen = SyntaxFactory::makeRightParenToken({}, {}, Arena);
142+
auto EmptyArgs = SyntaxFactory::makeBlankTupleExprElementList(Arena);
140143

141144
SmallString<48> KnownScratch;
142145
llvm::raw_svector_ostream KnownOS(KnownScratch);
143146
auto CallWithKnownExpr = SyntaxFactory::makeFunctionCallExpr(SymbolicRef,
144147
LParen,
145148
EmptyArgs,
146-
RParen, None);
149+
RParen, None, None, Arena);
147150
CallWithKnownExpr.print(KnownOS);
148151

149152
// Let's make a function call expression where the called expression is
150153
// actually unknown. It should print the same and have the same structure
151154
// as one with a known called expression.
152-
auto UnknownSymbolicRef = make<UnknownExprSyntax>(SymbolicRef.getRaw())
155+
auto UnknownSymbolicRef = makeRoot<UnknownExprSyntax>(SymbolicRef.getRaw())
153156
.castTo<ExprSyntax>();
154157

155158
SmallString<48> UnknownScratch;
@@ -163,12 +166,3 @@ TEST(UnknownSyntaxTests, EmbedUnknownExpr) {
163166
ASSERT_EQ(KnownOS.str().str(), UnknownOS.str().str());
164167
}
165168

166-
TEST(UnknownSyntaxTests, EmbedUnknownDecl) {
167-
// TODO
168-
}
169-
170-
TEST(UnknownSyntaxTests, EmbedUnknownStmt) {
171-
// TODO
172-
}
173-
174-
*/

0 commit comments

Comments
 (0)