From: Argyrios Kyrtzidis Date: Sat, 16 Mar 2013 01:40:35 +0000 (+0000) Subject: Remove -Wspellcheck and replace it with a diagnostic option. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3065a0fce412c453293b91eeafc6082baf4626e0;p=platform%2Fupstream%2Fllvm.git Remove -Wspellcheck and replace it with a diagnostic option. Thanks to Richard S. for pointing out that the warning would show up with -Weverything. llvm-svn: 177218 --- diff --git a/clang/include/clang/Basic/Diagnostic.h b/clang/include/clang/Basic/Diagnostic.h index 0a501cb..0b7c54e 100644 --- a/clang/include/clang/Basic/Diagnostic.h +++ b/clang/include/clang/Basic/Diagnostic.h @@ -175,6 +175,7 @@ private: bool SuppressAllDiagnostics; // Suppress all diagnostics. bool ElideType; // Elide common types of templates. bool PrintTemplateTree; // Print a tree when comparing templates. + bool WarnOnSpellCheck; // Emit warning when spellcheck is initiated. bool ShowColors; // Color printing is enabled. OverloadsShown ShowOverloads; // Which overload candidates to show. unsigned ErrorLimit; // Cap of # errors emitted, 0 -> no limit. @@ -466,6 +467,10 @@ public: /// tree format. void setPrintTemplateTree(bool Val = false) { PrintTemplateTree = Val; } bool getPrintTemplateTree() { return PrintTemplateTree; } + + /// \brief Warn when spellchecking is initated, for testing. + void setWarnOnSpellCheck(bool Val = false) { WarnOnSpellCheck = Val; } + bool getWarnOnSpellCheck() { return WarnOnSpellCheck; } /// \brief Set color printing, so the type diffing will inject color markers /// into the output. diff --git a/clang/include/clang/Basic/DiagnosticOptions.def b/clang/include/clang/Basic/DiagnosticOptions.def index 41bbff2..8e5562c 100644 --- a/clang/include/clang/Basic/DiagnosticOptions.def +++ b/clang/include/clang/Basic/DiagnosticOptions.def @@ -72,6 +72,7 @@ DIAGOPT(VerifyDiagnostics, 1, 0) /// Check that diagnostics match the expected DIAGOPT(ElideType, 1, 0) /// Elide identical types in template diffing DIAGOPT(ShowTemplateTree, 1, 0) /// Print a template tree when diffing +DIAGOPT(WarnOnSpellCheck, 1, 0) /// -fwarn-on-spellcheck VALUE_DIAGOPT(ErrorLimit, 32, 0) /// Limit # errors emitted. /// Limit depth of macro expansion backtrace. diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 470732c..bd3d1b4 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -6074,8 +6074,6 @@ def warn_direct_ivar_access : Warning<"instance variable %0 is being " "directly accessed">, InGroup>, DefaultIgnore; // Spell-checking diagnostics -def warn_spellcheck_initiated : Warning<"spell-checking initiated for %0">, - InGroup>, DefaultIgnore; def err_unknown_type_or_class_name_suggest : Error< "unknown %select{type|class}2 name %0; did you mean %1?">; def err_unknown_typename_suggest : Error< diff --git a/clang/include/clang/Driver/CC1Options.td b/clang/include/clang/Driver/CC1Options.td index b1e5bfa..24ac33d 100644 --- a/clang/include/clang/Driver/CC1Options.td +++ b/clang/include/clang/Driver/CC1Options.td @@ -239,6 +239,9 @@ def fmessage_length : Separate<["-"], "fmessage-length">, MetaVarName<"">, def Wno_rewrite_macros : Flag<["-"], "Wno-rewrite-macros">, HelpText<"Silence ObjC rewriting warnings">; +def fwarn_on_spellcheck : Flag<["-"], "fwarn-on-spellcheck">, + HelpText<"Emit warning if spell-check is initiated, for testing">; + //===----------------------------------------------------------------------===// // Frontend Options //===----------------------------------------------------------------------===// diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index fa59212..f6ba4e5 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -561,6 +561,7 @@ bool clang::ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args, Opts.VerifyDiagnostics = Args.hasArg(OPT_verify); Opts.ElideType = !Args.hasArg(OPT_fno_elide_type); Opts.ShowTemplateTree = Args.hasArg(OPT_fdiagnostics_show_template_tree); + Opts.WarnOnSpellCheck = Args.hasArg(OPT_fwarn_on_spellcheck); Opts.ErrorLimit = Args.getLastArgIntValue(OPT_ferror_limit, 0, Diags); Opts.MacroBacktraceLimit = Args.getLastArgIntValue(OPT_fmacro_backtrace_limit, diff --git a/clang/lib/Frontend/Warnings.cpp b/clang/lib/Frontend/Warnings.cpp index 767096a..b7547b9 100644 --- a/clang/lib/Frontend/Warnings.cpp +++ b/clang/lib/Frontend/Warnings.cpp @@ -56,6 +56,7 @@ void clang::ProcessWarningOptions(DiagnosticsEngine &Diags, Diags.setElideType(Opts.ElideType); Diags.setPrintTemplateTree(Opts.ShowTemplateTree); + Diags.setWarnOnSpellCheck(Opts.WarnOnSpellCheck); Diags.setShowColors(Opts.ShowColors); // Handle -ferror-limit diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp index 86ddad2..ad5b89a 100644 --- a/clang/lib/Sema/SemaLookup.cpp +++ b/clang/lib/Sema/SemaLookup.cpp @@ -3738,11 +3738,12 @@ TypoCorrection Sema::CorrectTypo(const DeclarationNameInfo &TypoName, if (S && S->isInObjcMethodScope() && Typo == getSuperIdentifier()) return TypoCorrection(); - // This is for regression testing. It's disabled by default. - if (Diags.getDiagnosticLevel(diag::warn_spellcheck_initiated, - TypoName.getLoc()) != DiagnosticsEngine::Ignored) - Diag(TypoName.getLoc(), diag::warn_spellcheck_initiated) - << TypoName.getName(); + // This is for testing. + if (Diags.getWarnOnSpellCheck()) { + unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Warning, + "spell-checking initiated for %0"); + Diag(TypoName.getLoc(), DiagID) << TypoName.getName(); + } NamespaceSpecifierSet Namespaces(Context, CurContext, SS); diff --git a/clang/test/SemaObjC/typo-correction.m b/clang/test/SemaObjC/typo-correction.m index cb2c91b..3fd61e2 100644 --- a/clang/test/SemaObjC/typo-correction.m +++ b/clang/test/SemaObjC/typo-correction.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 %s -verify -fsyntax-only -Wspellcheck +// RUN: %clang_cc1 %s -verify -fsyntax-only -fwarn-on-spellcheck @interface B @property int x;