Skip to content

Commit 5fdeabd

Browse files
committed
[ASTGen] Give argument labels to all generate(_:) functions
Explicit argument labels are useful for "Open Quickly..." in Xcode, reduce the fear of miss overload resolution, and better crash backtrace as they might not show parameter types.
1 parent 79ac431 commit 5fdeabd

File tree

8 files changed

+187
-188
lines changed

8 files changed

+187
-188
lines changed

lib/ASTGen/Sources/ASTGen/ASTGen.swift

Lines changed: 29 additions & 30 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
}
@@ -222,32 +222,32 @@ 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+
func generate(choices node: some SyntaxChildChoices) -> ASTNode {
226226
return self.generate(Syntax(node))
227227
}
228228

229-
public func generate(_ node: MemberBlockItemSyntax) -> BridgedDecl {
229+
public func generate(memberBlockItem node: MemberBlockItemSyntax) -> BridgedDecl {
230230
generate(decl: node.decl)
231231
}
232232

233-
public func generate(_ node: InitializerClauseSyntax) -> BridgedExpr {
233+
public func generate(initializerClause node: InitializerClauseSyntax) -> BridgedExpr {
234234
generate(expr: node.value)
235235
}
236236

237-
public func generate(_ node: ConditionElementSyntax) -> ASTNode {
238-
generate(node.condition)
237+
public func generate(conditionElement node: ConditionElementSyntax) -> ASTNode {
238+
generate(choices: node.condition)
239239
}
240240

241241
public func generate(codeBlockItem node: CodeBlockItemSyntax) -> ASTNode {
242-
generate(node.item)
242+
generate(choices: node.item)
243243
}
244244

245-
public func generate(_ node: ArrayElementSyntax) -> BridgedExpr {
245+
public func generate(arrayElement node: ArrayElementSyntax) -> BridgedExpr {
246246
generate(expr: node.expression)
247247
}
248248

249249
@inline(__always)
250-
func generate(_ node: CodeBlockItemListSyntax) -> BridgedArrayRef {
250+
func generate(codeBlockItemList node: CodeBlockItemListSyntax) -> BridgedArrayRef {
251251
node.lazy.map { self.generate(codeBlockItem: $0).bridged }.bridgedArray(in: self)
252252
}
253253
}
@@ -256,7 +256,7 @@ extension ASTGenVisitor {
256256
// 'self.visit(<expr>)' recursion pattern between optional and non-optional inputs.
257257
extension ASTGenVisitor {
258258
@inline(__always)
259-
func generate(_ node: TypeSyntax?) -> BridgedTypeRepr? {
259+
func generate(optional node: TypeSyntax?) -> BridgedTypeRepr? {
260260
guard let node else {
261261
return nil
262262
}
@@ -265,7 +265,7 @@ extension ASTGenVisitor {
265265
}
266266

267267
@inline(__always)
268-
func generate(_ node: ExprSyntax?) -> BridgedExpr? {
268+
func generate(optional node: ExprSyntax?) -> BridgedExpr? {
269269
guard let node else {
270270
return nil
271271
}
@@ -274,58 +274,57 @@ extension ASTGenVisitor {
274274
}
275275

276276
@inline(__always)
277-
func generate(_ node: (some SyntaxChildChoices)?) -> ASTNode? {
277+
func generate(optional node: (some SyntaxChildChoices)?) -> ASTNode? {
278278
guard let node else {
279279
return nil
280280
}
281281

282-
// This call recurses without disambiguation.
283-
return self.generate(node) as ASTNode
282+
return self.generate(choices: node)
284283
}
285284

286285
@inline(__always)
287-
func generate(_ node: GenericParameterClauseSyntax?) -> BridgedGenericParamList? {
286+
func generate(optional node: GenericParameterClauseSyntax?) -> BridgedGenericParamList? {
288287
guard let node else {
289288
return nil
290289
}
291290

292-
return self.generate(node)
291+
return self.generate(genericParameterClause: node)
293292
}
294293

295294
@inline(__always)
296-
func generate(_ node: GenericWhereClauseSyntax?) -> BridgedTrailingWhereClause? {
295+
func generate(optional node: GenericWhereClauseSyntax?) -> BridgedTrailingWhereClause? {
297296
guard let node else {
298297
return nil
299298
}
300299

301-
return self.generate(node)
300+
return self.generate(genericWhereClause: node)
302301
}
303302

304303
@inline(__always)
305-
func generate(_ node: EnumCaseParameterClauseSyntax?) -> BridgedParameterList? {
304+
func generate(optional node: EnumCaseParameterClauseSyntax?) -> BridgedParameterList? {
306305
guard let node else {
307306
return nil
308307
}
309308

310-
return self.generate(node)
309+
return self.generate(enumCaseParameterClause: node)
311310
}
312311

313312
@inline(__always)
314-
func generate(_ node: InheritedTypeListSyntax?) -> BridgedArrayRef {
313+
func generate(optional node: InheritedTypeListSyntax?) -> BridgedArrayRef {
315314
guard let node else {
316315
return .init()
317316
}
318317

319-
return self.generate(node)
318+
return self.generate(inheritedTypeList: node)
320319
}
321320

322321
@inline(__always)
323-
func generate(_ node: PrecedenceGroupNameListSyntax?) -> BridgedArrayRef {
322+
func generate(optional node: PrecedenceGroupNameListSyntax?) -> BridgedArrayRef {
324323
guard let node else {
325324
return .init()
326325
}
327326

328-
return self.generate(node)
327+
return self.generate(precedenceGroupNameList: node)
329328
}
330329
}
331330

@@ -414,8 +413,8 @@ public func buildTopLevelASTNodes(
414413
astContext: ctx,
415414
legacyParser: legacyParser
416415
)
417-
.generate(sourceFile.pointee.syntax)
418-
.forEach { callback($0, outputContext) }
416+
.generate(sourceFile: sourceFile.pointee.syntax)
417+
.forEach { callback($0.raw, outputContext) }
419418
}
420419

421420
/// Generate an AST node at the given source location. Returns the generated

0 commit comments

Comments
 (0)