https://github.com/schenker updated https://github.com/llvm/llvm-project/pull/99925
>From f16be0b63d6cd9728354c5f71cf3831482b6ec25 Mon Sep 17 00:00:00 2001 From: Thomas Schenker <thomas.schen...@protonmail.com> Date: Mon, 22 Jul 2024 21:39:28 +0200 Subject: [PATCH 1/2] improve clang-tidy misc-const-correctness to work with function-try-blocks. --- .../clang-tidy/misc/ConstCorrectnessCheck.cpp | 17 ++++++++--------- .../clang-tidy/misc/ConstCorrectnessCheck.h | 4 ++-- clang-tools-extra/docs/ReleaseNotes.rst | 3 +++ .../checkers/misc/const-correctness-values.cpp | 9 +++++++++ 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp index 8b500de0c028c..e20cf6fbcb55a 100644 --- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp @@ -93,13 +93,12 @@ void ConstCorrectnessCheck::registerMatchers(MatchFinder *Finder) { // shall be run. const auto FunctionScope = functionDecl( - hasBody( - compoundStmt(forEachDescendant( - declStmt(containsAnyDeclaration( - LocalValDecl.bind("local-value")), - unless(has(decompositionDecl()))) - .bind("decl-stmt"))) - .bind("scope"))) + hasBody(stmt(forEachDescendant( + declStmt(containsAnyDeclaration( + LocalValDecl.bind("local-value")), + unless(has(decompositionDecl()))) + .bind("decl-stmt"))) + .bind("scope"))) .bind("function-decl"); Finder->addMatcher(FunctionScope, this); @@ -109,7 +108,7 @@ void ConstCorrectnessCheck::registerMatchers(MatchFinder *Finder) { enum class VariableCategory { Value, Reference, Pointer }; void ConstCorrectnessCheck::check(const MatchFinder::MatchResult &Result) { - const auto *LocalScope = Result.Nodes.getNodeAs<CompoundStmt>("scope"); + const auto *LocalScope = Result.Nodes.getNodeAs<Stmt>("scope"); const auto *Variable = Result.Nodes.getNodeAs<VarDecl>("local-value"); const auto *Function = Result.Nodes.getNodeAs<FunctionDecl>("function-decl"); @@ -198,7 +197,7 @@ void ConstCorrectnessCheck::check(const MatchFinder::MatchResult &Result) { } } -void ConstCorrectnessCheck::registerScope(const CompoundStmt *LocalScope, +void ConstCorrectnessCheck::registerScope(const Stmt *LocalScope, ASTContext *Context) { auto &Analyzer = ScopesCache[LocalScope]; if (!Analyzer) diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h index 08ffde524522a..bba060e555d00 100644 --- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h +++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h @@ -32,10 +32,10 @@ class ConstCorrectnessCheck : public ClangTidyCheck { void check(const ast_matchers::MatchFinder::MatchResult &Result) override; private: - void registerScope(const CompoundStmt *LocalScope, ASTContext *Context); + void registerScope(const Stmt *LocalScope, ASTContext *Context); using MutationAnalyzer = std::unique_ptr<ExprMutationAnalyzer>; - llvm::DenseMap<const CompoundStmt *, MutationAnalyzer> ScopesCache; + llvm::DenseMap<const Stmt *, MutationAnalyzer> ScopesCache; llvm::DenseSet<SourceLocation> TemplateDiagnosticsCache; const bool AnalyzeValues; diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index a23483e6df6d2..ed005d8fa19ea 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -120,6 +120,9 @@ Improvements to clang-tidy - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. +- Improved :doc:`misc-const-correctness + <clang-tidy/checks/misc/const-correctness>` to work with function-try-blocks. + - Fixed bug where big values for unsigned check options overflowed into negative values when being printed with `--dump-config`. diff --git a/clang-tools-extra/test/clang-tidy/checkers/misc/const-correctness-values.cpp b/clang-tools-extra/test/clang-tidy/checkers/misc/const-correctness-values.cpp index cb6bfcc1dccba..2af4bfb0bd449 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/misc/const-correctness-values.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/misc/const-correctness-values.cpp @@ -56,6 +56,15 @@ void some_function(double np_arg0, wchar_t np_arg1) { np_local6--; } +int function_try_block() try { + int p_local0 = 0; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 'p_local0' of type 'int' can be declared 'const' + // CHECK-FIXES: int const p_local0 + return p_local0; +} catch (...) { + return 0; +} + void nested_scopes() { int p_local0 = 2; // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 'p_local0' of type 'int' can be declared 'const' >From d8fd66cf1706858cb028a6bd6a3a6761a4aa6d18 Mon Sep 17 00:00:00 2001 From: Thomas Schenker <thomas.schen...@protonmail.com> Date: Mon, 22 Jul 2024 21:58:04 +0200 Subject: [PATCH 2/2] fix release notes --- clang-tools-extra/docs/ReleaseNotes.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index ed005d8fa19ea..a8aaf882af9e0 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -120,9 +120,6 @@ Improvements to clang-tidy - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. -- Improved :doc:`misc-const-correctness - <clang-tidy/checks/misc/const-correctness>` to work with function-try-blocks. - - Fixed bug where big values for unsigned check options overflowed into negative values when being printed with `--dump-config`. @@ -378,7 +375,8 @@ Changes in existing checks - Improved :doc:`misc-const-correctness <clang-tidy/checks/misc/const-correctness>` check by avoiding infinite recursion for recursive functions with forwarding reference parameters and reference - variables which refer to themselves. + variables which refer to themselves. Also adapted the check to work with + function-try-blocks. - Improved :doc:`misc-definitions-in-headers <clang-tidy/checks/misc/definitions-in-headers>` check by replacing the local _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits