Skip to content

Commit 9cb55e8

Browse files
committed
DRY isLibrary check
1 parent 37d3c28 commit 9cb55e8

File tree

4 files changed

+11
-6
lines changed

4 files changed

+11
-6
lines changed

Sources/Build/describe().swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public func describe(prefix: String, _ conf: Configuration, _ modules: [Module],
8181

8282
// this must be set or swiftc compiles single source file
8383
// modules with a main() for some reason
84-
try write(" is-library: ", module.isLibrary)
84+
try write(" is-library: ", module.type == .Library)
8585

8686
for o in node.objectPaths {
8787
mkdirs.insert(o.parentDirectory)
@@ -92,7 +92,7 @@ public func describe(prefix: String, _ conf: Configuration, _ modules: [Module],
9292
var args = ["-c", "-emit-module", "-D", "SWIFT_PACKAGE", "-O", "-whole-module-optimization", "-I", prefix] + swiftcArgs
9393
let productPath = Path.join(prefix, "\(module.c99name).o")
9494

95-
if module.isLibrary {
95+
if module.type == .Library {
9696
args += ["-parse-as-library"]
9797
}
9898

Sources/PackageType/Module.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,15 @@ public class SwiftModule: Module {
4949
super.init(name: name)
5050
}
5151

52-
public var isLibrary: Bool {
53-
return !sources.relativePaths.contains { path in
52+
public enum ModuleType {
53+
case Library, Executable
54+
}
55+
56+
public var type: ModuleType {
57+
let isLibrary = !sources.relativePaths.contains { path in
5458
path.basename.lowercaseString == "main.swift"
5559
}
60+
return isLibrary ? .Library : .Executable
5661
}
5762
}
5863

Sources/Transmute/Package+products.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ extension Package {
1818
////// first auto-determine executables
1919

2020
for case let module as SwiftModule in modules {
21-
if module.sources.relativePaths.contains("main.swift") {
21+
if module.type == .Executable {
2222
let product = Product(name: module.name, type: .Executable, modules: [module])
2323
products.append(product)
2424
}

Sources/Transmute/fillModuleGraph().swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func fillModuleGraph(packages: [Package], modulesForPackage: (Package) -> [Modul
1818
switch $0 {
1919
case is TestModule:
2020
return false
21-
case let module as SwiftModule where module.isLibrary:
21+
case let module as SwiftModule where module.type == .Library:
2222
return true
2323
case is CModule:
2424
return true

0 commit comments

Comments
 (0)