зеркало из https://github.com/microsoft/clang-1.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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177218 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
1efffab673
Коммит
6aa240c03d
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -6074,8 +6074,6 @@ def warn_direct_ivar_access : Warning<"instance variable %0 is being "
|
|||
"directly accessed">, InGroup<DiagGroup<"direct-ivar-access">>, DefaultIgnore;
|
||||
|
||||
// Spell-checking diagnostics
|
||||
def warn_spellcheck_initiated : Warning<"spell-checking initiated for %0">,
|
||||
InGroup<DiagGroup<"spellcheck">>, 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<
|
||||
|
|
|
@ -239,6 +239,9 @@ def fmessage_length : Separate<["-"], "fmessage-length">, MetaVarName<"<N>">,
|
|||
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
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче