[clang-tools-extra] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller created https://github.com/llvm/llvm-project/pull/88138 Fix `bugprone-forwarding-reference-overload` so it doesn't report a constructor that is deleted. >From 6c188e730f43467c3a7940c0ca6f6bd0bc8fc7f1 Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Tue, 9 Apr 2024 16:03:31 +0100 Subject: [PATCH] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` Fix `bugprone-forwarding-reference-overload` so it doesn't report a constructor that is deleted. --- .../bugprone/ForwardingReferenceOverloadCheck.cpp | 1 + .../checkers/bugprone/forwarding-reference-overload.cpp| 7 +++ 2 files changed, 8 insertions(+) diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index c608fe713f9f5b..e42b40d7b6690e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp @@ -73,6 +73,7 @@ void ForwardingReferenceOverloadCheck::registerMatchers(MatchFinder *Finder) { DeclarationMatcher FindOverload = cxxConstructorDecl( hasParameter(0, ForwardingRefParm), + unless(isDeleted()), unless(hasAnyParameter( // No warning: enable_if as constructor parameter. parmVarDecl(hasType(isEnableIf(), diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp index 38b0691bc9f1ec..609baa049a2063 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp @@ -251,3 +251,10 @@ class Test10 { Test10(T &&Item, E e) : e(e){} }; + +// A deleted ctor cannot hide anything +class Test11 { +public: + template + Test11(T&&) = delete; +}; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` (PR #88138)
MikeWeller wrote: https://github.com/llvm/llvm-project/issues/88128 https://github.com/llvm/llvm-project/pull/88138 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller edited https://github.com/llvm/llvm-project/pull/88138 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
@@ -251,3 +251,10 @@ class Test10 { Test10(T &&Item, E e) : e(e){} }; + +// A deleted ctor cannot hide anything +class Test11 { +public: + template + Test11(T&&) = delete; MikeWeller wrote: Although this is enough to trigger (or not after the fix) the issue, perhaps I should include a copy+move ctor below for clarity? https://github.com/llvm/llvm-project/pull/88138 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller updated https://github.com/llvm/llvm-project/pull/88138 >From 4cb9527430d3c7f9acc518427a29eae0aa7e00d1 Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Tue, 9 Apr 2024 16:03:31 +0100 Subject: [PATCH] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` Fix `bugprone-forwarding-reference-overload` so it doesn't report a constructor that is deleted. --- .../bugprone/ForwardingReferenceOverloadCheck.cpp | 1 + .../bugprone/forwarding-reference-overload.cpp | 10 ++ 2 files changed, 11 insertions(+) diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index c608fe713f9f5b..e42b40d7b6690e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp @@ -73,6 +73,7 @@ void ForwardingReferenceOverloadCheck::registerMatchers(MatchFinder *Finder) { DeclarationMatcher FindOverload = cxxConstructorDecl( hasParameter(0, ForwardingRefParm), + unless(isDeleted()), unless(hasAnyParameter( // No warning: enable_if as constructor parameter. parmVarDecl(hasType(isEnableIf(), diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp index 38b0691bc9f1ec..92dfb718bb51b7 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp @@ -251,3 +251,13 @@ class Test10 { Test10(T &&Item, E e) : e(e){} }; + +// A deleted ctor cannot hide anything +class Test11 { +public: + template + Test11(T&&) = delete; + + Test11(const Test11 &) = default; + Test11(Test11 &&) = default; +}; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller ready_for_review https://github.com/llvm/llvm-project/pull/88138 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
MikeWeller wrote: Sorry, didn't realize there are release notes I can updated in the change itself. Will do this Monday. https://github.com/llvm/llvm-project/pull/88138 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller updated https://github.com/llvm/llvm-project/pull/88138 >From 4cb9527430d3c7f9acc518427a29eae0aa7e00d1 Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Tue, 9 Apr 2024 16:03:31 +0100 Subject: [PATCH 1/2] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` Fix `bugprone-forwarding-reference-overload` so it doesn't report a constructor that is deleted. --- .../bugprone/ForwardingReferenceOverloadCheck.cpp | 1 + .../bugprone/forwarding-reference-overload.cpp | 10 ++ 2 files changed, 11 insertions(+) diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index c608fe713f9f5b..e42b40d7b6690e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp @@ -73,6 +73,7 @@ void ForwardingReferenceOverloadCheck::registerMatchers(MatchFinder *Finder) { DeclarationMatcher FindOverload = cxxConstructorDecl( hasParameter(0, ForwardingRefParm), + unless(isDeleted()), unless(hasAnyParameter( // No warning: enable_if as constructor parameter. parmVarDecl(hasType(isEnableIf(), diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp index 38b0691bc9f1ec..92dfb718bb51b7 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp @@ -251,3 +251,13 @@ class Test10 { Test10(T &&Item, E e) : e(e){} }; + +// A deleted ctor cannot hide anything +class Test11 { +public: + template + Test11(T&&) = delete; + + Test11(const Test11 &) = default; + Test11(Test11 &&) = default; +}; >From 5f4f9c937ce9b2da54bbf303ddfa0d18dc92f4dc Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Mon, 15 Apr 2024 08:07:16 +0100 Subject: [PATCH 2/2] Update release notes --- clang-tools-extra/docs/ReleaseNotes.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index a7193e90c38da2..1a59449fdf7560 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -100,6 +100,7 @@ Improvements to clang-tidy - Improved :program:`run-clang-tidy.py` script. Added argument `-source-filter` to filter source files from the compilation database, via a RegEx. In a similar fashion to what `-header-filter` does for header files. +- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller updated https://github.com/llvm/llvm-project/pull/88138 >From 483bd05ec3c0575ed6771ef093368d6be19f5d3f Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Tue, 9 Apr 2024 16:03:31 +0100 Subject: [PATCH] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` Fix `bugprone-forwarding-reference-overload` so it doesn't report a constructor that is deleted. --- .../bugprone/ForwardingReferenceOverloadCheck.cpp | 1 + clang-tools-extra/docs/ReleaseNotes.rst| 1 + .../bugprone/forwarding-reference-overload.cpp | 10 ++ 3 files changed, 12 insertions(+) diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index c608fe713f9f5b..e42b40d7b6690e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp @@ -73,6 +73,7 @@ void ForwardingReferenceOverloadCheck::registerMatchers(MatchFinder *Finder) { DeclarationMatcher FindOverload = cxxConstructorDecl( hasParameter(0, ForwardingRefParm), + unless(isDeleted()), unless(hasAnyParameter( // No warning: enable_if as constructor parameter. parmVarDecl(hasType(isEnableIf(), diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 1405fb0df1f8dd..4e4dd35242478f 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -102,6 +102,7 @@ Improvements to clang-tidy similar fashion to what `-header-filter` does for header files. - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. +- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp index 38b0691bc9f1ec..92dfb718bb51b7 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp @@ -251,3 +251,13 @@ class Test10 { Test10(T &&Item, E e) : e(e){} }; + +// A deleted ctor cannot hide anything +class Test11 { +public: + template + Test11(T&&) = delete; + + Test11(const Test11 &) = default; + Test11(Test11 &&) = default; +}; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
MikeWeller wrote: Given the small size of the change I just did a rebase and force push to resolve conflicts with the release notes. https://github.com/llvm/llvm-project/pull/88138 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller updated https://github.com/llvm/llvm-project/pull/88138 >From 483bd05ec3c0575ed6771ef093368d6be19f5d3f Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Tue, 9 Apr 2024 16:03:31 +0100 Subject: [PATCH 1/2] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` Fix `bugprone-forwarding-reference-overload` so it doesn't report a constructor that is deleted. --- .../bugprone/ForwardingReferenceOverloadCheck.cpp | 1 + clang-tools-extra/docs/ReleaseNotes.rst| 1 + .../bugprone/forwarding-reference-overload.cpp | 10 ++ 3 files changed, 12 insertions(+) diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index c608fe713f9f5b..e42b40d7b6690e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp @@ -73,6 +73,7 @@ void ForwardingReferenceOverloadCheck::registerMatchers(MatchFinder *Finder) { DeclarationMatcher FindOverload = cxxConstructorDecl( hasParameter(0, ForwardingRefParm), + unless(isDeleted()), unless(hasAnyParameter( // No warning: enable_if as constructor parameter. parmVarDecl(hasType(isEnableIf(), diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 1405fb0df1f8dd..4e4dd35242478f 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -102,6 +102,7 @@ Improvements to clang-tidy similar fashion to what `-header-filter` does for header files. - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. +- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp index 38b0691bc9f1ec..92dfb718bb51b7 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp @@ -251,3 +251,13 @@ class Test10 { Test10(T &&Item, E e) : e(e){} }; + +// A deleted ctor cannot hide anything +class Test11 { +public: + template + Test11(T&&) = delete; + + Test11(const Test11 &) = default; + Test11(Test11 &&) = default; +}; >From 49eccb42605236abb56cef2950a6d1a4273b45cb Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Mon, 15 Apr 2024 13:55:54 +0100 Subject: [PATCH 2/2] fixup! [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` --- clang-tools-extra/docs/ReleaseNotes.rst | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 4e4dd35242478f..b3d710535f625a 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -102,7 +102,6 @@ Improvements to clang-tidy similar fashion to what `-header-filter` does for header files. - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. -- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ @@ -287,6 +286,10 @@ Changes in existing checks check by resolving fix-it overlaps in template code by disregarding implicit instances. +- Improved :doc:`bugprone-forwarding-reference-overload + ` + check to not flag deleted constructors which are unable to hide anything. + Removed checks ^^ ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
MikeWeller wrote: @PiotrZSL apologies, have put it in the correct location. Is there a way to preview/check the `:doc:` thing? I assume there is some kind of preprocessor/tool step for this? I copied what the rest are doing and put the appropriate section of the https://clang.llvm.org/extra/clang-tidy/checks/bugprone/forwarding-reference-overload.html URL. https://github.com/llvm/llvm-project/pull/88138 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller updated https://github.com/llvm/llvm-project/pull/88138 >From 483bd05ec3c0575ed6771ef093368d6be19f5d3f Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Tue, 9 Apr 2024 16:03:31 +0100 Subject: [PATCH 1/3] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` Fix `bugprone-forwarding-reference-overload` so it doesn't report a constructor that is deleted. --- .../bugprone/ForwardingReferenceOverloadCheck.cpp | 1 + clang-tools-extra/docs/ReleaseNotes.rst| 1 + .../bugprone/forwarding-reference-overload.cpp | 10 ++ 3 files changed, 12 insertions(+) diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index c608fe713f9f5b..e42b40d7b6690e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp @@ -73,6 +73,7 @@ void ForwardingReferenceOverloadCheck::registerMatchers(MatchFinder *Finder) { DeclarationMatcher FindOverload = cxxConstructorDecl( hasParameter(0, ForwardingRefParm), + unless(isDeleted()), unless(hasAnyParameter( // No warning: enable_if as constructor parameter. parmVarDecl(hasType(isEnableIf(), diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 1405fb0df1f8dd..4e4dd35242478f 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -102,6 +102,7 @@ Improvements to clang-tidy similar fashion to what `-header-filter` does for header files. - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. +- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp index 38b0691bc9f1ec..92dfb718bb51b7 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp @@ -251,3 +251,13 @@ class Test10 { Test10(T &&Item, E e) : e(e){} }; + +// A deleted ctor cannot hide anything +class Test11 { +public: + template + Test11(T&&) = delete; + + Test11(const Test11 &) = default; + Test11(Test11 &&) = default; +}; >From 49eccb42605236abb56cef2950a6d1a4273b45cb Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Mon, 15 Apr 2024 13:55:54 +0100 Subject: [PATCH 2/3] fixup! [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` --- clang-tools-extra/docs/ReleaseNotes.rst | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 4e4dd35242478f..b3d710535f625a 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -102,7 +102,6 @@ Improvements to clang-tidy similar fashion to what `-header-filter` does for header files. - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. -- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ @@ -287,6 +286,10 @@ Changes in existing checks check by resolving fix-it overlaps in template code by disregarding implicit instances. +- Improved :doc:`bugprone-forwarding-reference-overload + ` + check to not flag deleted constructors which are unable to hide anything. + Removed checks ^^ >From fd545ed87cab79e33dbc7de42a1d136114615fe4 Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Mon, 15 Apr 2024 15:13:18 +0100 Subject: [PATCH 3/3] fixup! [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` --- clang-tools-extra/docs/ReleaseNotes.rst | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index b3d710535f625a..c504335676ac46 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -147,6 +147,10 @@ Changes in existing checks ` check by detecting side effect from calling a method with non-const reference parameters. +- Improved :doc:`bugprone-forwarding-reference-overload + ` + check to not flag deleted constructors which are unable to hide anything. + - Improved :doc:`bugprone-inc-dec-in-conditions ` check to ignore code within unevaluated contexts, such as ``decltype``. @@ -286
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller updated https://github.com/llvm/llvm-project/pull/88138 >From 483bd05ec3c0575ed6771ef093368d6be19f5d3f Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Tue, 9 Apr 2024 16:03:31 +0100 Subject: [PATCH 1/4] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` Fix `bugprone-forwarding-reference-overload` so it doesn't report a constructor that is deleted. --- .../bugprone/ForwardingReferenceOverloadCheck.cpp | 1 + clang-tools-extra/docs/ReleaseNotes.rst| 1 + .../bugprone/forwarding-reference-overload.cpp | 10 ++ 3 files changed, 12 insertions(+) diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index c608fe713f9f5b..e42b40d7b6690e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp @@ -73,6 +73,7 @@ void ForwardingReferenceOverloadCheck::registerMatchers(MatchFinder *Finder) { DeclarationMatcher FindOverload = cxxConstructorDecl( hasParameter(0, ForwardingRefParm), + unless(isDeleted()), unless(hasAnyParameter( // No warning: enable_if as constructor parameter. parmVarDecl(hasType(isEnableIf(), diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 1405fb0df1f8dd..4e4dd35242478f 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -102,6 +102,7 @@ Improvements to clang-tidy similar fashion to what `-header-filter` does for header files. - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. +- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp index 38b0691bc9f1ec..92dfb718bb51b7 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp @@ -251,3 +251,13 @@ class Test10 { Test10(T &&Item, E e) : e(e){} }; + +// A deleted ctor cannot hide anything +class Test11 { +public: + template + Test11(T&&) = delete; + + Test11(const Test11 &) = default; + Test11(Test11 &&) = default; +}; >From 49eccb42605236abb56cef2950a6d1a4273b45cb Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Mon, 15 Apr 2024 13:55:54 +0100 Subject: [PATCH 2/4] fixup! [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` --- clang-tools-extra/docs/ReleaseNotes.rst | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 4e4dd35242478f..b3d710535f625a 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -102,7 +102,6 @@ Improvements to clang-tidy similar fashion to what `-header-filter` does for header files. - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. -- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ @@ -287,6 +286,10 @@ Changes in existing checks check by resolving fix-it overlaps in template code by disregarding implicit instances. +- Improved :doc:`bugprone-forwarding-reference-overload + ` + check to not flag deleted constructors which are unable to hide anything. + Removed checks ^^ >From fd545ed87cab79e33dbc7de42a1d136114615fe4 Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Mon, 15 Apr 2024 15:13:18 +0100 Subject: [PATCH 3/4] fixup! [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` --- clang-tools-extra/docs/ReleaseNotes.rst | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index b3d710535f625a..c504335676ac46 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -147,6 +147,10 @@ Changes in existing checks ` check by detecting side effect from calling a method with non-const reference parameters. +- Improved :doc:`bugprone-forwarding-reference-overload + ` + check to not flag deleted constructors which are unable to hide anything. + - Improved :doc:`bugprone-inc-dec-in-conditions ` check to ignore code within unevaluated contexts, such as ``decltype``. @@ -286
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
MikeWeller wrote: FYI I don't have merge privs, not sure if I need to ping anybody. Then again I still see "This workflow requires approval from a maintainer", possibly because this is my first contribution? https://github.com/llvm/llvm-project/pull/88138 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
@@ -286,6 +286,10 @@ Changes in existing checks check by resolving fix-it overlaps in template code by disregarding implicit instances. +- Improved :doc:`bugprone-forwarding-reference-overload + ` + check to not flag deleted constructors which are unable to hide anything. MikeWeller wrote: Done in bab66e1, let me know if you have a better suggestion https://github.com/llvm/llvm-project/pull/88138 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Ignore deleted ctor in `bugprone-forwarding-reference-overload` (PR #88138)
https://github.com/MikeWeller updated https://github.com/llvm/llvm-project/pull/88138 >From 483bd05ec3c0575ed6771ef093368d6be19f5d3f Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Tue, 9 Apr 2024 16:03:31 +0100 Subject: [PATCH 1/5] [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` Fix `bugprone-forwarding-reference-overload` so it doesn't report a constructor that is deleted. --- .../bugprone/ForwardingReferenceOverloadCheck.cpp | 1 + clang-tools-extra/docs/ReleaseNotes.rst| 1 + .../bugprone/forwarding-reference-overload.cpp | 10 ++ 3 files changed, 12 insertions(+) diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index c608fe713f9f5b..e42b40d7b6690e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp @@ -73,6 +73,7 @@ void ForwardingReferenceOverloadCheck::registerMatchers(MatchFinder *Finder) { DeclarationMatcher FindOverload = cxxConstructorDecl( hasParameter(0, ForwardingRefParm), + unless(isDeleted()), unless(hasAnyParameter( // No warning: enable_if as constructor parameter. parmVarDecl(hasType(isEnableIf(), diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 1405fb0df1f8dd..4e4dd35242478f 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -102,6 +102,7 @@ Improvements to clang-tidy similar fashion to what `-header-filter` does for header files. - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. +- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp index 38b0691bc9f1ec..92dfb718bb51b7 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp @@ -251,3 +251,13 @@ class Test10 { Test10(T &&Item, E e) : e(e){} }; + +// A deleted ctor cannot hide anything +class Test11 { +public: + template + Test11(T&&) = delete; + + Test11(const Test11 &) = default; + Test11(Test11 &&) = default; +}; >From 49eccb42605236abb56cef2950a6d1a4273b45cb Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Mon, 15 Apr 2024 13:55:54 +0100 Subject: [PATCH 2/5] fixup! [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` --- clang-tools-extra/docs/ReleaseNotes.rst | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 4e4dd35242478f..b3d710535f625a 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -102,7 +102,6 @@ Improvements to clang-tidy similar fashion to what `-header-filter` does for header files. - Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` to aid in clang-tidy and test development. -- Fixed an issue with `bugprone-forwarding-reference-overload` where it would incorrectly flag deleted constructors New checks ^^ @@ -287,6 +286,10 @@ Changes in existing checks check by resolving fix-it overlaps in template code by disregarding implicit instances. +- Improved :doc:`bugprone-forwarding-reference-overload + ` + check to not flag deleted constructors which are unable to hide anything. + Removed checks ^^ >From fd545ed87cab79e33dbc7de42a1d136114615fe4 Mon Sep 17 00:00:00 2001 From: Mike Weller Date: Mon, 15 Apr 2024 15:13:18 +0100 Subject: [PATCH 3/5] fixup! [clang-tidy] Ignore delete ctor in `bugprone-forwarding-reference-overload` --- clang-tools-extra/docs/ReleaseNotes.rst | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index b3d710535f625a..c504335676ac46 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -147,6 +147,10 @@ Changes in existing checks ` check by detecting side effect from calling a method with non-const reference parameters. +- Improved :doc:`bugprone-forwarding-reference-overload + ` + check to not flag deleted constructors which are unable to hide anything. + - Improved :doc:`bugprone-inc-dec-in-conditions ` check to ignore code within unevaluated contexts, such as ``decltype``. @@ -286
[clang-tools-extra] [include-cleaner] don't consider the associated header unused (PR #67228)
MikeWeller wrote: Is it @sam-mccall who needs to address remaining comments? Or how can we move this along? I'd also be keen on getting this change merged. https://github.com/llvm/llvm-project/pull/67228 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits