This revision was automatically updated to reflect the committed changes. Closed by commit rG5b5b75bfd4d4: [clang-tidy] Ignore implcit casts in cppcoreguidelines-owning-memory (authored by PiotrZSL).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156031/new/ https://reviews.llvm.org/D156031 Files: clang-tools-extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.h clang-tools-extra/docs/ReleaseNotes.rst clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/owning-memory.cpp Index: clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/owning-memory.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/owning-memory.cpp +++ clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/owning-memory.cpp @@ -382,3 +382,16 @@ template_function(IntOwner1); // Ok, but not actually ok, since type deduction removes owner template_function(stack_ptr1); // Bad, but type deduction gets it wrong } + +namespace PR63994 { + struct A { + virtual ~A() {} + }; + + struct B : public A {}; + + A* foo(int x) { + return new B; + // CHECK-NOTES: [[@LINE-1]]:5: warning: returning a newly created resource of type 'A *' or 'gsl::owner<>' from a function whose return type is not 'gsl::owner<>' + } +} Index: clang-tools-extra/docs/ReleaseNotes.rst =================================================================== --- clang-tools-extra/docs/ReleaseNotes.rst +++ clang-tools-extra/docs/ReleaseNotes.rst @@ -330,6 +330,10 @@ to emit warnings only on classes that are copyable/movable, as required by the corresponding rule. +- Improved :doc:`cppcoreguidelines-owning-memory + <clang-tidy/checks/cppcoreguidelines/owning-memory>` check now finds more + issues, especially those related to implicit casts. + - Deprecated C.48 enforcement from :doc:`cppcoreguidelines-prefer-member-initializer <clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>`. Please use :doc:`cppcoreguidelines-use-default-member-init Index: clang-tools-extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.h =================================================================== --- clang-tools-extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.h +++ clang-tools-extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.h @@ -37,6 +37,9 @@ void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; + std::optional<TraversalKind> getCheckTraversalKind() const override { + return TK_IgnoreUnlessSpelledInSource; + } private: bool handleDeletion(const ast_matchers::BoundNodes &Nodes);
Index: clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/owning-memory.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/owning-memory.cpp +++ clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/owning-memory.cpp @@ -382,3 +382,16 @@ template_function(IntOwner1); // Ok, but not actually ok, since type deduction removes owner template_function(stack_ptr1); // Bad, but type deduction gets it wrong } + +namespace PR63994 { + struct A { + virtual ~A() {} + }; + + struct B : public A {}; + + A* foo(int x) { + return new B; + // CHECK-NOTES: [[@LINE-1]]:5: warning: returning a newly created resource of type 'A *' or 'gsl::owner<>' from a function whose return type is not 'gsl::owner<>' + } +} Index: clang-tools-extra/docs/ReleaseNotes.rst =================================================================== --- clang-tools-extra/docs/ReleaseNotes.rst +++ clang-tools-extra/docs/ReleaseNotes.rst @@ -330,6 +330,10 @@ to emit warnings only on classes that are copyable/movable, as required by the corresponding rule. +- Improved :doc:`cppcoreguidelines-owning-memory + <clang-tidy/checks/cppcoreguidelines/owning-memory>` check now finds more + issues, especially those related to implicit casts. + - Deprecated C.48 enforcement from :doc:`cppcoreguidelines-prefer-member-initializer <clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>`. Please use :doc:`cppcoreguidelines-use-default-member-init Index: clang-tools-extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.h =================================================================== --- clang-tools-extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.h +++ clang-tools-extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.h @@ -37,6 +37,9 @@ void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; + std::optional<TraversalKind> getCheckTraversalKind() const override { + return TK_IgnoreUnlessSpelledInSource; + } private: bool handleDeletion(const ast_matchers::BoundNodes &Nodes);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits