This revision was automatically updated to reflect the committed changes. Closed by commit rGfc84ebfff3a3: [clang-tidy] Ignore variable template partial specializations in `misc… (authored by Izaron, committed by hokein).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D119098/new/ https://reviews.llvm.org/D119098 Files: clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp clang-tools-extra/test/clang-tidy/checkers/misc-definitions-in-headers.hpp Index: clang-tools-extra/test/clang-tidy/checkers/misc-definitions-in-headers.hpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/misc-definitions-in-headers.hpp +++ clang-tools-extra/test/clang-tidy/checkers/misc-definitions-in-headers.hpp @@ -193,6 +193,16 @@ // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: full function template specialization 'f12<int>' defined in a header file; // CHECK-FIXES: inline const int f12() { return 0; } +template <typename T1, typename T2> +constexpr bool f13 = false; + +template <typename T> +constexpr bool f13<T, int> = true; // OK: template partial specialization + +template <> +constexpr bool f13<void, int> = false; +// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: variable 'f13<void, int>' defined in a header file; + int main() {} // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'main' defined in a header file; // CHECK-FIXES: {{^}}int main() { Index: clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp +++ clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp @@ -149,6 +149,9 @@ // Ignore inline variables. if (VD->isInline()) return; + // Ignore partial specializations. + if (isa<VarTemplatePartialSpecializationDecl>(VD)) + return; diag(VD->getLocation(), "variable %0 defined in a header file; "
Index: clang-tools-extra/test/clang-tidy/checkers/misc-definitions-in-headers.hpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/misc-definitions-in-headers.hpp +++ clang-tools-extra/test/clang-tidy/checkers/misc-definitions-in-headers.hpp @@ -193,6 +193,16 @@ // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: full function template specialization 'f12<int>' defined in a header file; // CHECK-FIXES: inline const int f12() { return 0; } +template <typename T1, typename T2> +constexpr bool f13 = false; + +template <typename T> +constexpr bool f13<T, int> = true; // OK: template partial specialization + +template <> +constexpr bool f13<void, int> = false; +// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: variable 'f13<void, int>' defined in a header file; + int main() {} // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'main' defined in a header file; // CHECK-FIXES: {{^}}int main() { Index: clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp +++ clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp @@ -149,6 +149,9 @@ // Ignore inline variables. if (VD->isInline()) return; + // Ignore partial specializations. + if (isa<VarTemplatePartialSpecializationDecl>(VD)) + return; diag(VD->getLocation(), "variable %0 defined in a header file; "
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits