mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Frontend] -frontend -emit-loaded-module-trace.
The -frontend jobs can output a JSON file summarizing the swiftmodules (etc.) they load during compilation.
This commit is contained in:
@@ -676,6 +676,10 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
|
||||
OPT_emit_objc_header,
|
||||
OPT_emit_objc_header_path,
|
||||
"h", false);
|
||||
determineOutputFilename(Opts.LoadedModuleTracePath,
|
||||
OPT_emit_loaded_module_trace,
|
||||
OPT_emit_loaded_module_trace_path,
|
||||
"trace.json", false);
|
||||
|
||||
if (const Arg *A = Args.getLastArg(OPT_emit_fixits_path)) {
|
||||
Opts.FixitsOutputPath = A->getValue();
|
||||
@@ -765,6 +769,39 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
|
||||
}
|
||||
}
|
||||
|
||||
if (!Opts.LoadedModuleTracePath.empty()) {
|
||||
switch (Opts.RequestedAction) {
|
||||
case FrontendOptions::NoneAction:
|
||||
case FrontendOptions::Parse:
|
||||
case FrontendOptions::DumpParse:
|
||||
case FrontendOptions::DumpInterfaceHash:
|
||||
case FrontendOptions::DumpAST:
|
||||
case FrontendOptions::PrintAST:
|
||||
case FrontendOptions::DumpScopeMaps:
|
||||
case FrontendOptions::DumpTypeRefinementContexts:
|
||||
case FrontendOptions::Immediate:
|
||||
case FrontendOptions::REPL:
|
||||
case FrontendOptions::UpdateCode:
|
||||
Diags.diagnose(SourceLoc(),
|
||||
diag::error_mode_cannot_emit_loaded_module_trace);
|
||||
return true;
|
||||
case FrontendOptions::Typecheck:
|
||||
case FrontendOptions::EmitModuleOnly:
|
||||
case FrontendOptions::EmitPCH:
|
||||
case FrontendOptions::EmitSILGen:
|
||||
case FrontendOptions::EmitSIL:
|
||||
case FrontendOptions::EmitSIBGen:
|
||||
case FrontendOptions::EmitSIB:
|
||||
case FrontendOptions::EmitIR:
|
||||
case FrontendOptions::EmitBC:
|
||||
case FrontendOptions::EmitAssembly:
|
||||
case FrontendOptions::EmitObject:
|
||||
case FrontendOptions::EmitImportedModules:
|
||||
case FrontendOptions::EmitTBD:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!Opts.ModuleOutputPath.empty() ||
|
||||
!Opts.ModuleDocOutputPath.empty()) {
|
||||
switch (Opts.RequestedAction) {
|
||||
|
||||
Reference in New Issue
Block a user