diff --git a/Sources/SwiftDriver/Jobs/EmitModuleJob.swift b/Sources/SwiftDriver/Jobs/EmitModuleJob.swift index d69c25a7b..145bb93c0 100644 --- a/Sources/SwiftDriver/Jobs/EmitModuleJob.swift +++ b/Sources/SwiftDriver/Jobs/EmitModuleJob.swift @@ -80,6 +80,9 @@ extension Driver { addCommonModuleOptions(commandLine: &commandLine, outputs: &outputs, isMergeModule: false) + try commandLine.appendLast(.emitSymbolGraph, from: &parsedOptions) + try commandLine.appendLast(.emitSymbolGraphDir, from: &parsedOptions) + if parsedOptions.hasArgument(.parseAsLibrary, .emitLibrary) { commandLine.appendFlag(.parseAsLibrary) } diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 7b1969a4d..b4aa4b6cf 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -2175,7 +2175,7 @@ final class SwiftDriverTests: XCTestCase { func testEmitModuleSeparately() throws { do { - var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "/foo/bar/Test.swiftmodule", "-experimental-emit-module-separately", "-emit-library", "-target", "x86_64-apple-macosx10.15"]) + var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "/foo/bar/Test.swiftmodule", "-emit-symbol-graph", "-emit-symbol-graph-dir", "/foo/bar/", "-experimental-emit-module-separately", "-emit-library", "-target", "x86_64-apple-macosx10.15"]) let plannedJobs = try driver.planBuild() XCTAssertEqual(plannedJobs.count, 4) XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.compile, .emitModule, .link])) @@ -2185,6 +2185,9 @@ final class SwiftDriverTests: XCTestCase { XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("/foo/bar/Test.swiftmodule"))) XCTAssertEqual(plannedJobs[0].outputs[1].file, .absolute(AbsolutePath("/foo/bar/Test.swiftdoc"))) XCTAssertEqual(plannedJobs[0].outputs[2].file, .absolute(AbsolutePath("/foo/bar/Test.swiftsourceinfo"))) + + // We don't know the output file of the symbol graph, just make sure the flag is passed along. + XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-emit-symbol-graph-dir"))) } do {