diff options
Diffstat (limited to 'clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp')
| -rw-r--r-- | clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp b/clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp index f142de46441..12be8a6dce7 100644 --- a/clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp +++ b/clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp @@ -13,6 +13,17 @@ namespace tidy { namespace utils { using tooling::RewriteRule; +TransformerClangTidyCheck::TransformerClangTidyCheck(tooling::RewriteRule R, + StringRef Name, + ClangTidyContext *Context) + : ClangTidyCheck(Name, Context), Rule(std::move(R)) { + for (const auto &Case : Rule.Cases) { + assert(Case.Explanation != nullptr && + "clang-tidy checks must have an explanation by default;" + " explicitly provide an empty explanation if none is desired"); + } +} + void TransformerClangTidyCheck::registerMatchers( ast_matchers::MatchFinder *Finder) { Finder->addDynamicMatcher(tooling::detail::buildMatcher(Rule), this); @@ -44,15 +55,13 @@ void TransformerClangTidyCheck::check( if (Transformations->empty()) return; - StringRef Message = "no explanation"; - if (Case.Explanation) { - if (Expected<std::string> E = Case.Explanation(Result)) - Message = *E; - else - llvm::errs() << "Error in explanation: " << llvm::toString(E.takeError()) - << "\n"; + Expected<std::string> Explanation = Case.Explanation(Result); + if (!Explanation) { + llvm::errs() << "Error in explanation: " + << llvm::toString(Explanation.takeError()) << "\n"; + return; } - DiagnosticBuilder Diag = diag(RootLoc, Message); + DiagnosticBuilder Diag = diag(RootLoc, *Explanation); for (const auto &T : *Transformations) { Diag << FixItHint::CreateReplacement(T.Range, T.Replacement); } |

