@@ -46,22 +46,25 @@ class SyntaxArena;
4646struct SyntaxFactory {
4747 // / Make any kind of token.
4848 static TokenSyntax makeToken (tok Kind,
49- OwnedString Text, const Trivia &LeadingTrivia,
50- const Trivia &TrailingTrivia,
51- SourcePresence Presence,
52- RC<SyntaxArena> Arena = nullptr );
49+ OwnedString Text, const Trivia &LeadingTrivia,
50+ const Trivia &TrailingTrivia, SourcePresence Presence ,
51+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
52+ );
5353
5454 // / Collect a list of tokens into a piece of "unknown" syntax.
5555 static UnknownSyntax makeUnknownSyntax (llvm::ArrayRef<TokenSyntax> Tokens,
56- RC<SyntaxArena> Arena = nullptr );
56+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
57+ );
5758
5859 static Optional<Syntax> createSyntax (SyntaxKind Kind,
59- llvm::ArrayRef<Syntax> Elements,
60- RC<SyntaxArena> Arena = nullptr );
60+ llvm::ArrayRef<Syntax> Elements,
61+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
62+ );
6163
6264 static RC<RawSyntax> createRaw (SyntaxKind Kind,
63- llvm::ArrayRef<RC<RawSyntax>> Elements,
64- RC<SyntaxArena> Arena = nullptr );
65+ llvm::ArrayRef<RC<RawSyntax>> Elements,
66+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
67+ );
6568
6669 // / Count the number of children for a given syntax node kind,
6770 // / returning a pair of mininum and maximum count of children. The gap
@@ -83,90 +86,101 @@ struct SyntaxFactory {
8386% end
8487% child_params = ' , ' .join(child_params)
8588 static ${node.name } make${node.syntax_kind }(${child_params},
86- RC<SyntaxArena> Arena = nullptr );
89+ const RC<SyntaxArena> & Arena = SyntaxArena::make() );
8790% elif node.is_syntax_collection():
8891 static ${node.name } make${node.syntax_kind }(
8992 const std::vector<${node.collection_element_type }> &elts,
90- RC<SyntaxArena> Arena = nullptr );
93+ const RC<SyntaxArena> & Arena = SyntaxArena::make() );
9194% end
9295
93- static ${node.name } makeBlank${node.syntax_kind }(RC<SyntaxArena> Arena = nullptr );
96+ static ${node.name } makeBlank${node.syntax_kind }(
97+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
98+ );
9499% end
95100
96101% for token in SYNTAX_TOKENS:
97102% if token.is_keyword:
98103 static TokenSyntax make${token.name }Keyword(const Trivia &LeadingTrivia,
99- const Trivia &TrailingTrivia,
100- RC<SyntaxArena> Arena = nullptr );
104+ const Trivia &TrailingTrivia,
105+ const RC<SyntaxArena> & Arena = SyntaxArena::make() );
101106% elif token.text:
102107 static TokenSyntax make${token.name }Token(const Trivia &LeadingTrivia,
103- const Trivia &TrailingTrivia,
104- RC<SyntaxArena> Arena = nullptr );
108+ const Trivia &TrailingTrivia,
109+ const RC<SyntaxArena> & Arena = SyntaxArena::make() );
105110% else :
106111 static TokenSyntax make${token.name }(OwnedString Text,
107- const Trivia &LeadingTrivia,
108- const Trivia &TrailingTrivia,
109- RC<SyntaxArena> Arena = nullptr );
112+ const Trivia &LeadingTrivia, const Trivia &TrailingTrivia,
113+ const RC<SyntaxArena> &Arena = SyntaxArena::make());
110114% end
111115% end
112116
113117#pragma mark - Convenience APIs
114118
115- static TupleTypeSyntax makeVoidTupleType (RC<SyntaxArena> Arena = nullptr );
119+ static TupleTypeSyntax makeVoidTupleType (
120+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
121+ );
116122
117123 // / Creates an labelled TupleTypeElementSyntax with the provided label,
118124 // / colon, type and optional trailing comma.
119125 static TupleTypeElementSyntax makeTupleTypeElement (
120126 llvm::Optional<TokenSyntax> Label,
121127 llvm::Optional<TokenSyntax> Colon, TypeSyntax Type,
122128 llvm::Optional<TokenSyntax> TrailingComma = llvm::None,
123- RC<SyntaxArena> Arena = nullptr );
129+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
130+ );
124131
125132 // / Creates an unlabelled TupleTypeElementSyntax with the provided type and
126133 // / optional trailing comma.
127134 static TupleTypeElementSyntax
128135 makeTupleTypeElement (TypeSyntax Type,
129- llvm::Optional<TokenSyntax> TrailingComma = llvm::None,
130- RC<SyntaxArena> Arena = nullptr );
136+ llvm::Optional<TokenSyntax> TrailingComma = llvm::None,
137+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
138+ );
131139
132140 // / Creates a TypeIdentifierSyntax with the provided name and leading/trailing
133141 // / trivia.
134142 static TypeSyntax makeTypeIdentifier (OwnedString TypeName,
135- const Trivia &LeadingTrivia = {},
136- const Trivia &TrailingTrivia = {},
137- RC<SyntaxArena> Arena = nullptr );
143+ const Trivia &LeadingTrivia = {}, const Trivia &TrailingTrivia = {},
144+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
145+ );
138146
139147 // / Creates a GenericParameterSyntax with no inheritance clause and an
140148 // / optional trailing comma.
141149 static GenericParameterSyntax
142150 makeGenericParameter (TokenSyntax Name,
143- llvm::Optional<TokenSyntax> TrailingComma,
144- RC<SyntaxArena> Arena = nullptr );
151+ llvm::Optional<TokenSyntax> TrailingComma,
152+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
153+ );
145154
146155 // / Creates a TypeIdentifierSyntax for the `Any` type.
147156 static TypeSyntax makeAnyTypeIdentifier (const Trivia &LeadingTrivia = {},
148- const Trivia &TrailingTrivia = {},
149- RC<SyntaxArena> Arena = nullptr );
157+ const Trivia &TrailingTrivia = {},
158+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
159+ );
150160
151161 // / Creates a TypeIdentifierSyntax for the `Self` type.
152162 static TypeSyntax makeSelfTypeIdentifier (const Trivia &LeadingTrivia = {},
153- const Trivia &TrailingTrivia = {},
154- RC<SyntaxArena> Arena = nullptr );
163+ const Trivia &TrailingTrivia = {},
164+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
165+ );
155166
156167 // / Creates a TokenSyntax for the `Type` identifier.
157168 static TokenSyntax makeTypeToken (const Trivia &LeadingTrivia = {},
158- const Trivia &TrailingTrivia = {},
159- RC<SyntaxArena> Arena = nullptr );
169+ const Trivia &TrailingTrivia = {},
170+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
171+ );
160172
161173 // / Creates a TokenSyntax for the `Protocol` identifier.
162174 static TokenSyntax makeProtocolToken (const Trivia &LeadingTrivia = {},
163- const Trivia &TrailingTrivia = {},
164- RC<SyntaxArena> Arena = nullptr );
175+ const Trivia &TrailingTrivia = {},
176+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
177+ );
165178
166179 // / Creates an `==` operator token.
167180 static TokenSyntax makeEqualityOperator (const Trivia &LeadingTrivia = {},
168- const Trivia &TrailingTrivia = {},
169- RC<SyntaxArena> Arena = nullptr );
181+ const Trivia &TrailingTrivia = {},
182+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
183+ );
170184
171185 // / Whether a raw node kind `MemberKind` can serve as a member in a syntax
172186 // / collection of the given syntax collection kind.
0 commit comments