forked from OSchip/llvm-project
[clang-tidy] Enable inline variable definitions in headers
Differential Revision: https://reviews.llvm.org/D34449 llvm-svn: 306538
This commit is contained in:
parent
86cf07a32e
commit
2990ac1ebd
|
@ -139,6 +139,9 @@ void DefinitionsInHeadersCheck::check(const MatchFinder::MatchResult &Result) {
|
|||
// 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; "
|
||||
|
|
|
@ -74,6 +74,14 @@ from multiple translation units.
|
|||
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
|
||||
-------
|
||||
|
||||
|
|
|
@ -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]
|
|
@ -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 @@ template <typename T>
|
|||
int CD<T, int>::f() { // OK: partial template specialization.
|
||||
return 0;
|
||||
}
|
||||
|
||||
constexpr int k = 1; // OK: constexpr variable has internal linkage.
|
||||
|
|
Loading…
Reference in New Issue