summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/DiagnosticIDs.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-11-14 23:30:34 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-11-14 23:30:34 +0000
commit116d8879e6e417d4bf437e4f191f2e86f7736384 (patch)
tree335eb37b570dc5ae537f91f629638a06cc36e298 /clang/lib/Basic/DiagnosticIDs.cpp
parent8e9aae5999c64f99fa6ba2a20bf6a6ebaf09262c (diff)
downloadbcm5719-llvm-116d8879e6e417d4bf437e4f191f2e86f7736384.tar.gz
bcm5719-llvm-116d8879e6e417d4bf437e4f191f2e86f7736384.zip
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] llvm-svn: 144591
Diffstat (limited to 'clang/lib/Basic/DiagnosticIDs.cpp')
-rw-r--r--clang/lib/Basic/DiagnosticIDs.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/lib/Basic/DiagnosticIDs.cpp b/clang/lib/Basic/DiagnosticIDs.cpp
index b14cdc9ba3d..39fee69adbe 100644
--- a/clang/lib/Basic/DiagnosticIDs.cpp
+++ b/clang/lib/Basic/DiagnosticIDs.cpp
@@ -681,6 +681,27 @@ bool DiagnosticIDs::getDiagnosticsInGroup(
return false;
}
+StringRef DiagnosticIDs::getNearestWarningOption(StringRef Group) {
+ StringRef Best;
+ unsigned BestDistance = 0;
+ for (const WarningOption *i = OptionTable, *e = OptionTable + OptionTableSize;
+ i != e; ++i) {
+ // Don't suggest ignored warning flags.
+ if (!i->Members && !i->SubGroups)
+ continue;
+
+ unsigned Distance = i->getName().edit_distance(Group, true, BestDistance);
+
+ // Check if this is a better match.
+ if (Best.empty() || Distance < BestDistance) {
+ Best = i->getName();
+ BestDistance = Distance;
+ }
+ }
+
+ return Best;
+}
+
/// ProcessDiag - This is the method used to report a diagnostic that is
/// finally fully formed.
bool DiagnosticIDs::ProcessDiag(DiagnosticsEngine &Diag) const {
OpenPOWER on IntegriCloud