@@ -127,15 +127,15 @@ struct ASTGenVisitor {
127127 self . legacyParse = legacyParser
128128 }
129129
130- public func generate( _ node: SourceFileSyntax ) -> [ UnsafeMutableRawPointer ] {
131- var out = [ UnsafeMutableRawPointer ] ( )
130+ public func generate( sourceFile node: SourceFileSyntax ) -> [ BridgedDecl ] {
131+ var out = [ BridgedDecl ] ( )
132132
133133 for element in node. statements {
134134 let loc = element. bridgedSourceLoc ( in: self )
135135 let swiftASTNodes = generate ( codeBlockItem: element)
136136 switch swiftASTNodes {
137137 case . decl( let d) :
138- out. append ( d. raw )
138+ out. append ( d)
139139 case . stmt( let s) :
140140 let topLevelDecl = BridgedTopLevelCodeDecl . createParsed (
141141 self . ctx,
@@ -144,7 +144,7 @@ struct ASTGenVisitor {
144144 stmt: s,
145145 endLoc: loc
146146 )
147- out. append ( topLevelDecl. raw )
147+ out. append ( topLevelDecl. asDecl )
148148 case . expr( let e) :
149149 let topLevelDecl = BridgedTopLevelCodeDecl . createParsed (
150150 self . ctx,
@@ -153,7 +153,7 @@ struct ASTGenVisitor {
153153 expr: e,
154154 endLoc: loc
155155 )
156- out. append ( topLevelDecl. raw )
156+ out. append ( topLevelDecl. asDecl )
157157 default :
158158 fatalError ( " Top level nodes must be decls, stmts, or exprs. " )
159159 }
@@ -188,7 +188,7 @@ extension ASTGenVisitor {
188188}
189189
190190extension 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
192192 /// type.
193193 func generate( _ node: Syntax ) -> ASTNode {
194194 if let decl = node. as ( DeclSyntax . self) {
@@ -222,32 +222,34 @@ extension ASTGenVisitor {
222222// Misc visits.
223223// TODO: Some of these are called within a single file/method; we may want to move them to the respective files.
224224extension 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 {
226228 return self . generate ( Syntax ( node) )
227229 }
228230
229- public func generate( _ node: MemberBlockItemSyntax ) -> BridgedDecl {
231+ public func generate( memberBlockItem node: MemberBlockItemSyntax ) -> BridgedDecl {
230232 generate ( decl: node. decl)
231233 }
232234
233- public func generate( _ node: InitializerClauseSyntax ) -> BridgedExpr {
235+ public func generate( initializerClause node: InitializerClauseSyntax ) -> BridgedExpr {
234236 generate ( expr: node. value)
235237 }
236238
237- public func generate( _ node: ConditionElementSyntax ) -> ASTNode {
238- generate ( node. condition)
239+ public func generate( conditionElement node: ConditionElementSyntax ) -> ASTNode {
240+ generate ( choices : node. condition)
239241 }
240242
241243 public func generate( codeBlockItem node: CodeBlockItemSyntax ) -> ASTNode {
242- generate ( node. item)
244+ generate ( choices : node. item)
243245 }
244246
245- public func generate( _ node: ArrayElementSyntax ) -> BridgedExpr {
247+ public func generate( arrayElement node: ArrayElementSyntax ) -> BridgedExpr {
246248 generate ( expr: node. expression)
247249 }
248250
249251 @inline ( __always)
250- func generate( _ node: CodeBlockItemListSyntax ) -> BridgedArrayRef {
252+ func generate( codeBlockItemList node: CodeBlockItemListSyntax ) -> BridgedArrayRef {
251253 node. lazy. map { self . generate ( codeBlockItem: $0) . bridged } . bridgedArray ( in: self )
252254 }
253255}
@@ -256,7 +258,7 @@ extension ASTGenVisitor {
256258// 'self.visit(<expr>)' recursion pattern between optional and non-optional inputs.
257259extension ASTGenVisitor {
258260 @inline ( __always)
259- func generate( _ node: TypeSyntax ? ) -> BridgedTypeRepr ? {
261+ func generate( optional node: TypeSyntax ? ) -> BridgedTypeRepr ? {
260262 guard let node else {
261263 return nil
262264 }
@@ -265,67 +267,67 @@ extension ASTGenVisitor {
265267 }
266268
267269 @inline ( __always)
268- func generate( _ node: ExprSyntax ? ) -> BridgedExpr ? {
270+ func generate( optional node: ExprSyntax ? ) -> BridgedExpr ? {
269271 guard let node else {
270272 return nil
271273 }
272274
273275 return self . generate ( expr: node)
274276 }
275277
278+ /// DO NOT introduce another usage of this. Not all choices can produce 'ASTNode'.
276279 @inline ( __always)
277- func generate( _ node: ( some SyntaxChildChoices ) ? ) -> ASTNode ? {
280+ func generate( optional node: ( some SyntaxChildChoices ) ? ) -> ASTNode ? {
278281 guard let node else {
279282 return nil
280283 }
281284
282- // This call recurses without disambiguation.
283- return self . generate ( node) as ASTNode
285+ return self . generate ( choices: node)
284286 }
285287
286288 @inline ( __always)
287- func generate( _ node: GenericParameterClauseSyntax ? ) -> BridgedGenericParamList ? {
289+ func generate( optional node: GenericParameterClauseSyntax ? ) -> BridgedGenericParamList ? {
288290 guard let node else {
289291 return nil
290292 }
291293
292- return self . generate ( node)
294+ return self . generate ( genericParameterClause : node)
293295 }
294296
295297 @inline ( __always)
296- func generate( _ node: GenericWhereClauseSyntax ? ) -> BridgedTrailingWhereClause ? {
298+ func generate( optional node: GenericWhereClauseSyntax ? ) -> BridgedTrailingWhereClause ? {
297299 guard let node else {
298300 return nil
299301 }
300302
301- return self . generate ( node)
303+ return self . generate ( genericWhereClause : node)
302304 }
303305
304306 @inline ( __always)
305- func generate( _ node: EnumCaseParameterClauseSyntax ? ) -> BridgedParameterList ? {
307+ func generate( optional node: EnumCaseParameterClauseSyntax ? ) -> BridgedParameterList ? {
306308 guard let node else {
307309 return nil
308310 }
309311
310- return self . generate ( node)
312+ return self . generate ( enumCaseParameterClause : node)
311313 }
312314
313315 @inline ( __always)
314- func generate( _ node: InheritedTypeListSyntax ? ) -> BridgedArrayRef {
316+ func generate( optional node: InheritedTypeListSyntax ? ) -> BridgedArrayRef {
315317 guard let node else {
316318 return . init( )
317319 }
318320
319- return self . generate ( node)
321+ return self . generate ( inheritedTypeList : node)
320322 }
321323
322324 @inline ( __always)
323- func generate( _ node: PrecedenceGroupNameListSyntax ? ) -> BridgedArrayRef {
325+ func generate( optional node: PrecedenceGroupNameListSyntax ? ) -> BridgedArrayRef {
324326 guard let node else {
325327 return . init( )
326328 }
327329
328- return self . generate ( node)
330+ return self . generate ( precedenceGroupNameList : node)
329331 }
330332}
331333
@@ -414,8 +416,8 @@ public func buildTopLevelASTNodes(
414416 astContext: ctx,
415417 legacyParser: legacyParser
416418 )
417- . generate ( sourceFile. pointee. syntax)
418- . forEach { callback ( $0, outputContext) }
419+ . generate ( sourceFile: sourceFile . pointee. syntax)
420+ . forEach { callback ( $0. raw , outputContext) }
419421}
420422
421423/// Generate an AST node at the given source location. Returns the generated
0 commit comments