[flang][driver] Add checks for missing option arguments

With this patch, the following invocation of the frontend driver will
return an error:
```
flang-new -fc1 input-file.f90 -o
```
Similar logic applies to other options that require arguments.

Similar checks are already available in the compiler driver, flang-new
(that's implemented in clangDriver).

Differential Revision: https://reviews.llvm.org/D103554
This commit is contained in:
Andrzej Warzynski 2021-06-02 21:53:02 +01:00
parent f03f4944cf
commit 2b4c9bc4d4
2 changed files with 28 additions and 0 deletions

View File

@ -501,6 +501,13 @@ bool CompilerInvocation::CreateFromArgs(CompilerInvocation &res,
llvm::opt::InputArgList args = opts.ParseArgs(
commandLineArgs, missingArgIndex, missingArgCount, includedFlagsBitmask);
// Check for missing argument error.
if (missingArgCount) {
diags.Report(clang::diag::err_drv_missing_argument)
<< args.getArgString(missingArgIndex) << missingArgCount;
success = false;
}
// Issue errors on unknown arguments
for (const auto *a : args.filtered(clang::driver::options::OPT_UNKNOWN)) {
auto argString = a->getAsString(args);

View File

@ -0,0 +1,21 @@
! Make sure that frontend driver options that require arguments are
! correctly rejected when the argument value is missing.
! REQUIRES: new-flang-driver
!-----------
! RUN lines
!-----------
! RUN: not %flang_fc1 -E %s -o 2>&1 | FileCheck %s
! RUN: not %flang_fc1 -E %s -U 2>&1 | FileCheck %s
! RUN: not %flang_fc1 -E %s -D 2>&1 | FileCheck %s
! RUN: not %flang_fc1 -E %s -I 2>&1 | FileCheck %s
! RUN: not %flang_fc1 -E %s -J 2>&1 | FileCheck %s
! RUN: not %flang_fc1 -E %s -module-dir 2>&1 | FileCheck %s
! RUN: not %flang_fc1 -E %s -module-suffix 2>&1 | FileCheck %s
! RUN: not %flang_fc1 -E %s -fintrinsic-modules-path 2>&1 | FileCheck %s
!-----------------------
! EXPECTED OUTPUT
!-----------------------
! CHECK: error: argument to '-{{.*}}' is missing (expected 1 value)