From 22417a222587098fad331f0bdd7330f6325315eb Mon Sep 17 00:00:00 2001 From: Brian Gesiak Date: Sat, 13 Jan 2018 17:09:11 +0000 Subject: [PATCH] [Driver] Add "did you mean?" suggestions to -cc1as Summary: In https://reviews.llvm.org/D41733, the driver was modified such that, when a user provided a mispelled option such as `-hel`, it would suggest a valid option with a nearby edit distance: "did you mean '-help'?". Add these suggestions to invocations of `clang -cc1as` as well. Test Plan: `check-clang` Reviewers: v.g.vassilev, bruno Reviewed By: v.g.vassilev Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D42001 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322445 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Driver/unknown-arg.c | 5 +++++ tools/driver/cc1as_main.cpp | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/test/Driver/unknown-arg.c b/test/Driver/unknown-arg.c index 053731535c..dec4d59e98 100644 --- a/test/Driver/unknown-arg.c +++ b/test/Driver/unknown-arg.c @@ -12,6 +12,8 @@ // 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: not %clang -cc1as -hell --version -debug-info-macros 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CC1AS-DID-YOU-MEAN // CHECK: error: unknown argument: '-cake-is-lie' // CHECK: error: unknown argument: '-%0' @@ -41,6 +43,9 @@ // 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 '-debug-info-macros', did you mean '-debug-info-macro'? // RUN: %clang -S %s -o %t.s -Wunknown-to-clang-option 2>&1 | FileCheck --check-prefix=IGNORED %s diff --git a/tools/driver/cc1as_main.cpp b/tools/driver/cc1as_main.cpp index 191c7df7ab..630a0bcffa 100644 --- a/tools/driver/cc1as_main.cpp +++ b/tools/driver/cc1as_main.cpp @@ -181,7 +181,13 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, // Issue errors on unknown arguments. for (const Arg *A : Args.filtered(OPT_UNKNOWN)) { - Diags.Report(diag::err_drv_unknown_argument) << A->getAsString(Args); + auto ArgString = A->getAsString(Args); + std::string Nearest; + if (OptTbl->findNearest(ArgString, Nearest, IncludedFlagsBitmask) > 1) + Diags.Report(diag::err_drv_unknown_argument) << ArgString; + else + Diags.Report(diag::err_drv_unknown_argument_with_suggestion) + << ArgString << Nearest; Success = false; } -- 2.40.0