mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[frontend] Check for unknown arguments before attempting to handle other arguments.
Moved the check for unknown arguments ahead of any other attempts to handle arguments. Added test/Frontend/unknown-arguments.swift, which tests the unknown argument handling of "swift_driver -frontend". Swift SVN r11157
This commit is contained in:
@@ -80,11 +80,18 @@ bool CompilerInvocation::parseArgs(ArrayRef<const char *> Args,
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ParseFrontendArgs(FrontendOpts, *ParsedArgs, Diags)) {
|
||||
if (ParsedArgs->hasArg(OPT_UNKNOWN)) {
|
||||
for (const Arg *A : make_range(ParsedArgs->filtered_begin(OPT_UNKNOWN),
|
||||
ParsedArgs->filtered_end())) {
|
||||
Diags.diagnose(SourceLoc(), diag::error_unknown_arg,
|
||||
A->getAsString(*ParsedArgs));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool HasUnknownArgument = false;
|
||||
if (ParseFrontendArgs(FrontendOpts, *ParsedArgs, Diags)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for (auto InputArg : *ParsedArgs) {
|
||||
switch (InputArg->getOption().getID()) {
|
||||
@@ -135,14 +142,8 @@ bool CompilerInvocation::parseArgs(ArrayRef<const char *> Args,
|
||||
case OPT_module_source_list:
|
||||
setModuleSourceListPath(InputArg->getValue());
|
||||
break;
|
||||
|
||||
case OPT_UNKNOWN:
|
||||
HasUnknownArgument = true;
|
||||
Diags.diagnose(SourceLoc(), diag::error_unknown_arg,
|
||||
InputArg->getAsString(*ParsedArgs));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return HasUnknownArgument;
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user