| 1 | // RUN: %check_clang_tidy --match-partial-fixes %s misc-const-correctness %t \ |
| 2 | // RUN: -config='{CheckOptions: {\ |
| 3 | // RUN: misc-const-correctness.AnalyzeValues: false,\ |
| 4 | // RUN: misc-const-correctness.AnalyzeReferences: false,\ |
| 5 | // RUN: misc-const-correctness.AnalyzePointers: true,\ |
| 6 | // RUN: misc-const-correctness.WarnPointersAsValues: false,\ |
| 7 | // RUN: misc-const-correctness.WarnPointersAsPointers: true,\ |
| 8 | // RUN: misc-const-correctness.TransformPointersAsValues: false,\ |
| 9 | // RUN: misc-const-correctness.TransformPointersAsPointers: true\ |
| 10 | // RUN: }}' \ |
| 11 | // RUN: -- -fno-delayed-template-parsing |
| 12 | |
| 13 | void pointee_to_const() { |
| 14 | int a[] = {1, 2}; |
| 15 | int *p_local0 = &a[0]; |
| 16 | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: pointee of variable 'p_local0' of type 'int *' can be declared 'const' |
| 17 | // CHECK-FIXES: int const*p_local0 |
| 18 | p_local0 = &a[1]; |
| 19 | } |
| 20 | |
| 21 | void array_of_pointer_to_const() { |
| 22 | int a[] = {1, 2}; |
| 23 | int *p_local0[1] = {&a[0]}; |
| 24 | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: pointee of variable 'p_local0' of type 'int *[1]' can be declared 'const' |
| 25 | // CHECK-FIXES: int const*p_local0[1] |
| 26 | p_local0[0] = &a[1]; |
| 27 | } |
| 28 | |
| 29 | template<class T> |
| 30 | void template_fn() { |
| 31 | T a[] = {1, 2}; |
| 32 | T *p_local0 = &a[0]; |
| 33 | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: pointee of variable 'p_local0' of type 'char *' can be declared 'const' |
| 34 | // CHECK-FIXES: T const*p_local0 |
| 35 | p_local0 = &a[1]; |
| 36 | } |
| 37 | |
| 38 | void instantiate() { |
| 39 | template_fn<char>(); |
| 40 | template_fn<int>(); |
| 41 | template_fn<char const>(); |
| 42 | } |
| 43 | |
| 44 | using const_int = int const; |
| 45 | void ignore_const_alias() { |
| 46 | const_int a[] = {1, 2}; |
| 47 | const_int *p_local0 = &a[0]; |
| 48 | p_local0 = &a[1]; |
| 49 | } |
| 50 | |
| 51 | |