mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +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;
|
||||
}
|
||||
|
||||
5
test/Frontend/unknown-arguments.swift
Normal file
5
test/Frontend/unknown-arguments.swift
Normal file
@@ -0,0 +1,5 @@
|
||||
// RUN: not %swift_driver -frontend -triple x86_64-apple-darwin10 -fake-argument -abcdef -c %s -o %t.o 2>&1 | FileCheck %s
|
||||
|
||||
// CHECK: <unknown>:0: error: unknown argument: '-triple'
|
||||
// CHECK-NEXT: <unknown>:0: error: unknown argument: '-fake-argument'
|
||||
// CHECK-NEXT: <unknown>:0: error: unknown argument: '-abcdef'
|
||||
Reference in New Issue
Block a user