diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp')
-rw-r--r-- | contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp | 38 |
1 files changed, 15 insertions, 23 deletions
diff --git a/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp b/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp index 643503b..a34c7fec 100644 --- a/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp +++ b/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp @@ -100,14 +100,10 @@ static const StaticDiagInfoRec *GetDiagInfo(unsigned DiagID) { #ifndef NDEBUG static bool IsFirst = true; // So the check is only performed on first call. if (IsFirst) { - for (unsigned i = 1; i != StaticDiagInfoSize; ++i) { - assert(StaticDiagInfo[i-1].DiagID != StaticDiagInfo[i].DiagID && - "Diag ID conflict, the enums at the start of clang::diag (in " - "DiagnosticIDs.h) probably need to be increased"); - - assert(StaticDiagInfo[i-1] < StaticDiagInfo[i] && - "Improperly sorted diag info"); - } + assert(std::is_sorted(std::begin(StaticDiagInfo), + std::end(StaticDiagInfo)) && + "Diag ID conflict, the enums at the start of clang::diag (in " + "DiagnosticIDs.h) probably need to be increased"); IsFirst = false; } #endif @@ -505,11 +501,6 @@ static const WarningOption OptionTable[] = { #include "clang/Basic/DiagnosticGroups.inc" #undef GET_DIAG_TABLE }; -static const size_t OptionTableSize = llvm::array_lengthof(OptionTable); - -static bool WarningOptionCompare(const WarningOption &LHS, StringRef RHS) { - return LHS.getName() < RHS; -} /// getWarningOptionForDiag - Return the lowest-level warning option that /// enables the specified diagnostic. If there is no -Wfoo flag that controls @@ -553,10 +544,12 @@ static bool getDiagnosticsInGroup(diag::Flavor Flavor, bool DiagnosticIDs::getDiagnosticsInGroup(diag::Flavor Flavor, StringRef Group, SmallVectorImpl<diag::kind> &Diags) const { - const WarningOption *Found = std::lower_bound( - OptionTable, OptionTable + OptionTableSize, Group, WarningOptionCompare); - if (Found == OptionTable + OptionTableSize || - Found->getName() != Group) + auto Found = std::lower_bound(std::begin(OptionTable), std::end(OptionTable), + Group, + [](const WarningOption &LHS, StringRef RHS) { + return LHS.getName() < RHS; + }); + if (Found == std::end(OptionTable) || Found->getName() != Group) return true; // Option not found. return ::getDiagnosticsInGroup(Flavor, Found, Diags); @@ -573,19 +566,18 @@ StringRef DiagnosticIDs::getNearestOption(diag::Flavor Flavor, StringRef Group) { StringRef Best; unsigned BestDistance = Group.size() + 1; // Sanity threshold. - for (const WarningOption *i = OptionTable, *e = OptionTable + OptionTableSize; - i != e; ++i) { + for (const WarningOption &O : OptionTable) { // Don't suggest ignored warning flags. - if (!i->Members && !i->SubGroups) + if (!O.Members && !O.SubGroups) continue; - unsigned Distance = i->getName().edit_distance(Group, true, BestDistance); + unsigned Distance = O.getName().edit_distance(Group, true, BestDistance); if (Distance > BestDistance) continue; // Don't suggest groups that are not of this kind. llvm::SmallVector<diag::kind, 8> Diags; - if (::getDiagnosticsInGroup(Flavor, i, Diags) || Diags.empty()) + if (::getDiagnosticsInGroup(Flavor, &O, Diags) || Diags.empty()) continue; if (Distance == BestDistance) { @@ -593,7 +585,7 @@ StringRef DiagnosticIDs::getNearestOption(diag::Flavor Flavor, Best = ""; } else if (Distance < BestDistance) { // This is a better match. - Best = i->getName(); + Best = O.getName(); BestDistance = Distance; } } |