summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp
diff options
context:
space:
mode:
authorDiana Picus <diana.picus@linaro.org>2017-01-27 07:19:22 +0000
committerDiana Picus <diana.picus@linaro.org>2017-01-27 07:19:22 +0000
commit914150172149e33b40cdc127af75f459c56233f3 (patch)
treebc973b5ba1ef22af07275ed569db371047915457 /clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp
parent572fca7111934e1889585c62bca78cbb2380b6d1 (diff)
downloadbcm5719-llvm-914150172149e33b40cdc127af75f459c56233f3.tar.gz
bcm5719-llvm-914150172149e33b40cdc127af75f459c56233f3.zip
Revert "Implement a new clang-tidy check that suggests users replace dynamic exception specifications with noexcept exception specifications."
This reverts commit r293217, its follow-up 293218 and part of 293234 because it broke all bots that build clang-tools-extra. llvm-svn: 293267
Diffstat (limited to 'clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp')
-rw-r--r--clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp114
1 files changed, 0 insertions, 114 deletions
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp
deleted file mode 100644
index a38274ebbd2..00000000000
--- a/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-//===--- UseNoexceptCheck.cpp - clang-tidy---------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "UseNoexceptCheck.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/Lex/Lexer.h"
-
-using namespace clang::ast_matchers;
-
-namespace clang {
-namespace tidy {
-namespace modernize {
-
-UseNoexceptCheck::UseNoexceptCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context),
- NoexceptMacro(Options.get("ReplacementString", "")),
- UseNoexceptFalse(Options.get("UseNoexceptFalse", true)) {}
-
-void UseNoexceptCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "ReplacementString", NoexceptMacro);
- Options.store(Opts, "UseNoexceptFalse", UseNoexceptFalse);
-}
-
-void UseNoexceptCheck::registerMatchers(MatchFinder *Finder) {
- if (!getLangOpts().CPlusPlus11)
- return;
-
- Finder->addMatcher(
- functionDecl(
- cxxMethodDecl(
- hasTypeLoc(loc(functionProtoType(hasDynamicExceptionSpec()))),
- anyOf(hasOverloadedOperatorName("delete[]"),
- hasOverloadedOperatorName("delete"), cxxDestructorDecl()))
- .bind("del-dtor"))
- .bind("funcDecl"),
- this);
-
- Finder->addMatcher(
- functionDecl(
- hasTypeLoc(loc(functionProtoType(hasDynamicExceptionSpec()))),
- unless(anyOf(hasOverloadedOperatorName("delete[]"),
- hasOverloadedOperatorName("delete"),
- cxxDestructorDecl())))
- .bind("funcDecl"),
- this);
-
- Finder->addMatcher(
- parmVarDecl(anyOf(hasType(pointerType(pointee(parenType(innerType(
- functionProtoType(hasDynamicExceptionSpec())))))),
- hasType(memberPointerType(pointee(parenType(innerType(
- functionProtoType(hasDynamicExceptionSpec()))))))))
- .bind("parmVarDecl"),
- this);
-}
-
-void UseNoexceptCheck::check(const MatchFinder::MatchResult &Result) {
- const FunctionProtoType *FnTy = nullptr;
- bool DtorOrOperatorDel = false;
- SourceRange Range;
-
- if (const auto *FuncDecl = Result.Nodes.getNodeAs<FunctionDecl>("funcDecl")) {
- DtorOrOperatorDel = Result.Nodes.getNodeAs<FunctionDecl>("del-dtor");
- FnTy = FuncDecl->getType()->getAs<FunctionProtoType>();
- if (const auto *TSI = FuncDecl->getTypeSourceInfo())
- Range =
- TSI->getTypeLoc().castAs<FunctionTypeLoc>().getExceptionSpecRange();
- } else if (const auto *ParmDecl =
- Result.Nodes.getNodeAs<ParmVarDecl>("parmVarDecl")) {
- FnTy = ParmDecl->getType()
- ->getAs<Type>()
- ->getPointeeType()
- ->getAs<FunctionProtoType>();
-
- if (const auto *TSI = ParmDecl->getTypeSourceInfo())
- Range = TSI->getTypeLoc()
- .getNextTypeLoc()
- .IgnoreParens()
- .castAs<FunctionProtoTypeLoc>()
- .getExceptionSpecRange();
- }
- CharSourceRange CRange = Lexer::makeFileCharRange(
- CharSourceRange::getTokenRange(Range), *Result.SourceManager,
- Result.Context->getLangOpts());
-
- assert(FnTy && "FunctionProtoType is null.");
- bool IsNoThrow = FnTy->isNothrow(*Result.Context);
- StringRef ReplacementStr =
- IsNoThrow
- ? NoexceptMacro.empty() ? "noexcept" : NoexceptMacro
- : NoexceptMacro.empty()
- ? (DtorOrOperatorDel || UseNoexceptFalse) ? "noexcept(false)"
- : ""
- : "";
-
- FixItHint FixIt;
- if ((IsNoThrow || NoexceptMacro.empty()) && CRange.isValid())
- FixIt = FixItHint::CreateReplacement(CRange, ReplacementStr);
-
- diag(Range.getBegin(), "dynamic exception specification '%0' is deprecated; "
- "consider %select{using '%2'|removing it}1 instead")
- << Lexer::getSourceText(CRange, *Result.SourceManager,
- Result.Context->getLangOpts())
- << ReplacementStr.empty() << ReplacementStr << FixIt;
-}
-
-} // namespace modernize
-} // namespace tidy
-} // namespace clang
OpenPOWER on IntegriCloud