Print a typo correction hint for unknown warning flags.
$ clang -Wololo t.c
warning: unknown warning option '-Wololo'; did you mean '-Wall'? [-Wunknown-warning-option]
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144591 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/Warnings.cpp b/lib/Frontend/Warnings.cpp
index 7fcbe3a..ba0cd38 100644
--- a/lib/Frontend/Warnings.cpp
+++ b/lib/Frontend/Warnings.cpp
@@ -120,7 +120,9 @@
} else if (DiagIDs->getDiagnosticsInGroup(Specifier, _Diags)) {
Diags.Report(isPositive ? diag::warn_unknown_warning_option :
diag::warn_unknown_negative_warning_option)
- << ("-W" + Opt.str());
+ << ("-W" + Opt.str())
+ << ("-Werror=" +
+ DiagnosticIDs::getNearestWarningOption(Specifier).str());
}
continue;
}
@@ -150,7 +152,9 @@
} else if (DiagIDs->getDiagnosticsInGroup(Specifier, _Diags)) {
Diags.Report(isPositive ? diag::warn_unknown_warning_option :
diag::warn_unknown_negative_warning_option)
- << ("-W" + Opt.str());
+ << ("-W" + Opt.str())
+ << ("-Wfatal-errors=" +
+ DiagnosticIDs::getNearestWarningOption(Specifier).str());
}
continue;
}
@@ -158,7 +162,8 @@
if (Report && DiagIDs->getDiagnosticsInGroup(Opt, _Diags)) {
Diags.Report(isPositive ? diag::warn_unknown_warning_option :
diag::warn_unknown_negative_warning_option)
- << ("-W" + Opt.str());
+ << ("-W" + Opt.str())
+ << ("-W" + DiagnosticIDs::getNearestWarningOption(Opt).str());
} else {
Diags.setDiagnosticGroupMapping(Opt, Mapping);
}