diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/readability-non-const-parameter.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/readability-non-const-parameter.cpp | 289 |
1 files changed, 0 insertions, 289 deletions
diff --git a/clang-tools-extra/test/clang-tidy/readability-non-const-parameter.cpp b/clang-tools-extra/test/clang-tidy/readability-non-const-parameter.cpp deleted file mode 100644 index 6cd1f9130f2..00000000000 --- a/clang-tools-extra/test/clang-tidy/readability-non-const-parameter.cpp +++ /dev/null @@ -1,289 +0,0 @@ -// RUN: %check_clang_tidy %s readability-non-const-parameter %t - -// Currently the checker only warns about pointer arguments. -// -// It can be defined both that the data is const and that the pointer is const, -// the checker only checks if the data can be const-specified. -// -// It does not warn about pointers to records or function pointers. - -// Some external function where first argument is nonconst and second is const. -char *strcpy1(char *dest, const char *src); -unsigned my_strcpy(char *buf, const char *s); -unsigned my_strlen(const char *buf); - -// CHECK-MESSAGES: :[[@LINE+1]]:29: warning: pointer parameter 'last' can be pointer to const [readability-non-const-parameter] -void warn1(int *first, int *last) { - // CHECK-FIXES: {{^}}void warn1(int *first, const int *last) {{{$}} - *first = 0; - if (first < last) { - } // <- last can be const -} - -// TODO: warning should be written here -void warn2(char *p) { - char buf[10]; - strcpy1(buf, p); -} - -// CHECK-MESSAGES: :[[@LINE+1]]:19: warning: pointer parameter 'p' can be -void assign1(int *p) { - // CHECK-FIXES: {{^}}void assign1(const int *p) {{{$}} - const int *q; - q = p; -} - -// CHECK-MESSAGES: :[[@LINE+1]]:19: warning: pointer parameter 'p' can be -void assign2(int *p) { - // CHECK-FIXES: {{^}}void assign2(const int *p) {{{$}} - const int *q; - q = p + 1; -} - -void assign3(int *p) { - *p = 0; -} - -void assign4(int *p) { - *p += 2; -} - -void assign5(char *p) { - p[0] = 0; -} - -void assign6(int *p) { - int *q; - q = p++; -} - -void assign7(char *p) { - char *a, *b; - a = b = p; -} - -void assign8(char *a, char *b) { - char *x; - x = (a ? a : b); -} - -void assign9(unsigned char *str, const unsigned int i) { - unsigned char *p; - for (p = str + i; *p;) { - } -} - -void assign10(int *buf) { - int i, *p; - for (i = 0, p = buf; i < 10; i++, p++) { - *p = 1; - } -} - -// CHECK-MESSAGES: :[[@LINE+1]]:17: warning: pointer parameter 'p' can be -void init1(int *p) { - // CHECK-FIXES: {{^}}void init1(const int *p) {{{$}} - const int *q = p; -} - -// CHECK-MESSAGES: :[[@LINE+1]]:17: warning: pointer parameter 'p' can be -void init2(int *p) { - // CHECK-FIXES: {{^}}void init2(const int *p) {{{$}} - const int *q = p + 1; -} - -void init3(int *p) { - int *q = p; -} - -void init4(float *p) { - int *q = (int *)p; -} - -void init5(int *p) { - int *i = p ? p : 0; -} - -void init6(int *p) { - int *a[] = {p, p, 0}; -} - -void init7(int *p, int x) { - for (int *q = p + x - 1; 0; q++) - ; -} - -// CHECK-MESSAGES: :[[@LINE+1]]:18: warning: pointer parameter 'p' can be -int return1(int *p) { - // CHECK-FIXES: {{^}}int return1(const int *p) {{{$}} - return *p; -} - -// CHECK-MESSAGES: :[[@LINE+1]]:25: warning: pointer parameter 'p' can be -const int *return2(int *p) { - // CHECK-FIXES: {{^}}const int *return2(const int *p) {{{$}} - return p; -} - -// CHECK-MESSAGES: :[[@LINE+1]]:25: warning: pointer parameter 'p' can be -const int *return3(int *p) { - // CHECK-FIXES: {{^}}const int *return3(const int *p) {{{$}} - return p + 1; -} - -// CHECK-MESSAGES: :[[@LINE+1]]:27: warning: pointer parameter 'p' can be -const char *return4(char *p) { - // CHECK-FIXES: {{^}}const char *return4(const char *p) {{{$}} - return p ? p : ""; -} - -char *return5(char *s) { - return s; -} - -char *return6(char *s) { - return s + 1; -} - -char *return7(char *a, char *b) { - return a ? a : b; -} - -char return8(int *p) { - return ++(*p); -} - -void dontwarn1(int *p) { - ++(*p); -} - -void dontwarn2(int *p) { - (*p)++; -} - -int dontwarn3(_Atomic(int) * p) { - return *p; -} - -void callFunction1(char *p) { - strcpy1(p, "abc"); -} - -void callFunction2(char *p) { - strcpy1(&p[0], "abc"); -} - -void callFunction3(char *p) { - strcpy1(p + 2, "abc"); -} - -char *callFunction4(char *p) { - return strcpy1(p, "abc"); -} - -unsigned callFunction5(char *buf) { - unsigned len = my_strlen(buf); - return len + my_strcpy(buf, "abc"); -} - -void f6(int **p); -void callFunction6(int *p) { f6(&p); } - -typedef union { void *v; } t; -void f7(t obj); -void callFunction7(int *p) { - f7((t){p}); -} - -void f8(int &x); -void callFunction8(int *p) { - f8(*p); -} - -// Don't warn about nonconst function pointers that can be const. -void functionpointer(double f(double), int x) { - f(x); -} - -// TODO: This is a false positive. -// CHECK-MESSAGES: :[[@LINE+1]]:27: warning: pointer parameter 'p' can be -int functionpointer2(int *p) { - return *p; -} -void use_functionpointer2() { - int (*fp)(int *) = functionpointer2; // <- the parameter 'p' can't be const -} - -// Don't warn about nonconst record pointers that can be const. -struct XY { - int *x; - int *y; -}; -void recordpointer(struct XY *xy) { - *(xy->x) = 0; -} - -class C { -public: - C(int *p) : p(p) {} - -private: - int *p; -}; - -class C2 { -public: - // CHECK-MESSAGES: :[[@LINE+1]]:11: warning: pointer parameter 'p' can be - C2(int *p) : p(p) {} - // CHECK-FIXES: {{^}} C2(const int *p) : p(p) {}{{$}} - -private: - const int *p; -}; - -void tempObject(int *p) { - C c(p); -} - -// avoid fp for const pointer array -void constPointerArray(const char *remapped[][2]) { - const char *name = remapped[0][0]; -} - -class Warn { -public: - // CHECK-MESSAGES: :[[@LINE+1]]:21: warning: pointer parameter 'p' can be - void doStuff(int *p) { - // CHECK-FIXES: {{^}} void doStuff(const int *p) {{{$}} - x = *p; - } - -private: - int x; -}; - -class Base { -public: - // Ensure there is no false positive for this method. It is virtual. - virtual void doStuff(int *p) { - int x = *p; - } -}; - -class Derived : public Base { -public: - // Ensure there is no false positive for this method. It overrides a method. - void doStuff(int *p) override { - int x = *p; - } -}; - -extern char foo(char *s); // 1 -// CHECK-FIXES: {{^}}extern char foo(const char *s); // 1{{$}} -// CHECK-MESSAGES: :[[@LINE+1]]:16: warning: pointer parameter 's' can be -char foo(char *s) { - // CHECK-FIXES: {{^}}char foo(const char *s) {{{$}} - return *s; -} -char foo(char *s); // 2 -// CHECK-FIXES: {{^}}char foo(const char *s); // 2{{$}} |