Skip to content

Commit 54c2156

Browse files
authored
Merge pull request #1699 from xymus/public-module-name-flag
Pass down `-public-module-name` to the frontend
2 parents 92bdabe + 23ecd4f commit 54c2156

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,10 @@ extension Driver {
339339
commandLine.appendFlag(ver)
340340
}
341341

342+
if isFrontendArgSupported(.publicModuleName) {
343+
try commandLine.appendLast(.publicModuleName, from: &parsedOptions)
344+
}
345+
342346
// Pass down -validate-clang-modules-once if we are working with a compiler that
343347
// supports it.
344348
if isFrontendArgSupported(.validateClangModulesOnce),

Sources/SwiftOptions/Options.swift

+2
Original file line numberDiff line numberDiff line change
@@ -705,6 +705,7 @@ extension Option {
705705
public static let protocolRequirementAllowList: Option = Option("-protocol-requirement-allow-list", .separate, attributes: [.noDriver, .argumentIsPath], metaVar: "<path>", helpText: "File containing a new-line separated list of protocol names")
706706
public static let protocolRequirementAllowList_: Option = Option("--protocol-requirement-allow-list", .separate, alias: Option.protocolRequirementAllowList, attributes: [.noDriver, .argumentIsPath], metaVar: "<path>", helpText: "File containing a new-line separated list of protocol names")
707707
public static let publicAutolinkLibrary: Option = Option("-public-autolink-library", .separate, attributes: [.helpHidden, .frontend, .noDriver, .moduleInterface], helpText: "Add public dependent library")
708+
public static let publicModuleName: Option = Option("-public-module-name", .separate, attributes: [.frontend], helpText: "Public facing module name to use in diagnostics and documentation")
708709
public static let RaccessNoteEQ: Option = Option("-Raccess-note=", .joined, alias: Option.RaccessNote, attributes: [.frontend, .noDriver])
709710
public static let RaccessNote: Option = Option("-Raccess-note", .separate, attributes: [.frontend, .noDriver], metaVar: "none|failures|all|all-validate", helpText: "Control access note remarks (default: all)")
710711
public static let cacheRemarks: Option = Option("-Rcache-compile-job", .flag, attributes: [.frontend, .cacheInvariant], helpText: "Show remarks for compiler caching")
@@ -1581,6 +1582,7 @@ extension Option {
15811582
Option.protocolRequirementAllowList,
15821583
Option.protocolRequirementAllowList_,
15831584
Option.publicAutolinkLibrary,
1585+
Option.publicModuleName,
15841586
Option.RaccessNoteEQ,
15851587
Option.RaccessNote,
15861588
Option.cacheRemarks,

Tests/SwiftDriverTests/SwiftDriverTests.swift

+16
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,22 @@ final class SwiftDriverTests: XCTestCase {
837837
XCTAssert(compileJob.commandLine.contains(.flag("ABIMod")))
838838
}
839839

840+
func testPublicModuleName() throws {
841+
var driver = try Driver(
842+
args: ["swiftc", "foo.swift", "-public-module-name", "PublicFacing"]
843+
)
844+
let jobs = try driver.planBuild()
845+
let compileJob = try jobs.findJob(.compile)
846+
847+
if driver.isFrontendArgSupported(.publicModuleName) {
848+
XCTAssert(compileJob.commandLine.contains(.flag("-public-module-name")))
849+
XCTAssert(compileJob.commandLine.contains(.flag("PublicFacing")))
850+
} else {
851+
XCTAssertFalse(compileJob.commandLine.contains(.flag("-public-module-name")))
852+
XCTAssertFalse(compileJob.commandLine.contains(.flag("PublicFacing")))
853+
}
854+
}
855+
840856
func testStandardCompileJobs() throws {
841857
var driver1 = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test"])
842858
let plannedJobs = try driver1.planBuild().removingAutolinkExtractJobs()

0 commit comments

Comments
 (0)