in Sources/SwiftDriver/Jobs/CompileJob.swift [42:71]
mutating func computePrimaryOutput(for input: TypedVirtualPath, outputType: FileType,
isTopLevel: Bool) -> TypedVirtualPath {
if let path = outputFileMap?.existingOutput(inputFile: input.fileHandle, outputType: outputType) {
return TypedVirtualPath(file: path, type: outputType)
}
if isTopLevel {
if let baseOutput = parsedOptions.getLastArgument(.o)?.asSingle,
let baseOutputPath = try? VirtualPath.intern(path: baseOutput) {
return TypedVirtualPath(file: baseOutputPath, type: outputType)
} else if compilerOutputType?.isTextual == true {
return TypedVirtualPath(file: .standardOutput, type: outputType)
} else if outputType == .swiftModule, let moduleOutput = moduleOutputInfo.output {
return TypedVirtualPath(file: moduleOutput.outputPath, type: outputType)
}
}
let baseName: String
if !compilerMode.usesPrimaryFileInputs && numThreads == 0 {
baseName = moduleOutputInfo.name
} else {
baseName = input.file.basenameWithoutExt
}
if !isTopLevel {
return TypedVirtualPath(file: VirtualPath.createUniqueTemporaryFile(.init(baseName.appendingFileTypeExtension(outputType))).intern(),
type: outputType)
}
return TypedVirtualPath(file: useWorkingDirectory(.init(baseName.appendingFileTypeExtension(outputType))).intern(), type: outputType)
}