Carlos =?utf-8?q?Gálvez?= <carlos.gal...@zenseact.com> Message-ID: In-Reply-To: <llvm.org/llvm/llvm-project/pull/115...@github.com>
https://github.com/carlosgalvezp updated https://github.com/llvm/llvm-project/pull/115302 >From c6ad9d042612c63cb9862782f17082e07277fc2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20G=C3=A1lvez?= <carlos.gal...@zenseact.com> Date: Wed, 6 Nov 2024 08:52:06 +0000 Subject: [PATCH 1/2] Fix false positive in bugprone-throw-keyword-missing Fixes #115055 --- .../clang-tidy/bugprone/ThrowKeywordMissingCheck.cpp | 5 +---- clang-tools-extra/docs/ReleaseNotes.rst | 4 ++++ .../checkers/bugprone/throw-keyword-missing.cpp | 8 ++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/ThrowKeywordMissingCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ThrowKeywordMissingCheck.cpp index 64c155c29cf8b9..17d2e75e4f666f 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ThrowKeywordMissingCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ThrowKeywordMissingCheck.cpp @@ -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); diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 51ba157ab05deb..e3294c12896357 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -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 diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/throw-keyword-missing.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/throw-keyword-missing.cpp index 49233c0deefdf0..aa4bccb109f3f3 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/throw-keyword-missing.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/throw-keyword-missing.cpp @@ -139,6 +139,14 @@ CtorInitializerListTest::CtorInitializerListTest(float) try : exc(RegularExcepti RegularException(); } +// https://github.com/llvm/llvm-project/issues/115055 +class CtorInitializerListTest2 { + public: + CtorInitializerListTest2(){} + private: + RegularException exc{}; +}; + RegularException funcReturningExceptionTest(int i) { return RegularException(); } >From 9c4caf2ad8b13c721d9b64c96b86da4384edeb35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20G=C3=A1lvez?= <carlos.gal...@zenseact.com> Date: Sat, 9 Nov 2024 20:46:23 +0000 Subject: [PATCH 2/2] Fix review comments --- .../clang-tidy/checkers/bugprone/throw-keyword-missing.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/throw-keyword-missing.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/throw-keyword-missing.cpp index aa4bccb109f3f3..bafd3d19b5a319 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/throw-keyword-missing.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/throw-keyword-missing.cpp @@ -139,13 +139,14 @@ CtorInitializerListTest::CtorInitializerListTest(float) try : exc(RegularExcepti RegularException(); } -// https://github.com/llvm/llvm-project/issues/115055 +namespace GH115055 { class CtorInitializerListTest2 { public: - CtorInitializerListTest2(){} + CtorInitializerListTest2() {} private: RegularException exc{}; }; +} // namespace GH115055 RegularException funcReturningExceptionTest(int i) { return RegularException(); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits