Skip to content

Commit b5ca5c6

Browse files
committed
Make module naming consistent with the integrated driver when the output filename has 2+ extensions
1 parent 26e8e06 commit b5ca5c6

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

Sources/SwiftDriver/Driver/Driver.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,12 +1147,12 @@ extension Driver {
11471147
private static func baseNameWithoutExtension(_ path: String, hasExtension: inout Bool) -> String {
11481148
if let absolute = try? AbsolutePath(validating: path) {
11491149
hasExtension = absolute.extension != nil
1150-
return absolute.basenameWithoutAllExts
1150+
return absolute.basenameWithoutExt
11511151
}
11521152

11531153
if let relative = try? RelativePath(validating: path) {
11541154
hasExtension = relative.extension != nil
1155-
return relative.basenameWithoutAllExts
1155+
return relative.basenameWithoutExt
11561156
}
11571157

11581158
hasExtension = false

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,19 @@ final class SwiftDriverTests: XCTestCase {
394394
XCTAssertTrue(plannedJobs3[0].commandLine.contains(.flag("-parse-as-library")))
395395
}
396396

397+
func testModuleNaming() throws {
398+
XCTAssertEqual(try Driver(args: ["swiftc", "foo.swift"]).moduleName, "foo")
399+
XCTAssertEqual(try Driver(args: ["swiftc", "foo.swift", "-o", "a.out"]).moduleName, "a")
400+
401+
// This is silly, but necesary for compatibility with the integrated driver.
402+
XCTAssertEqual(try Driver(args: ["swiftc", "foo.swift", "-o", "a.out.optimized"]).moduleName, "main")
403+
404+
XCTAssertEqual(try Driver(args: ["swiftc", "foo.swift", "-o", "a.out.optimized", "-module-name", "bar"]).moduleName, "bar")
405+
XCTAssertEqual(try Driver(args: ["swiftc", "foo.swift", "-o", "+++.out"]).moduleName, "main")
406+
XCTAssertEqual(try Driver(args: ["swift"]).moduleName, "REPL")
407+
XCTAssertEqual(try Driver(args: ["swiftc", "foo.swift", "-emit-library", "-o", "libBaz.dylib"]).moduleName, "Baz")
408+
}
409+
397410
func testOutputFileMapLoading() throws {
398411
let contents = """
399412
{

0 commit comments

Comments
 (0)