diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2011-11-14 23:30:34 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2011-11-14 23:30:34 +0000 |
commit | 116d8879e6e417d4bf437e4f191f2e86f7736384 (patch) | |
tree | 335eb37b570dc5ae537f91f629638a06cc36e298 /clang/lib/Basic/DiagnosticIDs.cpp | |
parent | 8e9aae5999c64f99fa6ba2a20bf6a6ebaf09262c (diff) | |
download | bcm5719-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.cpp | 21 |
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 { |