mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Driver] Hook up -emit-dependencies option, but don't do anything with it yet.
Part of <rdar://problem/14899639> Swift SVN r18044
This commit is contained in:
@@ -69,6 +69,8 @@ ERROR(error_immediate_mode_missing_library,frontend,none,
|
||||
ERROR(error_immediate_mode_primary_file,frontend,none,
|
||||
"immediate mode is incompatible with -primary-file", ())
|
||||
|
||||
ERROR(error_mode_cannot_emit_dependencies,frontend,none,
|
||||
"this mode does not support emitting dependency files", ())
|
||||
ERROR(error_mode_cannot_emit_header,frontend,none,
|
||||
"this mode does not support emitting Objective-C headers", ())
|
||||
ERROR(error_mode_cannot_emit_module,frontend,none,
|
||||
|
||||
@@ -35,6 +35,10 @@ def emit_module_doc_path
|
||||
: Separate<["-"], "emit-module-doc-path">, MetaVarName<"<path>">,
|
||||
HelpText<"Output module documentation file <path>">;
|
||||
|
||||
def emit_dependencies_path
|
||||
: Separate<["-"], "emit-dependencies-path">, MetaVarName<"<path>">,
|
||||
HelpText<"Output dependencies file to <path>">;
|
||||
|
||||
def serialize_diagnostics_path
|
||||
: Separate<["-"], "serialize-diagnostics-path">, MetaVarName<"<path>">,
|
||||
HelpText<"Output serialized diagnostics to <path>">;
|
||||
|
||||
@@ -130,6 +130,10 @@ def output_file_map_EQ : Joined<["-"], "output-file-map=">,
|
||||
def save_temps : Flag<["-"], "save-temps">,
|
||||
HelpText<"Save intermediate compilation results">;
|
||||
|
||||
def emit_dependencies : Flag<["-"], "emit-dependencies">,
|
||||
Flags<[FrontendOption]>,
|
||||
HelpText<"Emit Make-compatible dependencies files">;
|
||||
|
||||
def serialize_diagnostics : Flag<["-"], "serialize-diagnostics">,
|
||||
Flags<[FrontendOption]>,
|
||||
HelpText<"Serialize diagnostics in a binary format">;
|
||||
|
||||
@@ -95,6 +95,9 @@ public:
|
||||
/// frontend invocation.
|
||||
std::string SerializedDiagnosticsPath;
|
||||
|
||||
/// The path to which we should output a Make-style dependencies file.
|
||||
std::string DependenciesFilePath;
|
||||
|
||||
/// Arguments which should be passed in immediate mode.
|
||||
std::vector<std::string> ImmediateArgv;
|
||||
|
||||
|
||||
@@ -843,6 +843,35 @@ collectTemporaryFilesForAction(const Action &A, const Job &J,
|
||||
}
|
||||
}
|
||||
|
||||
static void addAuxiliaryOutput(CommandOutput &output, types::ID outputType,
|
||||
const OutputInfo &OI,
|
||||
const TypeToPathMap *outputMap) {
|
||||
StringRef outputMapPath;
|
||||
if (outputMap) {
|
||||
auto iter = outputMap->find(outputType);
|
||||
if (iter != outputMap->end())
|
||||
outputMapPath = iter->second;
|
||||
}
|
||||
|
||||
if (!outputMapPath.empty()) {
|
||||
// Prefer a path from the OutputMap.
|
||||
output.setAdditionalOutputForType(outputType, outputMapPath);
|
||||
} else {
|
||||
// Put the auxiliary output file next to the primary output file.
|
||||
llvm::SmallString<128> path;
|
||||
if (output.getPrimaryOutputType() != types::TY_Nothing)
|
||||
path = output.getPrimaryOutputFilename();
|
||||
else if (!output.getBaseInput().empty())
|
||||
path = llvm::sys::path::stem(output.getBaseInput());
|
||||
else
|
||||
path = OI.ModuleName;
|
||||
|
||||
llvm::sys::path::replace_extension(path,
|
||||
types::getTypeTempSuffix(outputType));
|
||||
output.setAdditionalOutputForType(outputType, path);
|
||||
}
|
||||
}
|
||||
|
||||
Job *Driver::buildJobsForAction(const Compilation &C, const Action *A,
|
||||
const OutputInfo &OI,
|
||||
const OutputFileMap *OFM,
|
||||
@@ -973,41 +1002,24 @@ Job *Driver::buildJobsForAction(const Compilation &C, const Action *A,
|
||||
}
|
||||
}
|
||||
|
||||
// Choose the serialized diagnostics output path.
|
||||
if (C.getArgs().hasArg(options::OPT_serialize_diagnostics) &&
|
||||
isa<CompileJobAction>(JA)) {
|
||||
StringRef OFMSerializeDiagnosticsPath;
|
||||
if (OutputMap) {
|
||||
auto iter = OutputMap->find(types::TY_SerializedDiagnostics);
|
||||
if (iter != OutputMap->end())
|
||||
OFMSerializeDiagnosticsPath = iter->second;
|
||||
if (isa<CompileJobAction>(JA)) {
|
||||
// Choose the serialized diagnostics output path.
|
||||
if (C.getArgs().hasArg(options::OPT_serialize_diagnostics)) {
|
||||
addAuxiliaryOutput(*Output, types::TY_SerializedDiagnostics, OI,
|
||||
OutputMap);
|
||||
|
||||
// Remove any existing diagnostics files so that clients can detect their
|
||||
// presence to determine if a command was run.
|
||||
StringRef OutputPath =
|
||||
Output->getAnyOutputForType(types::TY_SerializedDiagnostics);
|
||||
if (llvm::sys::fs::is_regular_file(OutputPath))
|
||||
llvm::sys::fs::remove(OutputPath);
|
||||
}
|
||||
|
||||
if (!OFMSerializeDiagnosticsPath.empty()) {
|
||||
// Prefer a path from the OutputMap.
|
||||
Output->setAdditionalOutputForType(types::TY_SerializedDiagnostics,
|
||||
OFMSerializeDiagnosticsPath);
|
||||
} else {
|
||||
// Put the serialized diagnostics next to the primary output file.
|
||||
llvm::SmallString<128> Path;
|
||||
if (Output->getPrimaryOutputType() != types::TY_Nothing)
|
||||
Path = Output->getPrimaryOutputFilename();
|
||||
else if (!Output->getBaseInput().empty())
|
||||
Path = llvm::sys::path::stem(Output->getBaseInput());
|
||||
else
|
||||
Path = OI.ModuleName;
|
||||
|
||||
llvm::sys::path::replace_extension(Path, "dia");
|
||||
Output->setAdditionalOutputForType(types::TY_SerializedDiagnostics, Path);
|
||||
// Choose the dependencies file output path.
|
||||
if (C.getArgs().hasArg(options::OPT_emit_dependencies)) {
|
||||
addAuxiliaryOutput(*Output, types::TY_Dependencies, OI, OutputMap);
|
||||
}
|
||||
|
||||
// Remove any existing diagnostics files so that clients can detect their
|
||||
// presence to determine if a command was run.
|
||||
StringRef OutputPath =
|
||||
Output->getAnyOutputForType(types::TY_SerializedDiagnostics);
|
||||
if (llvm::sys::fs::can_write(OutputPath) &&
|
||||
llvm::sys::fs::is_regular_file(OutputPath))
|
||||
llvm::sys::fs::remove(OutputPath);
|
||||
}
|
||||
|
||||
// Choose the Objective-C header output path.
|
||||
|
||||
@@ -154,7 +154,6 @@ static void addCommonFrontendArgs(const ToolChain &TC,
|
||||
const std::string &moduleDocOutputPath =
|
||||
output->getAdditionalOutputForType(types::TY_SwiftModuleDocFile);
|
||||
if (!moduleDocOutputPath.empty()) {
|
||||
arguments.push_back("-emit-module-doc");
|
||||
arguments.push_back("-emit-module-doc-path");
|
||||
arguments.push_back(moduleDocOutputPath.c_str());
|
||||
}
|
||||
@@ -296,7 +295,6 @@ Job *Swift::constructJob(const JobAction &JA, std::unique_ptr<JobList> Inputs,
|
||||
const std::string &ModuleOutputPath =
|
||||
Output->getAdditionalOutputForType(types::ID::TY_SwiftModuleFile);
|
||||
if (!ModuleOutputPath.empty()) {
|
||||
Arguments.push_back("-emit-module");
|
||||
Arguments.push_back("-emit-module-path");
|
||||
Arguments.push_back(ModuleOutputPath.c_str());
|
||||
}
|
||||
@@ -304,11 +302,17 @@ Job *Swift::constructJob(const JobAction &JA, std::unique_ptr<JobList> Inputs,
|
||||
const std::string &SerializedDiagnosticsPath =
|
||||
Output->getAdditionalOutputForType(types::TY_SerializedDiagnostics);
|
||||
if (!SerializedDiagnosticsPath.empty()) {
|
||||
Arguments.push_back("-serialize-diagnostics");
|
||||
Arguments.push_back("-serialize-diagnostics-path");
|
||||
Arguments.push_back(SerializedDiagnosticsPath.c_str());
|
||||
}
|
||||
|
||||
const std::string &DependenciesPath =
|
||||
Output->getAdditionalOutputForType(types::TY_Dependencies);
|
||||
if (!DependenciesPath.empty()) {
|
||||
Arguments.push_back("-emit-dependencies-path");
|
||||
Arguments.push_back(DependenciesPath.c_str());
|
||||
}
|
||||
|
||||
// Add the output file argument if necessary.
|
||||
if (Output->getPrimaryOutputType() != types::TY_Nothing) {
|
||||
Arguments.push_back("-o");
|
||||
@@ -361,7 +365,6 @@ Job *MergeModule::constructJob(const JobAction &JA,
|
||||
const std::string &ObjCHeaderOutputPath =
|
||||
Output->getAdditionalOutputForType(types::TY_ObjCHeader);
|
||||
if (!ObjCHeaderOutputPath.empty()) {
|
||||
Arguments.push_back("-emit-objc-header");
|
||||
Arguments.push_back("-emit-objc-header-path");
|
||||
Arguments.push_back(ObjCHeaderOutputPath.c_str());
|
||||
}
|
||||
|
||||
@@ -413,6 +413,10 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
|
||||
output = Path.str();
|
||||
};
|
||||
|
||||
determineOutputFilename(Opts.DependenciesFilePath,
|
||||
OPT_emit_dependencies,
|
||||
OPT_emit_dependencies_path,
|
||||
"d", false);
|
||||
determineOutputFilename(Opts.SerializedDiagnosticsPath,
|
||||
OPT_serialize_diagnostics,
|
||||
OPT_serialize_diagnostics_path,
|
||||
@@ -436,6 +440,27 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
|
||||
SERIALIZED_MODULE_DOC_EXTENSION,
|
||||
false);
|
||||
|
||||
if (!Opts.DependenciesFilePath.empty()) {
|
||||
switch (Opts.RequestedAction) {
|
||||
case FrontendOptions::DumpParse:
|
||||
case FrontendOptions::DumpAST:
|
||||
case FrontendOptions::PrintAST:
|
||||
case FrontendOptions::Immediate:
|
||||
case FrontendOptions::REPL:
|
||||
Diags.diagnose(SourceLoc(), diag::error_mode_cannot_emit_dependencies);
|
||||
return true;
|
||||
case FrontendOptions::Parse:
|
||||
case FrontendOptions::EmitModuleOnly:
|
||||
case FrontendOptions::EmitSILGen:
|
||||
case FrontendOptions::EmitSIL:
|
||||
case FrontendOptions::EmitIR:
|
||||
case FrontendOptions::EmitBC:
|
||||
case FrontendOptions::EmitAssembly:
|
||||
case FrontendOptions::EmitObject:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!Opts.ObjCHeaderOutputPath.empty()) {
|
||||
switch (Opts.RequestedAction) {
|
||||
case FrontendOptions::DumpParse:
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
// RUN: echo "{\"%s\": {\"object\": \"/build/obj/advanced_output_file_map.o\", \"swiftmodule\": \"/build/swiftmodule/advanced_output_file_map.swiftmodule\", \"swiftdoc\": "/build/swiftmodule/advanced_output_file_map_x.swiftdoc", \"diagnostics\": \"/build/dia/advanced_output_file_map.dia\"}, \"%S/Inputs/main.swift\": {\"object\": \"/build/obj/main.o\", \"swiftmodule\": \"/build/swiftmodule/main.swiftmodule\", \"swiftdoc\": "/build/swiftmodule/main_x.swiftdoc", \"diagnostics\": \"/build/dia/main.dia\"}, \"%S/Inputs/lib.swift\": {\"object\": \"/build/obj/lib.o\", \"swiftmodule\": \"/build/swiftmodule/lib.swiftmodule\", \"swiftdoc\": \"/build/swiftmodule/lib_x.swiftdoc\", \"diagnostics\": \"/build/dia/lib.dia\"}}" > %t.json
|
||||
// RUN: echo "{\"%s\": {\"object\": \"/build/obj/advanced_output_file_map.o\", \"swiftmodule\": \"/build/swiftmodule/advanced_output_file_map.swiftmodule\", \"swiftdoc\": "/build/swiftmodule/advanced_output_file_map_x.swiftdoc", \"diagnostics\": \"/build/dia/advanced_output_file_map.dia\", \"dependencies\": \"/build/d/advanced_output_file_map.d\"}, \"%S/Inputs/main.swift\": {\"object\": \"/build/obj/main.o\", \"swiftmodule\": \"/build/swiftmodule/main.swiftmodule\", \"swiftdoc\": "/build/swiftmodule/main_x.swiftdoc", \"diagnostics\": \"/build/dia/main.dia\", \"dependencies\": \"/build/d/main.d\"}, \"%S/Inputs/lib.swift\": {\"object\": \"/build/obj/lib.o\", \"swiftmodule\": \"/build/swiftmodule/lib.swiftmodule\", \"swiftdoc\": \"/build/swiftmodule/lib_x.swiftdoc\", \"diagnostics\": \"/build/dia/lib.dia\", \"dependencies\": \"/build/d/lib.d\"}}" > %t.json
|
||||
|
||||
// RUN: %swift_driver -driver-print-output-file-map -target x86_64-apple-darwin13.0.0 -emit-executable -emit-module -serialize-diagnostics %s %S/Inputs/main.swift %S/Inputs/lib.swift -g -o /build/advanced_output_file_map.out -emit-module-path /build/OutputFileMap.swiftmodule -module-name OutputFileMap -output-file-map %t.json 2>&1 | FileCheck %s -check-prefix=DUMPOFM
|
||||
// RUN: %swift_driver -driver-print-bindings -target x86_64-apple-darwin13.0.0 -emit-executable -emit-module -serialize-diagnostics %s %S/Inputs/main.swift %S/Inputs/lib.swift -g -o /build/advanced_output_file_map.out -emit-module-path /build/OutputFileMap.swiftmodule -module-name OutputFileMap -output-file-map %t.json 2>&1 | FileCheck %s -check-prefix=BINDINGS
|
||||
// RUN: %swift_driver -driver-print-bindings -target x86_64-apple-darwin13.0.0 -emit-executable -emit-module -serialize-diagnostics -emit-dependencies %s %S/Inputs/main.swift %S/Inputs/lib.swift -g -o /build/advanced_output_file_map.out -emit-module-path /build/OutputFileMap.swiftmodule -module-name OutputFileMap -output-file-map %t.json 2>&1 | FileCheck %s -check-prefix=BINDINGS
|
||||
|
||||
// DUMPOFM: {{.*}}/Inputs/lib.swift -> object: "/build/obj/lib.o"
|
||||
// DUMPOFM-NEXT: {{.*}}/Inputs/lib.swift -> dependencies: "/build/d/lib.d"
|
||||
// DUMPOFM-NEXT: {{.*}}/Inputs/lib.swift -> swiftmodule: "/build/swiftmodule/lib.swiftmodule"
|
||||
// DUMPOFM-NEXT: {{.*}}/Inputs/lib.swift -> swiftdoc: "/build/swiftmodule/lib_x.swiftdoc"
|
||||
// DUMPOFM-NEXT: {{.*}}/Inputs/lib.swift -> diagnostics: "/build/dia/lib.dia"
|
||||
// DUMPOFM-NEXT: {{.*}}/Inputs/main.swift -> object: "/build/obj/main.o"
|
||||
// DUMPOFM-NEXT: {{.*}}/Inputs/main.swift -> dependencies: "/build/d/main.d"
|
||||
// DUMPOFM-NEXT: {{.*}}/Inputs/main.swift -> swiftmodule: "/build/swiftmodule/main.swiftmodule"
|
||||
// DUMPOFM-NEXT: {{.*}}/Inputs/main.swift -> swiftdoc: "/build/swiftmodule/main_x.swiftdoc"
|
||||
// DUMPOFM-NEXT: {{.*}}/Inputs/main.swift -> diagnostics: "/build/dia/main.dia"
|
||||
// DUMPOFM-NEXT: {{.*}}/advanced_output_file_map.swift -> object: "/build/obj/advanced_output_file_map.o"
|
||||
// DUMPOFM-NEXT: {{.*}}/advanced_output_file_map.swift -> dependencies: "/build/d/advanced_output_file_map.d"
|
||||
// DUMPOFM-NEXT: {{.*}}/advanced_output_file_map.swift -> swiftmodule: "/build/swiftmodule/advanced_output_file_map.swiftmodule"
|
||||
// DUMPOFM-NEXT: {{.*}}/advanced_output_file_map.swift -> swiftdoc: "/build/swiftmodule/advanced_output_file_map_x.swiftdoc"
|
||||
// DUMPOFM-NEXT: {{.*}}/advanced_output_file_map.swift -> diagnostics: "/build/dia/advanced_output_file_map.dia"
|
||||
|
||||
// BINDINGS: # "x86_64-apple-darwin13.0.0" - "swift", inputs: ["{{.*}}/advanced_output_file_map.swift"], output: {object: "/build/obj/advanced_output_file_map.o", swiftmodule: "/build/swiftmodule/advanced_output_file_map.swiftmodule", swiftdoc: "/build/swiftmodule/advanced_output_file_map_x.swiftdoc", diagnostics: "/build/dia/advanced_output_file_map.dia"}
|
||||
// BINDINGS: # "x86_64-apple-darwin13.0.0" - "swift", inputs: ["{{.*}}/Inputs/main.swift"], output: {object: "/build/obj/main.o", swiftmodule: "/build/swiftmodule/main.swiftmodule", swiftdoc: "/build/swiftmodule/main_x.swiftdoc", diagnostics: "/build/dia/main.dia"}
|
||||
// BINDINGS: # "x86_64-apple-darwin13.0.0" - "swift", inputs: ["{{.*}}/Inputs/lib.swift"], output: {object: "/build/obj/lib.o", swiftmodule: "/build/swiftmodule/lib.swiftmodule", swiftdoc: "/build/swiftmodule/lib_x.swiftdoc", diagnostics: "/build/dia/lib.dia"}
|
||||
// BINDINGS: # "x86_64-apple-darwin13.0.0" - "swift", inputs: ["{{.*}}/advanced_output_file_map.swift"], output: {object: "/build/obj/advanced_output_file_map.o", dependencies: "/build/d/advanced_output_file_map.d", swiftmodule: "/build/swiftmodule/advanced_output_file_map.swiftmodule", swiftdoc: "/build/swiftmodule/advanced_output_file_map_x.swiftdoc", diagnostics: "/build/dia/advanced_output_file_map.dia"}
|
||||
// BINDINGS: # "x86_64-apple-darwin13.0.0" - "swift", inputs: ["{{.*}}/Inputs/main.swift"], output: {object: "/build/obj/main.o", dependencies: "/build/d/main.d", swiftmodule: "/build/swiftmodule/main.swiftmodule", swiftdoc: "/build/swiftmodule/main_x.swiftdoc", diagnostics: "/build/dia/main.dia"}
|
||||
// BINDINGS: # "x86_64-apple-darwin13.0.0" - "swift", inputs: ["{{.*}}/Inputs/lib.swift"], output: {object: "/build/obj/lib.o", dependencies: "/build/d/lib.d", swiftmodule: "/build/swiftmodule/lib.swiftmodule", swiftdoc: "/build/swiftmodule/lib_x.swiftdoc", diagnostics: "/build/dia/lib.dia"}
|
||||
// BINDINGS: # "x86_64-apple-darwin13.0.0" - "merge-module", inputs: ["/build/obj/advanced_output_file_map.o", "/build/obj/main.o", "/build/obj/lib.o"], output: {swiftmodule: "/build/OutputFileMap.swiftmodule", swiftdoc: "/build/OutputFileMap.swiftdoc"}
|
||||
// BINDINGS: # "x86_64-apple-darwin13.0.0" - "darwin::Linker", inputs: ["/build/obj/advanced_output_file_map.o", "/build/obj/main.o", "/build/obj/lib.o", "/build/OutputFileMap.swiftmodule"], output: {image: "/build/advanced_output_file_map.out"}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
// SIMPLE: bin/swift -frontend
|
||||
// SIMPLE: -emit-module
|
||||
// SIMPLE: -primary-file
|
||||
// SIMPLE: -emit-module-doc -emit-module-doc-path {{[^ ]*}}/merge-module-{{[^ ]*}}.swiftdoc
|
||||
// SIMPLE: -emit-module-doc-path {{[^ ]*}}/merge-module-{{[^ ]*}}.swiftdoc
|
||||
// SIMPLE: -o {{[^ ]*}}/merge-module-{{[^ ]*}}.swiftmodule
|
||||
// SIMPLE: bin/swift -frontend
|
||||
// SIMPLE: -emit-module
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
// COMPLEX: bin/swift -frontend
|
||||
// COMPLEX: -emit-module
|
||||
// COMPLEX-DAG: -emit-module-doc -emit-module-doc-path {{[^ ]*}}/merge-module-{{[^ ]*}}.swiftdoc
|
||||
// COMPLEX-DAG: -emit-module-doc-path {{[^ ]*}}/merge-module-{{[^ ]*}}.swiftdoc
|
||||
// COMPLEX-DAG: -sdk {{.*}}/Inputs/clang-importer-sdk
|
||||
// COMPLEX-DAG: -foo -bar
|
||||
// COMPLEX-DAG: -F /path/to/frameworks -F /path/to/more/frameworks
|
||||
@@ -49,20 +49,20 @@
|
||||
|
||||
|
||||
// TWO-OUTPUTS: bin/swift -frontend
|
||||
// TWO-OUTPUTS: -emit-module-doc -emit-module-doc-path {{[^ ]*}}/merge-module-{{[^ ]*}}.swiftdoc
|
||||
// TWO-OUTPUTS: -emit-module -emit-module-path [[MODULE:[^ ]+]]
|
||||
// TWO-OUTPUTS: -emit-module-doc-path {{[^ ]*}}/merge-module-{{[^ ]*}}.swiftdoc
|
||||
// TWO-OUTPUTS: -emit-module-path [[MODULE:[^ ]+]]
|
||||
// TWO-OUTPUTS: -o {{[^ ]*}}/merge-module-{{[^ ]*}}.o
|
||||
// TWO-OUTPUTS: bin/swift -frontend
|
||||
// TWO-OUTPUTS: -emit-module [[MODULE]]
|
||||
// TWO-OUTPUTS: -o main.swiftmodule
|
||||
|
||||
// THREE-OUTPUTS: bin/swift -frontend
|
||||
// THREE-OUTPUTS: -emit-module-doc -emit-module-doc-path {{[^ ]*}}/merge-module-{{[^ ]*}}.swiftdoc
|
||||
// THREE-OUTPUTS: -emit-module -emit-module-path [[MODULE:[^ ]+]]
|
||||
// THREE-OUTPUTS: -emit-module-doc-path {{[^ ]*}}/merge-module-{{[^ ]*}}.swiftdoc
|
||||
// THREE-OUTPUTS: -emit-module-path [[MODULE:[^ ]+]]
|
||||
// THREE-OUTPUTS: -o {{[^ ]*}}/merge-module-{{[^ ]*}}.o
|
||||
// THREE-OUTPUTS: bin/swift -frontend
|
||||
// THREE-OUTPUTS: -emit-module [[MODULE]]
|
||||
// THREE-OUTPUTS: -emit-objc-header -emit-objc-header-path sdk.foo.h
|
||||
// THREE-OUTPUTS: -emit-objc-header-path sdk.foo.h
|
||||
// THREE-OUTPUTS: -o sdk.foo.out
|
||||
|
||||
// RUN: %swift_driver -driver-print-jobs -emit-module %S/Inputs/main.swift %S/Inputs/lib.swift -module-name merge -o /tmp/modules > %t.complex.txt
|
||||
@@ -71,15 +71,15 @@
|
||||
|
||||
// MERGE_1: bin/swift -frontend -emit-module -primary-file {{[^ ]+}}/Inputs/main.swift {{[^ ]+}}/Inputs/lib.swift
|
||||
// MERGE_1: -module-name merge
|
||||
// MERGE_1: -emit-module-doc -emit-module-doc-path [[PARTIAL_MODULE_A:[^ ]+]].swiftdoc
|
||||
// MERGE_1: -emit-module-doc-path [[PARTIAL_MODULE_A:[^ ]+]].swiftdoc
|
||||
// MERGE_1: -o [[PARTIAL_MODULE_A]].swiftmodule
|
||||
// MERGE_1: bin/swift -frontend -emit-module {{[^ ]+}}/Inputs/main.swift -primary-file {{[^ ]+}}/Inputs/lib.swift
|
||||
// MERGE_1: -module-name merge
|
||||
// MERGE_1: -emit-module-doc -emit-module-doc-path [[PARTIAL_MODULE_B:[^ ]+]].swiftdoc
|
||||
// MERGE_1: -emit-module-doc-path [[PARTIAL_MODULE_B:[^ ]+]].swiftdoc
|
||||
// MERGE_1: -o [[PARTIAL_MODULE_B]].swiftmodule
|
||||
// MERGE_1: bin/swift -frontend -emit-module [[PARTIAL_MODULE_A]].swiftmodule [[PARTIAL_MODULE_B]].swiftmodule
|
||||
// MERGE_1: -parse-as-library
|
||||
// MERGE_1: -module-name merge
|
||||
// MERGE_1: -emit-module-doc -emit-module-doc-path /tmp/modules.swiftdoc
|
||||
// MERGE_1: -emit-module-doc-path /tmp/modules.swiftdoc
|
||||
// MERGE_1: -o /tmp/modules
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// RUN: not %swift -i -emit-module %s 2>&1 | FileCheck -check-prefix=IMMEDIATE_NO_MODULE %s
|
||||
// RUN: not %swift -emit-module -parse %s 2>&1 | FileCheck -check-prefix=IMMEDIATE_NO_MODULE %s
|
||||
// RUN: not %swift -integrated-repl -emit-module 2>&1 | FileCheck -check-prefix=IMMEDIATE_NO_MODULE %s
|
||||
// REQUIRES: swift_interpreter
|
||||
// IMMEDIATE_NO_MODULE: this mode does not support emitting modules
|
||||
|
||||
@@ -20,6 +20,12 @@
|
||||
// RUN: %swift_driver -emit-silgen -parse-as-library %s -module-name "Swift" -parse-stdlib -###
|
||||
// STDLIB_MODULE: error: module name "Swift" is reserved for the standard library{{$}}
|
||||
|
||||
// RUN: not %swift -parse -emit-module %s 2>&1 | FileCheck -check-prefix=PARSE_NO_MODULE %s
|
||||
// PARSE_NO_MODULE: error: this mode does not support emitting modules{{$}}
|
||||
|
||||
// RUN: not %swift -dump-ast -emit-dependencies %s 2>&1 | FileCheck -check-prefix=DUMP_NO_DEPS %s
|
||||
// DUMP_NO_DEPS: error: this mode does not support emitting dependency files{{$}}
|
||||
|
||||
// Should not fail with non-zero exit code.
|
||||
// RUN: %swift -emit-silgen %S/Inputs/invalid-module-name.swift > /dev/null
|
||||
// RUN: %swift -emit-silgen -parse-as-library %S/Inputs/invalid-module-name.swift -module-name foo > /dev/null
|
||||
|
||||
Reference in New Issue
Block a user