@@ -9,45 +9,46 @@ using llvm::SmallString;
9
9
using namespace swift ;
10
10
using namespace swift ::syntax;
11
11
12
- /*
13
- SymbolicReferenceExprSyntax getCannedSymbolicRef() {
12
+
13
+ SymbolicReferenceExprSyntax getCannedSymbolicRef (const RC<SyntaxArena> &Arena ) {
14
14
// 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) ;
20
20
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);
24
24
25
- return SyntaxFactory::makeSymbolicReferenceExpr(Array, ArgBuilder.build());
25
+ return SyntaxFactory::makeSymbolicReferenceExpr (Array, ArgBuilder.build (), Arena );
26
26
}
27
27
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 );
31
31
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 );
36
36
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 );
39
39
40
40
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 );
43
43
44
- return SyntaxFactory::makeFunctionCallExpr(getCannedSymbolicRef(), LParen,
45
- Args, RParen, None);
44
+ return SyntaxFactory::makeFunctionCallExpr (getCannedSymbolicRef (Arena ), LParen,
45
+ Args, RParen, None, None, Arena );
46
46
}
47
47
48
48
TEST (UnknownSyntaxTests, UnknownSyntaxMakeAPIs) {
49
+ RC<SyntaxArena> Arena = SyntaxArena::make ();
49
50
{
50
- auto SymbolicRef = getCannedSymbolicRef();
51
+ auto SymbolicRef = getCannedSymbolicRef (Arena );
51
52
52
53
// Print the known symbolic reference. It should print as "Array<Int>".
53
54
SmallString<48 > KnownScratch;
@@ -57,7 +58,7 @@ TEST(UnknownSyntaxTests, UnknownSyntaxMakeAPIs) {
57
58
58
59
// Wrap that symbolic reference as an UnknownSyntax. This has the same
59
60
// RawSyntax layout but with the Unknown Kind.
60
- auto Unknown = make <UnknownSyntax>(SymbolicRef.getRaw());
61
+ auto Unknown = makeRoot <UnknownSyntax>(SymbolicRef.getRaw ());
61
62
62
63
// Print the unknown syntax. It should also print as "Array<Int>".
63
64
SmallString<48 > UnknownScratch;
@@ -69,7 +70,8 @@ TEST(UnknownSyntaxTests, UnknownSyntaxMakeAPIs) {
69
70
}
70
71
71
72
TEST (UnknownSyntaxTests, UnknownSyntaxGetAPIs) {
72
- auto Call = getCannedFunctionCall();
73
+ RC<SyntaxArena> Arena = SyntaxArena::make ();
74
+ auto Call = getCannedFunctionCall (Arena);
73
75
74
76
// Function call child 0 -> layout child 0 -> called expression
75
77
{
@@ -82,23 +84,23 @@ TEST(UnknownSyntaxTests, UnknownSyntaxGetAPIs) {
82
84
83
85
// Wrap that call as an UnknownExprSyntax. This has the same
84
86
// RawSyntax layout but with the UnknownExpr Kind.;
85
- auto Unknown = make <UnknownExprSyntax>(Call.getRaw());
87
+ auto Unknown = makeRoot <UnknownExprSyntax>(Call.getRaw ());
86
88
87
- ASSERT_EQ(Unknown.getNumChildren(), size_t(3 ));
89
+ ASSERT_EQ (Unknown.getNumChildren (), size_t (6 ));
88
90
89
91
// Get the second child from the unknown call, which is the argument list.
90
92
// This should print the same as the known one: "elements: 1"
91
93
SmallString<48 > UnknownScratch;
92
94
llvm::raw_svector_ostream UnknownOS (UnknownScratch);
93
95
auto ExprGottenFromUnknown = Unknown.getChild (0 )
94
- . castTo<SymbolicReferenceExprSyntax>();
96
+ -> castTo <SymbolicReferenceExprSyntax>();
95
97
ExprGottenFromUnknown.print (UnknownOS);
96
98
97
99
ASSERT_EQ (KnownOS.str ().str (), UnknownOS.str ().str ());
98
100
99
101
auto ExprGottenFromUnknown2 = Unknown.getChild (0 );
100
102
ASSERT_TRUE (ExprGottenFromUnknown
101
- .hasSameIdentityAs(ExprGottenFromUnknown2));
103
+ .hasSameIdentityAs (* ExprGottenFromUnknown2));
102
104
}
103
105
104
106
// Function call child 1 -> layout child 2 -> function call argument list
@@ -112,44 +114,45 @@ TEST(UnknownSyntaxTests, UnknownSyntaxGetAPIs) {
112
114
113
115
// Wrap that symbolic reference as an UnknownSyntax. This has the same
114
116
// RawSyntax layout but with the Unknown Kind.
115
- auto Unknown = make <UnknownSyntax>(Call.getRaw());
117
+ auto Unknown = makeRoot <UnknownSyntax>(Call.getRaw ());
116
118
117
- ASSERT_EQ(Unknown.getNumChildren(), size_t(3 ));
119
+ ASSERT_EQ (Unknown.getNumChildren (), size_t (6 ));
118
120
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.
120
122
// This should print the same as the known one: "elements: 1"
121
123
SmallString<48 > UnknownScratch;
122
124
llvm::raw_svector_ostream UnknownOS (UnknownScratch);
123
- auto ArgsGottenFromUnknown = Unknown.getChild(1 )
124
- . castTo<TupleExprElementListSyntax>();
125
+ auto ArgsGottenFromUnknown = Unknown.getChild (2 )
126
+ -> castTo <TupleExprElementListSyntax>();
125
127
ArgsGottenFromUnknown.print (UnknownOS);
126
128
127
129
ASSERT_EQ (KnownOS.str ().str (), UnknownOS.str ().str ());
128
130
129
- auto ArgsGottenFromUnknown2 = Unknown.getChild(1 );
131
+ auto ArgsGottenFromUnknown2 = Unknown.getChild (2 );
130
132
ASSERT_TRUE (ArgsGottenFromUnknown
131
- .hasSameIdentityAs(ArgsGottenFromUnknown2));
133
+ .hasSameIdentityAs (* ArgsGottenFromUnknown2));
132
134
}
133
135
}
134
136
135
137
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);
140
143
141
144
SmallString<48 > KnownScratch;
142
145
llvm::raw_svector_ostream KnownOS (KnownScratch);
143
146
auto CallWithKnownExpr = SyntaxFactory::makeFunctionCallExpr (SymbolicRef,
144
147
LParen,
145
148
EmptyArgs,
146
- RParen, None);
149
+ RParen, None, None, Arena );
147
150
CallWithKnownExpr.print (KnownOS);
148
151
149
152
// Let's make a function call expression where the called expression is
150
153
// actually unknown. It should print the same and have the same structure
151
154
// as one with a known called expression.
152
- auto UnknownSymbolicRef = make <UnknownExprSyntax>(SymbolicRef.getRaw())
155
+ auto UnknownSymbolicRef = makeRoot <UnknownExprSyntax>(SymbolicRef.getRaw ())
153
156
.castTo <ExprSyntax>();
154
157
155
158
SmallString<48 > UnknownScratch;
@@ -163,12 +166,3 @@ TEST(UnknownSyntaxTests, EmbedUnknownExpr) {
163
166
ASSERT_EQ (KnownOS.str ().str (), UnknownOS.str ().str ());
164
167
}
165
168
166
- TEST(UnknownSyntaxTests, EmbedUnknownDecl) {
167
- // TODO
168
- }
169
-
170
- TEST(UnknownSyntaxTests, EmbedUnknownStmt) {
171
- // TODO
172
- }
173
-
174
- */
0 commit comments