Skip to content

Commit 7be84c1

Browse files
committed
[libSyntax] Adjust SyntaxTests that were potentially creating SyntaxArena reference cycles
1 parent 4bda6c1 commit 7be84c1

File tree

2 files changed

+37
-46
lines changed

2 files changed

+37
-46
lines changed

unittests/Syntax/DeclSyntaxTests.cpp

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ using namespace swift::syntax;
1212

1313
#pragma mark - declaration-modifier
1414

15-
DeclModifierSyntax getCannedDeclModifier() {
16-
RC<SyntaxArena> Arena = SyntaxArena::make();
15+
DeclModifierSyntax getCannedDeclModifier(const RC<SyntaxArena> &Arena) {
1716
auto Private = SyntaxFactory::makeIdentifier("private", "", "", Arena);
1817
auto LParen = SyntaxFactory::makeLeftParenToken("", "", Arena);
1918
auto Set = SyntaxFactory::makeIdentifier("set", "", "", Arena);
@@ -22,8 +21,8 @@ DeclModifierSyntax getCannedDeclModifier() {
2221
}
2322

2423
TEST(DeclSyntaxTests, DeclModifierMakeAPIs) {
24+
RC<SyntaxArena> Arena = SyntaxArena::make();
2525
{
26-
RC<SyntaxArena> Arena = SyntaxArena::make();
2726
SmallString<1> Scratch;
2827
llvm::raw_svector_ostream OS(Scratch);
2928
SyntaxFactory::makeBlankDeclModifier(Arena).print(OS);
@@ -32,7 +31,7 @@ TEST(DeclSyntaxTests, DeclModifierMakeAPIs) {
3231
{
3332
SmallString<24> Scratch;
3433
llvm::raw_svector_ostream OS(Scratch);
35-
getCannedDeclModifier().print(OS);
34+
getCannedDeclModifier(Arena).print(OS);
3635
ASSERT_EQ(OS.str().str(), "private(set)");
3736
}
3837
}
@@ -220,8 +219,7 @@ TEST(DeclSyntaxTests, TypealiasBuilderAPIs) {
220219

221220
#pragma mark - parameter
222221

223-
FunctionParameterSyntax getCannedFunctionParameter() {
224-
RC<SyntaxArena> Arena = SyntaxArena::make();
222+
FunctionParameterSyntax getCannedFunctionParameter(const RC<SyntaxArena> &Arena) {
225223
auto ExternalName = SyntaxFactory::makeIdentifier("with", "", " ", Arena);
226224
auto LocalName = SyntaxFactory::makeIdentifier("radius", "", "", Arena);
227225
auto Colon = SyntaxFactory::makeColonToken("", " ", Arena);
@@ -246,7 +244,7 @@ TEST(DeclSyntaxTests, FunctionParameterMakeAPIs) {
246244
{
247245
SmallString<48> Scratch;
248246
llvm::raw_svector_ostream OS(Scratch);
249-
getCannedFunctionParameter().print(OS);
247+
getCannedFunctionParameter(Arena).print(OS);
250248
ASSERT_EQ(OS.str().str(), "with radius: Int = -1, ");
251249
}
252250
{
@@ -319,7 +317,7 @@ TEST(DeclSyntaxTests, FunctionParameterWithAPIs) {
319317
{
320318
SmallString<48> Scratch;
321319
llvm::raw_svector_ostream OS(Scratch);
322-
getCannedFunctionParameter()
320+
getCannedFunctionParameter(Arena)
323321
.withFirstName(ExternalName)
324322
.withSecondName(LocalName)
325323
.withColon(Colon)
@@ -332,7 +330,7 @@ TEST(DeclSyntaxTests, FunctionParameterWithAPIs) {
332330
{
333331
SmallString<48> Scratch;
334332
llvm::raw_svector_ostream OS(Scratch);
335-
getCannedFunctionParameter()
333+
getCannedFunctionParameter(Arena)
336334
.withType(llvm::None)
337335
.withDefaultArgument(llvm::None)
338336
.print(OS);
@@ -352,7 +350,7 @@ TEST(DeclSyntaxTests, FunctionParameterWithEllipsis) {
352350
{
353351
SmallString<48> Scratch;
354352
llvm::raw_svector_ostream OS(Scratch);
355-
getCannedFunctionParameter()
353+
getCannedFunctionParameter(Arena)
356354
.withFirstName(ExternalName)
357355
.withSecondName(LocalName)
358356
.withColon(Colon)
@@ -378,7 +376,7 @@ TEST(DeclSyntaxTests, FunctionParameterListMakeAPIs) {
378376
{
379377
SmallString<48> Scratch;
380378
llvm::raw_svector_ostream OS(Scratch);
381-
auto Param = getCannedFunctionParameter();
379+
auto Param = getCannedFunctionParameter(Arena);
382380
std::vector<FunctionParameterSyntax> Params { Param, Param, Param };
383381
SyntaxFactory::makeFunctionParameterList(Params, Arena).print(OS);
384382
ASSERT_EQ(OS.str().str(),
@@ -388,10 +386,9 @@ TEST(DeclSyntaxTests, FunctionParameterListMakeAPIs) {
388386

389387
#pragma mark - function-signature
390388

391-
FunctionSignatureSyntax getCannedFunctionSignature() {
392-
RC<SyntaxArena> Arena = SyntaxArena::make();
389+
FunctionSignatureSyntax getCannedFunctionSignature(const RC<SyntaxArena> &Arena) {
393390
auto LParen = SyntaxFactory::makeLeftParenToken("", "", Arena);
394-
auto Param = getCannedFunctionParameter();
391+
auto Param = getCannedFunctionParameter(Arena);
395392
auto List = SyntaxFactory::makeBlankFunctionParameterList(Arena)
396393
.appending(Param)
397394
.appending(Param)
@@ -420,7 +417,7 @@ TEST(DeclSyntaxTests, FunctionSignatureMakeAPIs) {
420417
{
421418
SmallString<48> Scratch;
422419
llvm::raw_svector_ostream OS(Scratch);
423-
getCannedFunctionSignature().print(OS);
420+
getCannedFunctionSignature(Arena).print(OS);
424421
ASSERT_EQ(OS.str().str(),
425422
"(with radius: Int = -1, "
426423
"with radius: Int = -1, "
@@ -431,7 +428,7 @@ TEST(DeclSyntaxTests, FunctionSignatureMakeAPIs) {
431428
TEST(DeclSyntaxTests, FunctionSignatureGetAPIs) {
432429
RC<SyntaxArena> Arena = SyntaxArena::make();
433430
auto LParen = SyntaxFactory::makeLeftParenToken("", "", Arena);
434-
auto Param = getCannedFunctionParameter();
431+
auto Param = getCannedFunctionParameter(Arena);
435432
auto List = SyntaxFactory::makeBlankFunctionParameterList(Arena)
436433
.appending(Param)
437434
.appending(Param)
@@ -481,7 +478,7 @@ TEST(DeclSyntaxTests, FunctionSignatureGetAPIs) {
481478
TEST(DeclSyntaxTests, FunctionSignatureWithAPIs) {
482479
RC<SyntaxArena> Arena = SyntaxArena::make();
483480
auto LParen = SyntaxFactory::makeLeftParenToken("", "", Arena);
484-
auto Param = getCannedFunctionParameter();
481+
auto Param = getCannedFunctionParameter(Arena);
485482
auto List = SyntaxFactory::makeBlankFunctionParameterList(Arena)
486483
.appending(Param)
487484
.appending(Param)
@@ -510,8 +507,7 @@ TEST(DeclSyntaxTests, FunctionSignatureWithAPIs) {
510507

511508
#pragma mark - function-declaration
512509

513-
ModifierListSyntax getCannedModifiers() {
514-
RC<SyntaxArena> Arena = SyntaxArena::make();
510+
ModifierListSyntax getCannedModifiers(const RC<SyntaxArena> &Arena) {
515511
auto PublicID = SyntaxFactory::makePublicKeyword("", " ", Arena);
516512
auto NoLParen = TokenSyntax::missingToken(tok::l_paren, "(", Arena);
517513
auto NoArgument = TokenSyntax::missingToken(tok::identifier, "", Arena);
@@ -528,8 +524,7 @@ ModifierListSyntax getCannedModifiers() {
528524
.appending(Static);
529525
}
530526

531-
GenericParameterClauseSyntax getCannedGenericParams() {
532-
RC<SyntaxArena> Arena = SyntaxArena::make();
527+
GenericParameterClauseSyntax getCannedGenericParams(const RC<SyntaxArena> &Arena) {
533528
GenericParameterClauseSyntaxBuilder GB(Arena);
534529

535530
auto LAngle = SyntaxFactory::makeLeftAngleToken("", "", Arena);
@@ -549,8 +544,7 @@ GenericParameterClauseSyntax getCannedGenericParams() {
549544
return GB.build();
550545
}
551546

552-
CodeBlockSyntax getCannedBody() {
553-
RC<SyntaxArena> Arena = SyntaxArena::make();
547+
CodeBlockSyntax getCannedBody(const RC<SyntaxArena> &Arena) {
554548
auto NoSign = TokenSyntax::missingToken(tok::oper_prefix, "-", Arena);
555549
auto OneDigits = SyntaxFactory::makeIntegerLiteral("1", "", "", Arena);
556550
auto One = SyntaxFactory::makeIntegerLiteralExpr(OneDigits, Arena);
@@ -566,8 +560,7 @@ CodeBlockSyntax getCannedBody() {
566560
return SyntaxFactory::makeCodeBlock(LBrace, Stmts, RBrace, Arena);
567561
}
568562

569-
GenericWhereClauseSyntax getCannedWhereClause() {
570-
RC<SyntaxArena> Arena = SyntaxArena::make();
563+
GenericWhereClauseSyntax getCannedWhereClause(const RC<SyntaxArena> &Arena) {
571564
auto WhereKW = SyntaxFactory::makeWhereKeyword("", " ", Arena);
572565
auto T = SyntaxFactory::makeTypeIdentifier("T", "", " ", Arena);
573566
auto EqualEqual = SyntaxFactory::makeEqualityOperator("", " ", Arena);
@@ -584,16 +577,15 @@ GenericWhereClauseSyntax getCannedWhereClause() {
584577
.withRequirementList(Requirements);
585578
}
586579

587-
FunctionDeclSyntax getCannedFunctionDecl() {
588-
RC<SyntaxArena> Arena = SyntaxArena::make();
580+
FunctionDeclSyntax getCannedFunctionDecl(const RC<SyntaxArena> &Arena) {
589581
auto NoAttributes = SyntaxFactory::makeBlankAttributeList(Arena);
590582
auto Foo = SyntaxFactory::makeIdentifier("foo", "", "", Arena);
591583
auto FuncKW = SyntaxFactory::makeFuncKeyword("", " ", Arena);
592-
auto Modifiers = getCannedModifiers();
593-
auto GenericParams = getCannedGenericParams();
594-
auto GenericWhere = getCannedWhereClause();
595-
auto Signature = getCannedFunctionSignature();
596-
auto Body = getCannedBody();
584+
auto Modifiers = getCannedModifiers(Arena);
585+
auto GenericParams = getCannedGenericParams(Arena);
586+
auto GenericWhere = getCannedWhereClause(Arena);
587+
auto Signature = getCannedFunctionSignature(Arena);
588+
auto Body = getCannedBody(Arena);
597589

598590
return SyntaxFactory::makeFunctionDecl(NoAttributes, Modifiers, FuncKW, Foo,
599591
GenericParams, Signature, GenericWhere,
@@ -611,7 +603,7 @@ TEST(DeclSyntaxTests, FunctionDeclMakeAPIs) {
611603
{
612604
SmallString<64> Scratch;
613605
llvm::raw_svector_ostream OS(Scratch);
614-
getCannedFunctionDecl().print(OS);
606+
getCannedFunctionDecl(Arena).print(OS);
615607
ASSERT_EQ(OS.str().str(),
616608
"public static func foo<T, U>"
617609
"(with radius: Int = -1, "

unittests/Syntax/SyntaxCollectionTests.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ using llvm::SmallString;
88
using namespace swift;
99
using namespace swift::syntax;
1010

11-
TupleExprElementSyntax getCannedArgument() {
12-
RC<SyntaxArena> Arena = SyntaxArena::make();
11+
TupleExprElementSyntax getCannedArgument(const RC<SyntaxArena> &Arena) {
1312
auto X = SyntaxFactory::makeIdentifier("x", "", "", Arena);
1413
auto Foo = SyntaxFactory::makeIdentifier("foo", "", "", Arena);
1514
auto Colon = SyntaxFactory::makeColonToken("", " ", Arena);
@@ -25,14 +24,14 @@ TEST(SyntaxCollectionTests, empty) {
2524
RC<SyntaxArena> Arena = SyntaxArena::make();
2625
auto Empty = SyntaxFactory::makeBlankTupleExprElementList(Arena);
2726
ASSERT_TRUE(Empty.empty());
28-
ASSERT_FALSE(Empty.appending(getCannedArgument()).empty());
27+
ASSERT_FALSE(Empty.appending(getCannedArgument(Arena)).empty());
2928
}
3029

3130
TEST(SyntaxCollectionTests, size) {
3231
RC<SyntaxArena> Arena = SyntaxArena::make();
3332
auto Empty = SyntaxFactory::makeBlankTupleExprElementList(Arena);
3433
ASSERT_EQ(Empty.size(), size_t(0));
35-
ASSERT_EQ(Empty.appending(getCannedArgument()).size(), size_t(1));
34+
ASSERT_EQ(Empty.appending(getCannedArgument(Arena)).size(), size_t(1));
3635
}
3736

3837
TEST(SyntaxCollectionTests, subscript) {
@@ -44,7 +43,7 @@ TEST(SyntaxCollectionTests, subscript) {
4443

4544
SmallString<48> Scratch;
4645
llvm::raw_svector_ostream OS(Scratch);
47-
auto Arg = getCannedArgument();
46+
auto Arg = getCannedArgument(Arena);
4847
Arg.print(OS);
4948

5049
auto List = Empty.appending(Arg);
@@ -62,7 +61,7 @@ TEST(SyntaxCollectionTests, subscript) {
6261

6362
TEST(SyntaxCollectionTests, appending) {
6463
RC<SyntaxArena> Arena = SyntaxArena::make();
65-
auto Arg = getCannedArgument();
64+
auto Arg = getCannedArgument(Arena);
6665
auto NoComma = TokenSyntax::missingToken(tok::comma, ",", Arena);
6766
auto List = SyntaxFactory::makeBlankTupleExprElementList(Arena)
6867
.appending(Arg)
@@ -95,7 +94,7 @@ TEST(SyntaxCollectionTests, removingLast) {
9594
ASSERT_DEATH(
9695
{ SyntaxFactory::makeBlankTupleExprElementList(Arena).removingLast(); },
9796
"");
98-
auto Arg = getCannedArgument();
97+
auto Arg = getCannedArgument(Arena);
9998
auto NoComma = TokenSyntax::missingToken(tok::comma, ",", Arena);
10099
auto List = SyntaxFactory::makeBlankTupleExprElementList(Arena)
101100
.appending(Arg)
@@ -110,7 +109,7 @@ TEST(SyntaxCollectionTests, removingLast) {
110109

111110
TEST(SyntaxCollectionTests, prepending) {
112111
RC<SyntaxArena> Arena = SyntaxArena::make();
113-
auto Arg = getCannedArgument();
112+
auto Arg = getCannedArgument(Arena);
114113
auto NoComma = TokenSyntax::missingToken(tok::comma, ",", Arena);
115114
auto List = SyntaxFactory::makeBlankTupleExprElementList(Arena)
116115
.prepending(Arg.withTrailingComma(NoComma))
@@ -144,7 +143,7 @@ TEST(SyntaxCollectionTests, removingFirst) {
144143
ASSERT_DEATH(
145144
{ SyntaxFactory::makeBlankTupleExprElementList(Arena).removingFirst(); },
146145
"");
147-
auto Arg = getCannedArgument();
146+
auto Arg = getCannedArgument(Arena);
148147
auto NoComma = TokenSyntax::missingToken(tok::comma, ",", Arena);
149148
auto List = SyntaxFactory::makeBlankTupleExprElementList(Arena)
150149
.appending(Arg.withLabel(
@@ -160,7 +159,7 @@ TEST(SyntaxCollectionTests, removingFirst) {
160159

161160
TEST(SyntaxCollectionTests, inserting) {
162161
RC<SyntaxArena> Arena = SyntaxArena::make();
163-
auto Arg = getCannedArgument();
162+
auto Arg = getCannedArgument(Arena);
164163
auto NoComma = TokenSyntax::missingToken(tok::comma, ",", Arena);
165164
#ifndef NDEBUG
166165
ASSERT_DEATH(
@@ -223,7 +222,7 @@ TEST(SyntaxCollectionTests, inserting) {
223222

224223
TEST(SyntaxCollectionTests, cleared) {
225224
RC<SyntaxArena> Arena = SyntaxArena::make();
226-
auto Arg = getCannedArgument();
225+
auto Arg = getCannedArgument(Arena);
227226
SmallString<1> Scratch;
228227
llvm::raw_svector_ostream OS(Scratch);
229228
auto List = SyntaxFactory::makeBlankTupleExprElementList(Arena)
@@ -240,7 +239,7 @@ TEST(SyntaxCollectionTests, cleared) {
240239

241240
TEST(SyntaxCollectionTests, Iteration) {
242241
RC<SyntaxArena> Arena = SyntaxArena::make();
243-
auto Arg = getCannedArgument();
242+
auto Arg = getCannedArgument(Arena);
244243
auto List = SyntaxFactory::makeBlankTupleExprElementList(Arena)
245244
.appending(Arg)
246245
.appending(Arg)
@@ -273,7 +272,7 @@ TEST(SyntaxCollectionTests, Iteration) {
273272

274273
TEST(SyntaxCollectionTests, Removing) {
275274
RC<SyntaxArena> Arena = SyntaxArena::make();
276-
auto Arg = getCannedArgument();
275+
auto Arg = getCannedArgument(Arena);
277276
auto List = SyntaxFactory::makeBlankTupleExprElementList(Arena)
278277
.appending(Arg)
279278
.appending(Arg.withLabel(

0 commit comments

Comments
 (0)