@@ -127,15 +127,15 @@ struct ASTGenVisitor {
127
127
self . legacyParse = legacyParser
128
128
}
129
129
130
- public func generate( _ node: SourceFileSyntax ) -> [ UnsafeMutableRawPointer ] {
131
- var out = [ UnsafeMutableRawPointer ] ( )
130
+ public func generate( sourceFile node: SourceFileSyntax ) -> [ BridgedDecl ] {
131
+ var out = [ BridgedDecl ] ( )
132
132
133
133
for element in node. statements {
134
134
let loc = element. bridgedSourceLoc ( in: self )
135
135
let swiftASTNodes = generate ( codeBlockItem: element)
136
136
switch swiftASTNodes {
137
137
case . decl( let d) :
138
- out. append ( d. raw )
138
+ out. append ( d)
139
139
case . stmt( let s) :
140
140
let topLevelDecl = BridgedTopLevelCodeDecl . createParsed (
141
141
self . ctx,
@@ -144,7 +144,7 @@ struct ASTGenVisitor {
144
144
stmt: s,
145
145
endLoc: loc
146
146
)
147
- out. append ( topLevelDecl. raw )
147
+ out. append ( topLevelDecl. asDecl )
148
148
case . expr( let e) :
149
149
let topLevelDecl = BridgedTopLevelCodeDecl . createParsed (
150
150
self . ctx,
@@ -153,7 +153,7 @@ struct ASTGenVisitor {
153
153
expr: e,
154
154
endLoc: loc
155
155
)
156
- out. append ( topLevelDecl. raw )
156
+ out. append ( topLevelDecl. asDecl )
157
157
default :
158
158
fatalError ( " Top level nodes must be decls, stmts, or exprs. " )
159
159
}
@@ -188,7 +188,7 @@ extension ASTGenVisitor {
188
188
}
189
189
190
190
extension ASTGenVisitor {
191
- /// Generate AST from a Syntax node. The node must be a decl, stmt, expr, or
191
+ /// Generate ASTNode from a Syntax node. The node must be a decl, stmt, expr, or
192
192
/// type.
193
193
func generate( _ node: Syntax ) -> ASTNode {
194
194
if let decl = node. as ( DeclSyntax . self) {
@@ -222,32 +222,34 @@ extension ASTGenVisitor {
222
222
// Misc visits.
223
223
// TODO: Some of these are called within a single file/method; we may want to move them to the respective files.
224
224
extension ASTGenVisitor {
225
- func generate( _ node: some SyntaxChildChoices ) -> ASTNode {
225
+
226
+ /// Do NOT introduce another usage of this. Not all choices can produce 'ASTNode'.
227
+ func generate( choices node: some SyntaxChildChoices ) -> ASTNode {
226
228
return self . generate ( Syntax ( node) )
227
229
}
228
230
229
- public func generate( _ node: MemberBlockItemSyntax ) -> BridgedDecl {
231
+ public func generate( memberBlockItem node: MemberBlockItemSyntax ) -> BridgedDecl {
230
232
generate ( decl: node. decl)
231
233
}
232
234
233
- public func generate( _ node: InitializerClauseSyntax ) -> BridgedExpr {
235
+ public func generate( initializerClause node: InitializerClauseSyntax ) -> BridgedExpr {
234
236
generate ( expr: node. value)
235
237
}
236
238
237
- public func generate( _ node: ConditionElementSyntax ) -> ASTNode {
238
- generate ( node. condition)
239
+ public func generate( conditionElement node: ConditionElementSyntax ) -> ASTNode {
240
+ generate ( choices : node. condition)
239
241
}
240
242
241
243
public func generate( codeBlockItem node: CodeBlockItemSyntax ) -> ASTNode {
242
- generate ( node. item)
244
+ generate ( choices : node. item)
243
245
}
244
246
245
- public func generate( _ node: ArrayElementSyntax ) -> BridgedExpr {
247
+ public func generate( arrayElement node: ArrayElementSyntax ) -> BridgedExpr {
246
248
generate ( expr: node. expression)
247
249
}
248
250
249
251
@inline ( __always)
250
- func generate( _ node: CodeBlockItemListSyntax ) -> BridgedArrayRef {
252
+ func generate( codeBlockItemList node: CodeBlockItemListSyntax ) -> BridgedArrayRef {
251
253
node. lazy. map { self . generate ( codeBlockItem: $0) . bridged } . bridgedArray ( in: self )
252
254
}
253
255
}
@@ -256,7 +258,7 @@ extension ASTGenVisitor {
256
258
// 'self.visit(<expr>)' recursion pattern between optional and non-optional inputs.
257
259
extension ASTGenVisitor {
258
260
@inline ( __always)
259
- func generate( _ node: TypeSyntax ? ) -> BridgedTypeRepr ? {
261
+ func generate( optional node: TypeSyntax ? ) -> BridgedTypeRepr ? {
260
262
guard let node else {
261
263
return nil
262
264
}
@@ -265,67 +267,67 @@ extension ASTGenVisitor {
265
267
}
266
268
267
269
@inline ( __always)
268
- func generate( _ node: ExprSyntax ? ) -> BridgedExpr ? {
270
+ func generate( optional node: ExprSyntax ? ) -> BridgedExpr ? {
269
271
guard let node else {
270
272
return nil
271
273
}
272
274
273
275
return self . generate ( expr: node)
274
276
}
275
277
278
+ /// DO NOT introduce another usage of this. Not all choices can produce 'ASTNode'.
276
279
@inline ( __always)
277
- func generate( _ node: ( some SyntaxChildChoices ) ? ) -> ASTNode ? {
280
+ func generate( optional node: ( some SyntaxChildChoices ) ? ) -> ASTNode ? {
278
281
guard let node else {
279
282
return nil
280
283
}
281
284
282
- // This call recurses without disambiguation.
283
- return self . generate ( node) as ASTNode
285
+ return self . generate ( choices: node)
284
286
}
285
287
286
288
@inline ( __always)
287
- func generate( _ node: GenericParameterClauseSyntax ? ) -> BridgedGenericParamList ? {
289
+ func generate( optional node: GenericParameterClauseSyntax ? ) -> BridgedGenericParamList ? {
288
290
guard let node else {
289
291
return nil
290
292
}
291
293
292
- return self . generate ( node)
294
+ return self . generate ( genericParameterClause : node)
293
295
}
294
296
295
297
@inline ( __always)
296
- func generate( _ node: GenericWhereClauseSyntax ? ) -> BridgedTrailingWhereClause ? {
298
+ func generate( optional node: GenericWhereClauseSyntax ? ) -> BridgedTrailingWhereClause ? {
297
299
guard let node else {
298
300
return nil
299
301
}
300
302
301
- return self . generate ( node)
303
+ return self . generate ( genericWhereClause : node)
302
304
}
303
305
304
306
@inline ( __always)
305
- func generate( _ node: EnumCaseParameterClauseSyntax ? ) -> BridgedParameterList ? {
307
+ func generate( optional node: EnumCaseParameterClauseSyntax ? ) -> BridgedParameterList ? {
306
308
guard let node else {
307
309
return nil
308
310
}
309
311
310
- return self . generate ( node)
312
+ return self . generate ( enumCaseParameterClause : node)
311
313
}
312
314
313
315
@inline ( __always)
314
- func generate( _ node: InheritedTypeListSyntax ? ) -> BridgedArrayRef {
316
+ func generate( optional node: InheritedTypeListSyntax ? ) -> BridgedArrayRef {
315
317
guard let node else {
316
318
return . init( )
317
319
}
318
320
319
- return self . generate ( node)
321
+ return self . generate ( inheritedTypeList : node)
320
322
}
321
323
322
324
@inline ( __always)
323
- func generate( _ node: PrecedenceGroupNameListSyntax ? ) -> BridgedArrayRef {
325
+ func generate( optional node: PrecedenceGroupNameListSyntax ? ) -> BridgedArrayRef {
324
326
guard let node else {
325
327
return . init( )
326
328
}
327
329
328
- return self . generate ( node)
330
+ return self . generate ( precedenceGroupNameList : node)
329
331
}
330
332
}
331
333
@@ -414,8 +416,8 @@ public func buildTopLevelASTNodes(
414
416
astContext: ctx,
415
417
legacyParser: legacyParser
416
418
)
417
- . generate ( sourceFile. pointee. syntax)
418
- . forEach { callback ( $0, outputContext) }
419
+ . generate ( sourceFile: sourceFile . pointee. syntax)
420
+ . forEach { callback ( $0. raw , outputContext) }
419
421
}
420
422
421
423
/// Generate an AST node at the given source location. Returns the generated
0 commit comments