@@ -41,11 +41,28 @@ public enum ModuleOutput: Equatable {
41
41
42
42
/// The Swift driver.
43
43
public struct Driver {
44
- enum Error : Swift . Error {
44
+ public enum Error : Swift . Error , LocalizedError {
45
45
case invalidDriverName( String )
46
46
case invalidInput( String )
47
- case subcommandPassedToDriver
47
+ case noJobsPassedToDriverFromEmptyInputFileList
48
48
case relativeFrontendPath( String )
49
+ case subcommandPassedToDriver
50
+
51
+ public var errorDescription : String ? {
52
+ switch self {
53
+ case . invalidDriverName( let driverName) :
54
+ return " invalid drive name: \( driverName) "
55
+ case . invalidInput( let input) :
56
+ return " invalid input: \( input) "
57
+ case . noJobsPassedToDriverFromEmptyInputFileList:
58
+ return " no input files were passed and no subsequent jobs were generated for the driver "
59
+ case . relativeFrontendPath( let path) :
60
+ // TODO: where is this error thrown
61
+ return " relative frontend path: \( path) "
62
+ case . subcommandPassedToDriver:
63
+ return " subcommand passed to driver "
64
+ }
65
+ }
49
66
}
50
67
51
68
/// The set of environment variables that are visible to the driver and
@@ -572,7 +589,7 @@ extension Driver {
572
589
switch driverName {
573
590
case " swift " :
574
591
return . interactive
575
- case " swiftc " :
592
+ case " swiftc " , " swift-driver " :
576
593
return . batch
577
594
case " swift-autolink-extract " :
578
595
return . autolinkExtract
@@ -604,7 +621,12 @@ extension Driver {
604
621
try printVersion ( outputStream: & stderrStream)
605
622
}
606
623
607
- if jobs. isEmpty { return }
624
+ guard !jobs. isEmpty else {
625
+ guard !inputFiles. isEmpty else {
626
+ throw Error . noJobsPassedToDriverFromEmptyInputFileList
627
+ }
628
+ return
629
+ }
608
630
609
631
let forceResponseFiles = parsedOptions. contains ( . driverForceResponseFiles)
610
632
0 commit comments