in Sources/SwiftDriver/Jobs/CompileJob.swift [74:99]
func isTopLevelOutput(type: FileType?) -> Bool {
switch type {
case .assembly, .sil, .raw_sil, .llvmIR, .ast, .jsonDependencies, .sib, .raw_sib,
.importedModules, .indexData:
return true
case .object:
return (linkerOutputType == nil)
case .llvmBitcode:
if compilerOutputType != .llvmBitcode {
// The compiler output isn't bitcode, so bitcode isn't top-level (-embed-bitcode).
return false
} else {
// When -lto is set, .bc will be used for linking. Otherwise, .bc is
// top-level output (-emit-bc)
return lto == nil || linkerOutputType == nil
}
case .swiftModule:
return compilerMode.isSingleCompilation && moduleOutputInfo.output?.isTopLevel ?? false
case .swift, .image, .dSYM, .dependencies, .autolink, .swiftDocumentation, .swiftInterface,
.privateSwiftInterface, .swiftSourceInfoFile, .diagnostics, .objcHeader, .swiftDeps,
.remap, .tbd, .moduleTrace, .yamlOptimizationRecord, .bitstreamOptimizationRecord, .pcm,
.pch, .clangModuleMap, .jsonCompilerFeatures, .jsonTargetInfo, .jsonSwiftArtifacts,
.indexUnitOutputPath, .modDepCache, .jsonAPIBaseline, .jsonABIBaseline, nil:
return false
}
}