Skip to content

Commit e77e164

Browse files
committed
Pass the -dump-ast-format flag down to the frontend.
Companion PR to swiftlang/swift#77321.
1 parent 5d72bf1 commit e77e164

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ extension Driver {
265265
try commandLine.appendLast(.lto, from: &parsedOptions)
266266
try commandLine.appendLast(.accessNotesPath, from: &parsedOptions)
267267
try commandLine.appendLast(.enableActorDataRaceChecks, .disableActorDataRaceChecks, from: &parsedOptions)
268+
try commandLine.appendLast(.dumpAstFormat, from: &parsedOptions)
268269
try commandLine.appendAll(.D, from: &parsedOptions)
269270
try commandLine.appendAll(.debugPrefixMap, .coveragePrefixMap, .filePrefixMap, from: &parsedOptions)
270271
try commandLine.appendAllArguments(.Xfrontend, from: &parsedOptions)

Sources/SwiftOptions/Options.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ extension Option {
291291
public static let driverVerifyFineGrainedDependencyGraphAfterEveryImport: Option = Option("-driver-verify-fine-grained-dependency-graph-after-every-import", .flag, attributes: [.helpHidden, .doesNotAffectIncrementalBuild], helpText: "Debug DriverGraph by verifying it after every import", group: .internalDebug)
292292
public static let driverWarnUnusedOptions: Option = Option("-driver-warn-unused-options", .flag, attributes: [.helpHidden], helpText: "Emit warnings for any provided options which are unused by the driver")
293293
public static let dumpApiPath: Option = Option("-dump-api-path", .separate, attributes: [.frontend, .noDriver, .cacheInvariant], helpText: "The path to output swift interface files for the compiled source files")
294+
public static let dumpAstFormat: Option = Option("-dump-ast-format", .separate, attributes: [.frontend, .noInteractive, .doesNotAffectIncrementalBuild], metaVar: "<format>", helpText: "Desired format for -dump-ast output ('default', 'json', or 'json-zlib')")
294295
public static let dumpAst: Option = Option("-dump-ast", .flag, attributes: [.frontend, .noInteractive, .doesNotAffectIncrementalBuild], helpText: "Parse and type-check input file(s) and dump AST(s)", group: .modes)
295296
public static let dumpClangDiagnostics: Option = Option("-dump-clang-diagnostics", .flag, attributes: [.helpHidden, .frontend, .noDriver], helpText: "Dump Clang diagnostics to stderr")
296297
public static let dumpClangLookupTables: Option = Option("-dump-clang-lookup-tables", .flag, attributes: [.helpHidden, .frontend, .noDriver], helpText: "Dump the importer's Swift-name-to-Clang-name lookup tables to stderr")
@@ -1187,6 +1188,7 @@ extension Option {
11871188
Option.driverVerifyFineGrainedDependencyGraphAfterEveryImport,
11881189
Option.driverWarnUnusedOptions,
11891190
Option.dumpApiPath,
1191+
Option.dumpAstFormat,
11901192
Option.dumpAst,
11911193
Option.dumpClangDiagnostics,
11921194
Option.dumpClangLookupTables,

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5304,6 +5304,17 @@ final class SwiftDriverTests: XCTestCase {
53045304
}
53055305
}
53065306

5307+
func testDumpASTFormat() throws {
5308+
var driver = try Driver(args: [
5309+
"swiftc", "-dump-ast", "-dump-ast-format", "json", "foo.swift"
5310+
])
5311+
let plannedJobs = try driver.planBuild()
5312+
XCTAssertEqual(plannedJobs[0].kind, .compile)
5313+
XCTAssertTrue(plannedJobs[0].commandLine.contains("-dump-ast"))
5314+
XCTAssertTrue(plannedJobs[0].commandLine.contains("-dump-ast-format"))
5315+
XCTAssertTrue(plannedJobs[0].commandLine.contains("json"))
5316+
}
5317+
53075318
func testDeriveSwiftDocPath() throws {
53085319
var driver = try Driver(args: [
53095320
"swiftc", "-emit-module", "/tmp/main.swift", "-emit-module-path", "test-ios-macabi.swiftmodule"

0 commit comments

Comments
 (0)