diff options
| author | Nico Weber <nicolasweber@gmx.de> | 2019-05-23 17:58:33 +0000 |
|---|---|---|
| committer | Nico Weber <nicolasweber@gmx.de> | 2019-05-23 17:58:33 +0000 |
| commit | 9b2830b46e1c8fb1418956d8835d85225949e3c7 (patch) | |
| tree | 922271ba0c4b46bd4bf50dc422e46ce961e94f58 /clang/test/Driver/unknown-arg.c | |
| parent | 2049e4dd8f61100f88f14db33bd95d197bcbfbbc (diff) | |
| download | bcm5719-llvm-9b2830b46e1c8fb1418956d8835d85225949e3c7.tar.gz bcm5719-llvm-9b2830b46e1c8fb1418956d8835d85225949e3c7.zip | |
lld-link, clang: Treat non-existent input files as possible spellos for option flags
OptTable treats arguments starting with / that aren't a known option
as filenames. This means lld-link's and clang-cl's typo correction for
unknown flags didn't do spell checking for misspelled options that start
with /.
I first tried changing OptTable, but that got pretty messy, see PR41787
comments 2 and 3.
Instead, let lld-link's and clang's (including clang-cl's) "file not
found" diagnostic check if a non-existent file looks like it could be a
mis-spelled option, and if so add a "did you mean" suggestion to the
"file not found" diagnostic.
While here, make formatting of a few diagnostics a bit more
self-consistent.
Fixes PR41787.
Differential Revision: https://reviews.llvm.org/D62276
llvm-svn: 361518
Diffstat (limited to 'clang/test/Driver/unknown-arg.c')
| -rw-r--r-- | clang/test/Driver/unknown-arg.c | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/clang/test/Driver/unknown-arg.c b/clang/test/Driver/unknown-arg.c index 4ea43278b7e..074a57bb6f8 100644 --- a/clang/test/Driver/unknown-arg.c +++ b/clang/test/Driver/unknown-arg.c @@ -1,23 +1,25 @@ // RUN: not %clang %s -cake-is-lie -%0 -%d -HHHH -munknown-to-clang-option -print-stats -funknown-to-clang-option -ifoo -imultilib dir -### 2>&1 | \ -// RUN: FileCheck %s +// RUN: FileCheck %s // RUN: %clang %s -imultilib dir -### 2>&1 | \ -// RUN: FileCheck %s --check-prefix=MULTILIB +// RUN: FileCheck %s --check-prefix=MULTILIB // RUN: not %clang %s -stdlibs=foo -hell -version -### 2>&1 | \ -// RUN: FileCheck %s --check-prefix=DID-YOU-MEAN +// RUN: FileCheck %s --check-prefix=DID-YOU-MEAN // RUN: %clang_cl -cake-is-lie -%0 -%d -HHHH -munknown-to-clang-option -print-stats -funknown-to-clang-option -### -c -- %s 2>&1 | \ -// RUN: FileCheck %s --check-prefix=CL +// RUN: FileCheck %s --check-prefix=CL // RUN: %clang_cl -Brepo -### -- %s 2>&1 | \ -// RUN: FileCheck %s --check-prefix=CL-DID-YOU-MEAN +// RUN: FileCheck %s --check-prefix=CL-DID-YOU-MEAN +// RUN: %clang_cl /Brepo -### -- %s 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CL-DID-YOU-MEAN-SLASH // RUN: not %clang_cl -cake-is-lie -%0 -%d -HHHH -munknown-to-clang-option -print-stats -funknown-to-clang-option -c -Werror=unknown-argument -### -- %s 2>&1 | \ -// RUN: FileCheck %s --check-prefix=CL-ERROR +// RUN: FileCheck %s --check-prefix=CL-ERROR // RUN: not %clang_cl -helo -Werror=unknown-argument -### -- %s 2>&1 | \ -// RUN: FileCheck %s --check-prefix=CL-ERROR-DID-YOU-MEAN +// RUN: FileCheck %s --check-prefix=CL-ERROR-DID-YOU-MEAN // RUN: %clang_cl -cake-is-lie -%0 -%d -HHHH -munknown-to-clang-option -print-stats -funknown-to-clang-option -c -Wno-unknown-argument -### -- %s 2>&1 | \ -// RUN: FileCheck %s --check-prefix=SILENT +// RUN: FileCheck %s --check-prefix=SILENT // RUN: not %clang -cc1as -hell --version 2>&1 | \ -// RUN: FileCheck %s --check-prefix=CC1AS-DID-YOU-MEAN +// RUN: FileCheck %s --check-prefix=CC1AS-DID-YOU-MEAN // RUN: not %clang -cc1asphalt -help 2>&1 | \ -// RUN: FileCheck %s --check-prefix=UNKNOWN-INTEGRATED +// RUN: FileCheck %s --check-prefix=UNKNOWN-INTEGRATED // CHECK: error: unknown argument: '-cake-is-lie' // CHECK: error: unknown argument: '-%0' @@ -28,9 +30,9 @@ // CHECK: error: unknown argument: '-funknown-to-clang-option' // CHECK: error: unknown argument: '-ifoo' // MULTILIB: warning: argument unused during compilation: '-imultilib dir' -// DID-YOU-MEAN: error: unknown argument '-stdlibs=foo', did you mean '-stdlib=foo'? -// DID-YOU-MEAN: error: unknown argument '-hell', did you mean '-help'? -// DID-YOU-MEAN: error: unknown argument '-version', did you mean '--version'? +// DID-YOU-MEAN: error: unknown argument '-stdlibs=foo'; did you mean '-stdlib=foo'? +// DID-YOU-MEAN: error: unknown argument '-hell'; did you mean '-help'? +// DID-YOU-MEAN: error: unknown argument '-version'; did you mean '--version'? // CL: warning: unknown argument ignored in clang-cl: '-cake-is-lie' // CL: warning: unknown argument ignored in clang-cl: '-%0' // CL: warning: unknown argument ignored in clang-cl: '-%d' @@ -38,7 +40,8 @@ // CL: warning: unknown argument ignored in clang-cl: '-munknown-to-clang-option' // CL: warning: unknown argument ignored in clang-cl: '-print-stats' // CL: warning: unknown argument ignored in clang-cl: '-funknown-to-clang-option' -// CL-DID-YOU-MEAN: warning: unknown argument ignored in clang-cl '-Brepo' (did you mean '-Brepro'?) +// CL-DID-YOU-MEAN: warning: unknown argument ignored in clang-cl '-Brepo'; did you mean '-Brepro'? +// CL-DID-YOU-MEAN-SLASH: error: no such file or directory: '/Brepo'; did you mean '/Brepro'? // CL-ERROR: error: unknown argument ignored in clang-cl: '-cake-is-lie' // CL-ERROR: error: unknown argument ignored in clang-cl: '-%0' // CL-ERROR: error: unknown argument ignored in clang-cl: '-%d' @@ -46,11 +49,11 @@ // CL-ERROR: error: unknown argument ignored in clang-cl: '-munknown-to-clang-option' // CL-ERROR: error: unknown argument ignored in clang-cl: '-print-stats' // CL-ERROR: error: unknown argument ignored in clang-cl: '-funknown-to-clang-option' -// CL-ERROR-DID-YOU-MEAN: error: unknown argument ignored in clang-cl '-helo' (did you mean '-help'?) +// CL-ERROR-DID-YOU-MEAN: error: unknown argument ignored in clang-cl '-helo'; did you mean '-help'? // SILENT-NOT: error: // SILENT-NOT: warning: -// CC1AS-DID-YOU-MEAN: error: unknown argument '-hell', did you mean '-help'? -// CC1AS-DID-YOU-MEAN: error: unknown argument '--version', did you mean '-version'? +// CC1AS-DID-YOU-MEAN: error: unknown argument '-hell'; did you mean '-help'? +// CC1AS-DID-YOU-MEAN: error: unknown argument '--version'; did you mean '-version'? // UNKNOWN-INTEGRATED: error: unknown integrated tool 'asphalt'. Valid tools include '-cc1' and '-cc1as'. // RUN: %clang -S %s -o %t.s -Wunknown-to-clang-option 2>&1 | FileCheck --check-prefix=IGNORED %s |

