Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions compiler/rustc_lint/src/unused.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
| hir::BinOpKind::Shl
| hir::BinOpKind::Shr => Some("bitwise operation"),
},
hir::ExprKind::AddrOf(..) => Some("borrow"),
hir::ExprKind::Unary(..) => Some("unary operation"),
_ => None,
};
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_macros/src/hash_stable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ pub fn hash_stable_generic_derive(mut s: synstructure::Structure<'_>) -> proc_ma
quote! {}
} else if let Some(project) = attrs.project {
quote! {
&#bi.#project.hash_stable(__hcx, __hasher);
(&#bi.#project).hash_stable(__hcx, __hasher);
}
} else {
quote! {
Expand Down Expand Up @@ -96,7 +96,7 @@ pub fn hash_stable_derive(mut s: synstructure::Structure<'_>) -> proc_macro2::To
quote! {}
} else if let Some(project) = attrs.project {
quote! {
&#bi.#project.hash_stable(__hcx, __hasher);
(&#bi.#project).hash_stable(__hcx, __hasher);
}
} else {
quote! {
Expand Down
10 changes: 5 additions & 5 deletions library/alloc/tests/str.rs
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ mod slice_index {
#[test]
#[should_panic]
fn test_slice_fail() {
&"中华Việt Nam"[0..2];
let _ = &"中华Việt Nam"[0..2];
}

panic_cases! {
Expand Down Expand Up @@ -714,13 +714,13 @@ mod slice_index {
#[test]
#[should_panic(expected = "byte index 1024 is out of bounds of `Lorem ipsum dolor sit amet")]
fn test_slice_fail_truncated_1() {
&LOREM_PARAGRAPH[..1024];
let _ = &LOREM_PARAGRAPH[..1024];
}
// check the truncation in the panic message
#[test]
#[should_panic(expected = "luctus, im`[...]")]
fn test_slice_fail_truncated_2() {
&LOREM_PARAGRAPH[..1024];
let _ = &LOREM_PARAGRAPH[..1024];
}
}

Expand All @@ -735,7 +735,7 @@ fn test_str_slice_rangetoinclusive_ok() {
#[should_panic]
fn test_str_slice_rangetoinclusive_notok() {
let s = "abcαβγ";
&s[..=3];
let _ = &s[..=3];
}

#[test]
Expand All @@ -751,7 +751,7 @@ fn test_str_slicemut_rangetoinclusive_ok() {
fn test_str_slicemut_rangetoinclusive_notok() {
let mut s = "abcαβγ".to_owned();
let s: &mut str = &mut s;
&mut s[..=3];
let _ = &mut s[..=3];
}

#[test]
Expand Down
10 changes: 5 additions & 5 deletions library/alloc/tests/vec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -542,35 +542,35 @@ fn test_index_out_of_bounds() {
#[should_panic]
fn test_slice_out_of_bounds_1() {
let x = vec![1, 2, 3, 4, 5];
&x[!0..];
let _ = &x[!0..];
}

#[test]
#[should_panic]
fn test_slice_out_of_bounds_2() {
let x = vec![1, 2, 3, 4, 5];
&x[..6];
let _ = &x[..6];
}

#[test]
#[should_panic]
fn test_slice_out_of_bounds_3() {
let x = vec![1, 2, 3, 4, 5];
&x[!0..4];
let _ = &x[!0..4];
}

#[test]
#[should_panic]
fn test_slice_out_of_bounds_4() {
let x = vec![1, 2, 3, 4, 5];
&x[1..6];
let _ = &x[1..6];
}

#[test]
#[should_panic]
fn test_slice_out_of_bounds_5() {
let x = vec![1, 2, 3, 4, 5];
&x[3..2];
let _ = &x[3..2];
}

#[test]
Expand Down
6 changes: 3 additions & 3 deletions library/std/src/sys_common/wtf8/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ fn wtf8_slice() {
#[test]
#[should_panic]
fn wtf8_slice_not_code_point_boundary() {
&Wtf8::from_str("aé 💩")[2..4];
let _ = &Wtf8::from_str("aé 💩")[2..4];
}

#[test]
Expand All @@ -312,7 +312,7 @@ fn wtf8_slice_from() {
#[test]
#[should_panic]
fn wtf8_slice_from_not_code_point_boundary() {
&Wtf8::from_str("aé 💩")[2..];
let _ = &Wtf8::from_str("aé 💩")[2..];
}

#[test]
Expand All @@ -323,7 +323,7 @@ fn wtf8_slice_to() {
#[test]
#[should_panic]
fn wtf8_slice_to_not_code_point_boundary() {
&Wtf8::from_str("aé 💩")[5..];
let _ = &Wtf8::from_str("aé 💩")[5..];
}

#[test]
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/array-slice-vec/slice-panic-1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ impl Drop for Foo {

fn foo() {
let x: &[_] = &[Foo, Foo];
&x[3..4];
let _ = &x[3..4];
}

fn main() {
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/array-slice-vec/slice-panic-2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ fn bar() -> usize {

fn foo() {
let x: &[_] = &[Foo, Foo];
&x[3..bar()];
let _ = &x[3..bar()];
}

fn main() {
Expand Down
16 changes: 8 additions & 8 deletions src/test/ui/array-slice-vec/slice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,14 @@ impl IndexMut<RangeFull> for Foo {

fn main() {
let mut x = Foo;
&x[..];
&x[Foo..];
&x[..Foo];
&x[Foo..Foo];
&mut x[..];
&mut x[Foo..];
&mut x[..Foo];
&mut x[Foo..Foo];
let _ = &x[..];
let _ = &x[Foo..];
let _ = &x[..Foo];
let _ = &x[Foo..Foo];
let _ = &mut x[..];
let _ = &mut x[Foo..];
let _ = &mut x[..Foo];
let _ = &mut x[Foo..Foo];
unsafe {
assert_eq!(COUNT, 8);
}
Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/const-generics/issues/issue-61432.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ fn promote<const N: i32>() {
// works:
//
// let n = N;
// &n;
// let _ = &n;

&N;
let _ = &N;
}

fn main() {
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/dynamically-sized-types/dst-index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@ impl Index<usize> for T {

fn main() {
assert_eq!(&S[0], "hello");
&T[0];
let _ = &T[0];
// let x = &x as &Debug;
}
2 changes: 1 addition & 1 deletion src/test/ui/generator/too-live-local-in-immovable-gen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ fn main() {
yield ();
4i32
};
&a;
let _ = &a;
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ LL | | // Tests that the generator transformation finds out that `a`
LL | | // during the yield expression. Type checking will also compute liveness
LL | | // and it should also find out that `a` is not live.
... |
LL | | &a;
LL | | let _ = &a;
LL | | };
| |__________^
|
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/generator/yield-in-initializer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ fn main() {
yield;
true
};
&opt;
let _ = &opt;
}
};
}
2 changes: 1 addition & 1 deletion src/test/ui/issues/issue-43205.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// run-pass
fn main() {
&&[()][0];
let _ = &&[()][0];
println!("{:?}", &[(),()][1]);
}
2 changes: 1 addition & 1 deletion src/test/ui/issues/issue-5280.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ trait FontTableTagConversions {

impl FontTableTagConversions for FontTableTag {
fn tag_to_string(self) {
&self;
let _ = &self;
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/issues/issue-54696.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

fn main() {
// We shouldn't promote this
&(main as fn() == main as fn());
let _ = &(main as fn() == main as fn());
// Also check nested case
&(&(main as fn()) == &(main as fn()));
let _ = &(&(main as fn()) == &(main as fn()));
}
33 changes: 33 additions & 0 deletions src/test/ui/lint/unused-borrows.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#![deny(unused_must_use)]

fn foo(_: i32) -> bool { todo!() }

fn bar() -> &'static i32 {
&42;
//~^ unused

&mut foo(42);
//~^ unused

&&42;
//~^ unused

&&mut 42;
//~^ unused

&mut &42;
//~^ unused

let _result = foo(4)
&& foo(2); // Misplaced semi-colon (perhaps due to reordering of lines)
&& foo(42);
//~^ unused

let _ = &42; // ok

&42 // ok
}

fn main() {
let _ = bar();
}
44 changes: 44 additions & 0 deletions src/test/ui/lint/unused-borrows.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
error: unused borrow that must be used
--> $DIR/unused-borrows.rs:6:5
|
LL | &42;
| ^^^
|
note: the lint level is defined here
--> $DIR/unused-borrows.rs:1:9
|
LL | #![deny(unused_must_use)]
| ^^^^^^^^^^^^^^^

error: unused borrow that must be used
--> $DIR/unused-borrows.rs:9:5
|
LL | &mut foo(42);
| ^^^^^^^^^^^^

error: unused borrow that must be used
--> $DIR/unused-borrows.rs:12:5
|
LL | &&42;
| ^^^^

error: unused borrow that must be used
--> $DIR/unused-borrows.rs:15:5
|
LL | &&mut 42;
| ^^^^^^^^

error: unused borrow that must be used
--> $DIR/unused-borrows.rs:18:5
|
LL | &mut &42;
| ^^^^^^^^

error: unused borrow that must be used
--> $DIR/unused-borrows.rs:23:5
|
LL | && foo(42);
| ^^^^^^^^^^

error: aborting due to 6 previous errors

2 changes: 1 addition & 1 deletion src/tools/clippy/tests/ui/bytes_nth.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
fn main() {
let s = String::from("String");
s.as_bytes().get(3);
&s.as_bytes().get(3);
let _ = &s.as_bytes().get(3);
s[..].as_bytes().get(3);
}
2 changes: 1 addition & 1 deletion src/tools/clippy/tests/ui/bytes_nth.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
fn main() {
let s = String::from("String");
s.bytes().nth(3);
&s.bytes().nth(3);
let _ = &s.bytes().nth(3);
s[..].bytes().nth(3);
}
6 changes: 3 additions & 3 deletions src/tools/clippy/tests/ui/bytes_nth.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ LL | s.bytes().nth(3);
= note: `-D clippy::bytes-nth` implied by `-D warnings`

error: called `.byte().nth()` on a `String`
--> $DIR/bytes_nth.rs:9:6
--> $DIR/bytes_nth.rs:9:14
|
LL | &s.bytes().nth(3);
| ^^^^^^^^^^^^^^^^ help: try: `s.as_bytes().get(3)`
LL | let _ = &s.bytes().nth(3);
| ^^^^^^^^^^^^^^^^ help: try: `s.as_bytes().get(3)`

error: called `.byte().nth()` on a `str`
--> $DIR/bytes_nth.rs:10:5
Expand Down
Loading