@@ -46,22 +46,25 @@ class SyntaxArena;
46
46
struct SyntaxFactory {
47
47
// / Make any kind of token.
48
48
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
+ );
53
53
54
54
// / Collect a list of tokens into a piece of "unknown" syntax.
55
55
static UnknownSyntax makeUnknownSyntax (llvm::ArrayRef<TokenSyntax> Tokens,
56
- RC<SyntaxArena> Arena = nullptr );
56
+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
57
+ );
57
58
58
59
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
+ );
61
63
62
64
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
+ );
65
68
66
69
// / Count the number of children for a given syntax node kind,
67
70
// / returning a pair of mininum and maximum count of children. The gap
@@ -83,90 +86,101 @@ struct SyntaxFactory {
83
86
% end
84
87
% child_params = ' , ' .join(child_params)
85
88
static ${node.name } make${node.syntax_kind }(${child_params},
86
- RC<SyntaxArena> Arena = nullptr );
89
+ const RC<SyntaxArena> & Arena = SyntaxArena::make() );
87
90
% elif node.is_syntax_collection():
88
91
static ${node.name } make${node.syntax_kind }(
89
92
const std::vector<${node.collection_element_type }> &elts,
90
- RC<SyntaxArena> Arena = nullptr );
93
+ const RC<SyntaxArena> & Arena = SyntaxArena::make() );
91
94
% end
92
95
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
+ );
94
99
% end
95
100
96
101
% for token in SYNTAX_TOKENS:
97
102
% if token.is_keyword:
98
103
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() );
101
106
% elif token.text:
102
107
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() );
105
110
% else :
106
111
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());
110
114
% end
111
115
% end
112
116
113
117
#pragma mark - Convenience APIs
114
118
115
- static TupleTypeSyntax makeVoidTupleType (RC<SyntaxArena> Arena = nullptr );
119
+ static TupleTypeSyntax makeVoidTupleType (
120
+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
121
+ );
116
122
117
123
// / Creates an labelled TupleTypeElementSyntax with the provided label,
118
124
// / colon, type and optional trailing comma.
119
125
static TupleTypeElementSyntax makeTupleTypeElement (
120
126
llvm::Optional<TokenSyntax> Label,
121
127
llvm::Optional<TokenSyntax> Colon, TypeSyntax Type,
122
128
llvm::Optional<TokenSyntax> TrailingComma = llvm::None,
123
- RC<SyntaxArena> Arena = nullptr );
129
+ const RC<SyntaxArena> &Arena = SyntaxArena::make()
130
+ );
124
131
125
132
// / Creates an unlabelled TupleTypeElementSyntax with the provided type and
126
133
// / optional trailing comma.
127
134
static TupleTypeElementSyntax
128
135
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
+ );
131
139
132
140
// / Creates a TypeIdentifierSyntax with the provided name and leading/trailing
133
141
// / trivia.
134
142
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
+ );
138
146
139
147
// / Creates a GenericParameterSyntax with no inheritance clause and an
140
148
// / optional trailing comma.
141
149
static GenericParameterSyntax
142
150
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
+ );
145
154
146
155
// / Creates a TypeIdentifierSyntax for the `Any` type.
147
156
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
+ );
150
160
151
161
// / Creates a TypeIdentifierSyntax for the `Self` type.
152
162
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
+ );
155
166
156
167
// / Creates a TokenSyntax for the `Type` identifier.
157
168
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
+ );
160
172
161
173
// / Creates a TokenSyntax for the `Protocol` identifier.
162
174
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
+ );
165
178
166
179
// / Creates an `==` operator token.
167
180
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
+ );
170
184
171
185
// / Whether a raw node kind `MemberKind` can serve as a member in a syntax
172
186
// / collection of the given syntax collection kind.
0 commit comments