diff options
| author | Michael Goulet <michael@errs.io> | 2022-05-29 13:01:42 -0700 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-05-29 13:01:59 -0700 |
| commit | 2e25c2346b9cf58c3c30375bd6e6defef1c11f07 (patch) | |
| tree | 9484b61b00d95a391680eb69a8fa2af20410f1b9 /src | |
| parent | 9d1aeaeb827da7a10b7cfaccf0a1d6ebf414a7b5 (diff) | |
| download | rust-2e25c2346b9cf58c3c30375bd6e6defef1c11f07.tar.gz rust-2e25c2346b9cf58c3c30375bd6e6defef1c11f07.zip | |
Note pattern mismatch coming from for-loop desugaring
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/pattern/for-loop-bad-item.rs | 20 | ||||
| -rw-r--r-- | src/test/ui/pattern/for-loop-bad-item.stderr | 23 |
2 files changed, 43 insertions, 0 deletions
diff --git a/src/test/ui/pattern/for-loop-bad-item.rs b/src/test/ui/pattern/for-loop-bad-item.rs new file mode 100644 index 00000000000..9a56a399b9b --- /dev/null +++ b/src/test/ui/pattern/for-loop-bad-item.rs @@ -0,0 +1,20 @@ +struct Qux(i32); + +fn bad() { + let mut map = std::collections::HashMap::new(); + map.insert(('a', 'b'), ('c', 'd')); + + for ((_, _), (&mut c, _)) in &mut map { + //~^ ERROR mismatched types + if c == 'e' {} + } +} + +fn bad2() { + for Some(Qux(_)) | None in [Some(""), None] { + //~^ ERROR mismatched types + todo!(); + } +} + +fn main() {} diff --git a/src/test/ui/pattern/for-loop-bad-item.stderr b/src/test/ui/pattern/for-loop-bad-item.stderr new file mode 100644 index 00000000000..9410e4da8d2 --- /dev/null +++ b/src/test/ui/pattern/for-loop-bad-item.stderr @@ -0,0 +1,23 @@ +error[E0308]: mismatched types + --> $DIR/for-loop-bad-item.rs:7:19 + | +LL | for ((_, _), (&mut c, _)) in &mut map { + | ^^^^^^ -------- this is an iterator with items of type `(&(char, char), &mut (char, char))` + | | + | expected `char`, found `&mut _` + | help: you can probably remove the explicit borrow: `c` + | + = note: expected type `char` + found mutable reference `&mut _` + +error[E0308]: mismatched types + --> $DIR/for-loop-bad-item.rs:14:14 + | +LL | for Some(Qux(_)) | None in [Some(""), None] { + | ^^^^^^ ---------------- this is an iterator with items of type `Option<&str>` + | | + | expected `str`, found struct `Qux` + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0308`. |
