Move -add-plugin validation after -load was executed.
Moves the code added in r350340 around a bit, to hopefully make the existing plugin tests pass when clang is built with examples enabled. llvm-svn: 350451
This commit is contained in:
parent
e6ed8540c5
commit
9f0c21c1e0
|
@ -1666,20 +1666,7 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
|
|||
Opts.ProgramAction = frontend::PluginAction;
|
||||
Opts.ActionName = A->getValue();
|
||||
}
|
||||
for (const std::string &Arg : Args.getAllArgValues(OPT_add_plugin)) {
|
||||
bool Found = false;
|
||||
for (FrontendPluginRegistry::iterator it = FrontendPluginRegistry::begin(),
|
||||
ie = FrontendPluginRegistry::end();
|
||||
it != ie; ++it) {
|
||||
if (it->getName() == Arg)
|
||||
Found = true;
|
||||
}
|
||||
if (!Found) {
|
||||
Diags.Report(diag::err_fe_invalid_plugin_name) << Arg;
|
||||
continue;
|
||||
}
|
||||
Opts.AddPluginActions.push_back(Arg);
|
||||
}
|
||||
Opts.AddPluginActions = Args.getAllArgValues(OPT_add_plugin);
|
||||
for (const auto *AA : Args.filtered(OPT_plugin_arg))
|
||||
Opts.PluginArgs[AA->getValue(0)].emplace_back(AA->getValue(1));
|
||||
|
||||
|
|
|
@ -156,6 +156,24 @@ FrontendAction::CreateWrappedASTConsumer(CompilerInstance &CI,
|
|||
if (FrontendPluginRegistry::begin() == FrontendPluginRegistry::end())
|
||||
return Consumer;
|
||||
|
||||
// Validate -add-plugin args.
|
||||
bool FoundAllPlugins = true;
|
||||
for (const std::string &Arg : CI.getFrontendOpts().AddPluginActions) {
|
||||
bool Found = false;
|
||||
for (FrontendPluginRegistry::iterator it = FrontendPluginRegistry::begin(),
|
||||
ie = FrontendPluginRegistry::end();
|
||||
it != ie; ++it) {
|
||||
if (it->getName() == Arg)
|
||||
Found = true;
|
||||
}
|
||||
if (!Found) {
|
||||
CI.getDiagnostics().Report(diag::err_fe_invalid_plugin_name) << Arg;
|
||||
FoundAllPlugins = false;
|
||||
}
|
||||
}
|
||||
if (!FoundAllPlugins)
|
||||
return nullptr;
|
||||
|
||||
// If this is a code completion run, avoid invoking the plugin consumers
|
||||
if (CI.hasCodeCompletionConsumer())
|
||||
return Consumer;
|
||||
|
|
Loading…
Reference in New Issue