diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy')
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-misplaced-const.c | 45 | ||||
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-misplaced-const.cpp | 37 |
2 files changed, 82 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/misc-misplaced-const.c b/clang-tools-extra/test/clang-tidy/misc-misplaced-const.c new file mode 100644 index 00000000000..cccf3a4506f --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/misc-misplaced-const.c @@ -0,0 +1,45 @@ +// RUN: %check_clang_tidy %s misc-misplaced-const %t + +typedef int plain_i; +typedef int *ip; +typedef const int *cip; + +typedef void (*func_ptr)(void); + +void func(void) { + // ok + const int *i0 = 0; + const plain_i *i1 = 0; + const cip i2 = 0; // const applies to both pointer and pointee. + + // Not ok + const ip i3 = 0; + // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: 'i3' declared with a const-qualified typedef type; results in the type being 'int *const' instead of 'const int *' + + ip const i4 = 0; + // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: 'i4' declared with a const-qualified + + const volatile ip i5 = 0; + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: 'i5' declared with a const-qualified typedef type; results in the type being 'int *const volatile' instead of 'const int *volatile' +} + +void func2(const plain_i *i1, + const cip i2, + const ip i3, + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: 'i3' declared with a const-qualified + const int *i4) { +} + +struct S { + const int *i0; + const plain_i *i1; + const cip i2; + const ip i3; + // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: 'i3' declared with a const-qualified +}; + +// Function pointers should not be diagnosed because a function +// pointer type can never be const. +void func3(const func_ptr fp) { + const func_ptr fp2 = fp; +} diff --git a/clang-tools-extra/test/clang-tidy/misc-misplaced-const.cpp b/clang-tools-extra/test/clang-tidy/misc-misplaced-const.cpp new file mode 100644 index 00000000000..5483cabae7f --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/misc-misplaced-const.cpp @@ -0,0 +1,37 @@ +// RUN: %check_clang_tidy %s misc-misplaced-const %t + +typedef int plain_i; +typedef int *ip; +typedef const int *cip; + +void func() { + if (const int *i = 0) + ; + if (const plain_i *i = 0) + ; + if (const cip i = 0) + ; + + // CHECK-MESSAGES: :[[@LINE+1]]:16: warning: 'i' declared with a const-qualified typedef type; results in the type being 'int *const' instead of 'const int *' + if (const ip i = 0) + ; +} + +template <typename Ty> +struct S { + const Ty *i; + const Ty &i2; +}; + +template struct S<int>; +template struct S<ip>; // ok +template struct S<cip>; +template struct S<int *>; // ok + +struct T { + typedef void (T::*PMF)(); + + void f() { + const PMF val = &T::f; // ok + } +}; |

