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:
Manish Goregaokar 2021-09-30 23:41:06 -07:00 committed by GitHub
commit e77d163e82
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 136 additions and 2 deletions

View 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];
}

View 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];
}

View 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