diagnostics: add regression test for #82081

This commit is contained in:
Michael Howell 2022-03-28 11:47:19 -07:00
parent a063b3a4b6
commit 757ab6b55c
3 changed files with 57 additions and 0 deletions

View file

@ -0,0 +1,21 @@
// run-rustfix
// https://github.com/rust-lang/rust/issues/82081
use std::collections::HashMap;
struct Test {
v: u32,
}
fn main() {
let mut map = HashMap::new();
map.insert("a", Test { v: 0 });
for (_k, mut v) in map.iter_mut() {
//~^ HELP use mutable method
//~| NOTE this iterator yields `&` references
v.v += 1;
//~^ ERROR cannot assign to `v.v`
//~| NOTE `v` is a `&` reference
}
}

View file

@ -0,0 +1,21 @@
// run-rustfix
// https://github.com/rust-lang/rust/issues/82081
use std::collections::HashMap;
struct Test {
v: u32,
}
fn main() {
let mut map = HashMap::new();
map.insert("a", Test { v: 0 });
for (_k, mut v) in map.iter() {
//~^ HELP use mutable method
//~| NOTE this iterator yields `&` references
v.v += 1;
//~^ ERROR cannot assign to `v.v`
//~| NOTE `v` is a `&` reference
}
}

View file

@ -0,0 +1,15 @@
error[E0594]: cannot assign to `v.v`, which is behind a `&` reference
--> $DIR/suggest-mut-method-for-loop-hashmap.rs:17:9
|
LL | for (_k, mut v) in map.iter() {
| ----------
| | |
| | help: use mutable method: `iter_mut()`
| this iterator yields `&` references
...
LL | v.v += 1;
| ^^^^^^^^ `v` is a `&` reference, so the data it refers to cannot be written
error: aborting due to previous error
For more information about this error, try `rustc --explain E0594`.