[PATCH] D56661: [clang-tidy] Fix incorrect array name generation in cppcoreguidelines-pro-bounds-constant-array-index
Dmitry Venikov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 14 05:13:19 PST 2019
Quolyk created this revision.
Quolyk added reviewers: aaron.ballman, alexfh, JonasToth, omtcyfz.
Herald added subscribers: cfe-commits, arphaman, kbarton, xazax.hun, nemanjai.
This patch fixes incorrect array name generation for a cppcoreguidelines-pro-bounds-constant-array-index warning.
Motivation: https://bugs.llvm.org/show_bug.cgi?id=38510.
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D56661
Files:
test/clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index-gslheader.cpp
test/clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index.cpp
Index: test/clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index.cpp
===================================================================
--- test/clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index.cpp
+++ test/clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index.cpp
@@ -47,12 +47,12 @@
}
void g() {
- int a[10];
+ int list[10];
for (int i = 0; i < 10; ++i) {
- a[i] = i;
+ list[i] = i;
// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use array subscript when the index is not an integer constant expression; use gsl::at() instead
- // CHECK-FIXES: gsl::at(a, i) = i;
- gsl::at(a, i) = i; // OK, gsl::at() instead of []
+ // CHECK-FIXES: gsl::at(list, i) = i;
+ gsl::at(list, i) = i; // OK, gsl::at() instead of []
}
a[-1] = 3; // flagged by clang-diagnostic-array-bounds
Index: test/clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index-gslheader.cpp
===================================================================
--- test/clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index-gslheader.cpp
+++ test/clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index-gslheader.cpp
@@ -24,48 +24,48 @@
return base + 3;
}
-void f(std::array<int, 10> a, int pos) {
- a [ pos / 2 /*comment*/] = 1;
+void f(std::array<int, 10> list, int pos) {
+ list [ pos / 2 /*comment*/] = 1;
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not use array subscript when the index is not an integer constant expression; use gsl::at() instead [cppcoreguidelines-pro-bounds-constant-array-index]
- // CHECK-FIXES: gsl::at(a, pos / 2 /*comment*/) = 1;
- int j = a[pos - 1];
+ // CHECK-FIXES: gsl::at(list, pos / 2 /*comment*/) = 1;
+ int j = list[pos - 1];
// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: do not use array subscript when the index is not an integer constant expression; use gsl::at() instead
- // CHECK-FIXES: int j = gsl::at(a, pos - 1);
+ // CHECK-FIXES: int j = gsl::at(list, pos - 1);
- a.at(pos-1) = 2; // OK, at() instead of []
- gsl::at(a, pos-1) = 2; // OK, gsl::at() instead of []
+ list.at(pos-1) = 2; // OK, at() instead of []
+ gsl::at(list, pos-1) = 2; // OK, gsl::at() instead of []
- a[-1] = 3;
+ list[-1] = 3;
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: std::array<> index -1 is negative [cppcoreguidelines-pro-bounds-constant-array-index]
- a[10] = 4;
+ list[10] = 4;
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: std::array<> index 10 is past the end of the array (which contains 10 elements) [cppcoreguidelines-pro-bounds-constant-array-index]
- a[const_index(7)] = 3;
+ list[const_index(7)] = 3;
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: std::array<> index 10 is past the end of the array (which contains 10 elements)
- a[0] = 3; // OK, constant index and inside bounds
- a[1] = 3; // OK, constant index and inside bounds
- a[9] = 3; // OK, constant index and inside bounds
- a[const_index(6)] = 3; // OK, constant index and inside bounds
+ list[0] = 3; // OK, constant index and inside bounds
+ list[1] = 3; // OK, constant index and inside bounds
+ list[9] = 3; // OK, constant index and inside bounds
+ list[const_index(6)] = 3; // OK, constant index and inside bounds
}
void g() {
int a[10];
for (int i = 0; i < 10; ++i) {
- a[i] = i;
+ list[i] = i;
// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use array subscript when the index is not an integer constant expression; use gsl::at() instead
- // CHECK-FIXES: gsl::at(a, i) = i;
- gsl::at(a, i) = i; // OK, gsl::at() instead of []
+ // CHECK-FIXES: gsl::at(list, i) = i;
+ gsl::at(list, i) = i; // OK, gsl::at() instead of []
}
- a[-1] = 3; // flagged by clang-diagnostic-array-bounds
- a[10] = 4; // flagged by clang-diagnostic-array-bounds
- a[const_index(7)] = 3; // flagged by clang-diagnostic-array-bounds
-
- a[0] = 3; // OK, constant index and inside bounds
- a[1] = 3; // OK, constant index and inside bounds
- a[9] = 3; // OK, constant index and inside bounds
- a[const_index(6)] = 3; // OK, constant index and inside bounds
+ list[-1] = 3; // flagged by clang-diagnostic-array-bounds
+ list[10] = 4; // flagged by clang-diagnostic-array-bounds
+ list[const_index(7)] = 3; // flagged by clang-diagnostic-array-bounds
+
+ list[0] = 3; // OK, constant index and inside bounds
+ list[1] = 3; // OK, constant index and inside bounds
+ list[9] = 3; // OK, constant index and inside bounds
+ list[const_index(6)] = 3; // OK, constant index and inside bounds
}
struct S {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D56661.181539.patch
Type: text/x-patch
Size: 4538 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190114/9841aff7/attachment-0001.bin>
More information about the cfe-commits
mailing list