diff --git a/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.h b/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.h --- a/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.h +++ b/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.h @@ -41,7 +41,7 @@ private: const std::string NoexceptMacro; - bool UseNoexceptFalse; + const bool UseNoexceptFalse; }; } // namespace modernize diff --git a/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp --- a/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseNoexceptCheck.cpp @@ -27,22 +27,13 @@ } void UseNoexceptCheck::registerMatchers(MatchFinder *Finder) { - 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()))) + optionally(cxxMethodDecl(anyOf(hasAnyOverloadedOperatorName( + "delete[]", "delete"), + cxxDestructorDecl())) + .bind("del-dtor"))) .bind("funcDecl"), this); @@ -80,6 +71,10 @@ .castAs() .getExceptionSpecRange(); } + + if (Range.isInvalid()) + return; + CharSourceRange CRange = Lexer::makeFileCharRange( CharSourceRange::getTokenRange(Range), *Result.SourceManager, Result.Context->getLangOpts());