[PATCH] D34449: [clang-tidy] Enable inline variable definitions in headers.
Phabricator via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 28 05:48:04 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL306538: [clang-tidy] Enable inline variable definitions in headers (authored by xazax).
Changed prior to commit:
https://reviews.llvm.org/D34449?vs=104379&id=104389#toc
Repository:
rL LLVM
https://reviews.llvm.org/D34449
Files:
clang-tools-extra/trunk/clang-tidy/misc/DefinitionsInHeadersCheck.cpp
clang-tools-extra/trunk/docs/clang-tidy/checks/misc-definitions-in-headers.rst
clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers-1z.hpp
clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers.hpp
Index: clang-tools-extra/trunk/clang-tidy/misc/DefinitionsInHeadersCheck.cpp
===================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/DefinitionsInHeadersCheck.cpp
+++ clang-tools-extra/trunk/clang-tidy/misc/DefinitionsInHeadersCheck.cpp
@@ -139,6 +139,9 @@
// Ignore variable definition within function scope.
if (VD->hasLocalStorage() || VD->isStaticLocal())
return;
+ // Ignore inline variables.
+ if (VD->isInline())
+ return;
diag(VD->getLocation(),
"variable %0 defined in a header file; "
Index: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-definitions-in-headers.rst
===================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-definitions-in-headers.rst
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-definitions-in-headers.rst
@@ -74,6 +74,14 @@
template <typename T>
void B<T>::f1() {}
+ class CE {
+ constexpr static int i = 5; // OK: inline variable definition.
+ };
+
+ inline int i = 5; // OK: inline variable definition.
+
+ constexpr int k = 1; // OK: constexpr variable has internal linkage.
+
Options
-------
Index: clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers.hpp
===================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers.hpp
+++ clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers.hpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s misc-definitions-in-headers %t
+// RUN: %check_clang_tidy %s misc-definitions-in-headers %t -- -- -std=c++11
int f() {
// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f' defined in a header file; function definitions in header files can lead to ODR violations [misc-definitions-in-headers]
@@ -175,3 +175,5 @@
int CD<T, int>::f() { // OK: partial template specialization.
return 0;
}
+
+constexpr int k = 1; // OK: constexpr variable has internal linkage.
Index: clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers-1z.hpp
===================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers-1z.hpp
+++ clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers-1z.hpp
@@ -0,0 +1,10 @@
+// RUN: %check_clang_tidy %s misc-definitions-in-headers %t -- -- -std=c++1z
+
+class CE {
+ constexpr static int i = 5; // OK: inline variable definition.
+};
+
+inline int i = 5; // OK: inline variable definition.
+
+int b = 1;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: variable 'b' defined in a header file; variable definitions in header files can lead to ODR violations [misc-definitions-in-headers]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D34449.104389.patch
Type: text/x-patch
Size: 2784 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170628/abb83bb5/attachment-0001.bin>
More information about the cfe-commits
mailing list