Skip to content

Commit 553e55f

Browse files
authored
Merge pull request #69876 from rintaro/astgen-generate-label
[ASTGen] Give argument labels to all generate(_:) functions
2 parents 7688cd9 + 07a432d commit 553e55f

File tree

8 files changed

+194
-190
lines changed

8 files changed

+194
-190
lines changed

lib/ASTGen/Sources/ASTGen/ASTGen.swift

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

190190
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
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.
224224
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 {
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.
257259
extension 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

Comments
 (0)