Skip to content

Commit 9049e6a

Browse files
committed
Description: Allow unicode chars in package-name in driver.
Frontend already allows them but the same change was not made in driver. This PR fixes that for consistency. Risk: Low. Frontend already allows unicode chars. Original PR: #1367 Reivewers: @artemcm Testing: Modified an existing test to allow unicode chars in package-name Resolves: rdar://110021211
1 parent 1d8848d commit 9049e6a

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

Sources/SwiftDriver/Driver/Driver.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -641,11 +641,12 @@ public struct Driver {
641641
// Compute debug information output.
642642
self.debugInfo = Self.computeDebugInfo(&parsedOptions, diagnosticsEngine: diagnosticEngine)
643643

644-
// Validate package name; if package name is nil, it will be checked
645-
// in the frontend during type check on `package` symbols
644+
// Error if package-name is passed but the input is empty;
645+
// If package-name is not passed but `package` decls exist, error will
646+
// occur during the frontend type check.
646647
self.packageName = parsedOptions.getLastArgument(.packageName)?.asSingle
647-
if let packageName = packageName, !packageName.sd_isSwiftIdentifier {
648-
diagnosticsEngine.emit(.error_bad_package_name(packageName))
648+
if let packageName = packageName, packageName.isEmpty {
649+
diagnosticsEngine.emit(.error_empty_package_name)
649650
}
650651

651652
// Determine the module we're building and whether/how the module file itself will be emitted.

Sources/SwiftDriver/Utilities/Diagnostics.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,8 @@ extension Diagnostic.Message {
123123
return .error("bad module alias \"\(arg)\"")
124124
}
125125

126-
static func error_bad_package_name(_ packageName: String) -> Diagnostic.Message {
127-
if packageName.isEmpty {
128-
return .error("package name is empty; pass a non-empty string or remove \'-package-name\'")
129-
}
130-
return .error("package name \"\(packageName)\" is not a valid identifier")
126+
static var error_empty_package_name: Diagnostic.Message {
127+
return .error("package-name is empty")
131128
}
132129

133130
static var error_hermetic_seal_cannot_have_library_evolution: Diagnostic.Message {

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -690,13 +690,13 @@ final class SwiftDriverTests: XCTestCase {
690690
}
691691

692692
func testPackageNameFlag() throws {
693-
// -package-name mypkg (valid string)
694-
try assertNoDriverDiagnostics(args: "swiftc", "file.swift", "bar.swift", "-module-name", "MyModule", "-package-name", "mypkg", "-emit-module", "-emit-module-path", "../../path/to/MyModule.swiftmodule") { driver in
695-
XCTAssertEqual(driver.packageName, "mypkg")
693+
// -package-name com.perf.my-pkg (valid string)
694+
try assertNoDriverDiagnostics(args: "swiftc", "file.swift", "bar.swift", "-module-name", "MyModule", "-package-name", "com.perf.my-pkg", "-emit-module", "-emit-module-path", "../../path/to/MyModule.swiftmodule") { driver in
695+
XCTAssertEqual(driver.packageName, "com.perf.my-pkg")
696696
XCTAssertEqual(driver.moduleOutputInfo.output, .topLevel(try VirtualPath.intern(path: "../../path/to/MyModule.swiftmodule")))
697697
}
698698

699-
// -package-name is not passed
699+
// -package-name is not passed and file doesn't contain `package` decls
700700
try assertNoDriverDiagnostics(args: "swiftc", "file.swift") { driver in
701701
XCTAssertNil(driver.packageName)
702702
XCTAssertEqual(driver.moduleOutputInfo.name, "file")

0 commit comments

Comments
 (0)