Rollup merge of #89251 - estebank:negative-index-literals, r=davidtwco
Detect when negative literal indices are used and suggest appropriate code
This commit is contained in:
commit
e77d163e82
5 changed files with 136 additions and 2 deletions
22
src/test/ui/suggestions/negative-literal-index.fixed
Normal file
22
src/test/ui/suggestions/negative-literal-index.fixed
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// run-rustfix
|
||||
|
||||
use std::ops::Index;
|
||||
struct X;
|
||||
impl Index<i32> for X {
|
||||
type Output = ();
|
||||
|
||||
fn index(&self, _: i32) -> &() {
|
||||
&()
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let x = vec![1, 2, 3];
|
||||
x[x.len() -1]; //~ ERROR negative integers cannot be used to index on a
|
||||
let x = [1, 2, 3];
|
||||
x[x.len() -1]; //~ ERROR negative integers cannot be used to index on a
|
||||
let x = &[1, 2, 3];
|
||||
x[x.len() -1]; //~ ERROR negative integers cannot be used to index on a
|
||||
let _ = x;
|
||||
X[-1];
|
||||
}
|
||||
22
src/test/ui/suggestions/negative-literal-index.rs
Normal file
22
src/test/ui/suggestions/negative-literal-index.rs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// run-rustfix
|
||||
|
||||
use std::ops::Index;
|
||||
struct X;
|
||||
impl Index<i32> for X {
|
||||
type Output = ();
|
||||
|
||||
fn index(&self, _: i32) -> &() {
|
||||
&()
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let x = vec![1, 2, 3];
|
||||
x[-1]; //~ ERROR negative integers cannot be used to index on a
|
||||
let x = [1, 2, 3];
|
||||
x[-1]; //~ ERROR negative integers cannot be used to index on a
|
||||
let x = &[1, 2, 3];
|
||||
x[-1]; //~ ERROR negative integers cannot be used to index on a
|
||||
let _ = x;
|
||||
X[-1];
|
||||
}
|
||||
35
src/test/ui/suggestions/negative-literal-index.stderr
Normal file
35
src/test/ui/suggestions/negative-literal-index.stderr
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
error: negative integers cannot be used to index on a `Vec<{integer}>`
|
||||
--> $DIR/negative-literal-index.rs:15:7
|
||||
|
|
||||
LL | x[-1];
|
||||
| ^^ cannot use a negative integer for indexing on `Vec<{integer}>`
|
||||
|
|
||||
help: to access an element starting from the end of the `Vec<{integer}>`, compute the index
|
||||
|
|
||||
LL | x[x.len() -1];
|
||||
| +++++++
|
||||
|
||||
error: negative integers cannot be used to index on a `[{integer}; 3]`
|
||||
--> $DIR/negative-literal-index.rs:17:7
|
||||
|
|
||||
LL | x[-1];
|
||||
| ^^ cannot use a negative integer for indexing on `[{integer}; 3]`
|
||||
|
|
||||
help: to access an element starting from the end of the `[{integer}; 3]`, compute the index
|
||||
|
|
||||
LL | x[x.len() -1];
|
||||
| +++++++
|
||||
|
||||
error: negative integers cannot be used to index on a `[{integer}; 3]`
|
||||
--> $DIR/negative-literal-index.rs:19:7
|
||||
|
|
||||
LL | x[-1];
|
||||
| ^^ cannot use a negative integer for indexing on `[{integer}; 3]`
|
||||
|
|
||||
help: to access an element starting from the end of the `[{integer}; 3]`, compute the index
|
||||
|
|
||||
LL | x[x.len() -1];
|
||||
| +++++++
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue