Fix false positive in bugprone-throw-keyword-missing (#115302)
Fixes #115055 --------- Co-authored-by: Carlos Gálvez <carlos.galvez@zenseact.com>
This commit is contained in:
@@ -15,9 +15,6 @@ using namespace clang::ast_matchers;
|
||||
namespace clang::tidy::bugprone {
|
||||
|
||||
void ThrowKeywordMissingCheck::registerMatchers(MatchFinder *Finder) {
|
||||
auto CtorInitializerList =
|
||||
cxxConstructorDecl(hasAnyConstructorInitializer(anything()));
|
||||
|
||||
Finder->addMatcher(
|
||||
cxxConstructExpr(
|
||||
hasType(cxxRecordDecl(
|
||||
@@ -27,7 +24,7 @@ void ThrowKeywordMissingCheck::registerMatchers(MatchFinder *Finder) {
|
||||
stmt(anyOf(cxxThrowExpr(), callExpr(), returnStmt()))),
|
||||
hasAncestor(decl(anyOf(varDecl(), fieldDecl()))),
|
||||
hasAncestor(expr(cxxNewExpr(hasAnyPlacementArg(anything())))),
|
||||
allOf(hasAncestor(CtorInitializerList),
|
||||
allOf(hasAncestor(cxxConstructorDecl()),
|
||||
unless(hasAncestor(cxxCatchStmt()))))))
|
||||
.bind("temporary-exception-not-thrown"),
|
||||
this);
|
||||
|
||||
@@ -177,6 +177,10 @@ Changes in existing checks
|
||||
usages of ``sizeof()``, ``alignof()``, and ``offsetof()`` when adding or
|
||||
subtracting from a pointer directly or when used to scale a numeric value.
|
||||
|
||||
- Improved :doc:`bugprone-throw-keyword-missing
|
||||
<clang-tidy/checks/bugprone/throw-keyword-missing>` by fixing a false positive
|
||||
when using non-static member initializers and a constructor.
|
||||
|
||||
- Improved :doc:`bugprone-unchecked-optional-access
|
||||
<clang-tidy/checks/bugprone/unchecked-optional-access>` to support
|
||||
`bsl::optional` and `bdlb::NullableValue` from
|
||||
|
||||
@@ -139,6 +139,15 @@ CtorInitializerListTest::CtorInitializerListTest(float) try : exc(RegularExcepti
|
||||
RegularException();
|
||||
}
|
||||
|
||||
namespace GH115055 {
|
||||
class CtorInitializerListTest2 {
|
||||
public:
|
||||
CtorInitializerListTest2() {}
|
||||
private:
|
||||
RegularException exc{};
|
||||
};
|
||||
} // namespace GH115055
|
||||
|
||||
RegularException funcReturningExceptionTest(int i) {
|
||||
return RegularException();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user