Consider the following code (play):
#![feature(nll)]
#![allow(unreachable_code)]
fn main() {
for _ in { return (); 0..3 } {
}
}
It signals the following diagnostic:
warning: variable does not need to be mutable
--> src/main.rs:5:14
|
5 | for _ in { return (); 0..3 } {
| --^^^^^^^^^^^^^^^^^
| |
| help: remove this `mut`
|
= note: #[warn(unused_mut)] on by default
Which is pretty nonsensical in appearance.
(It almost certainly arises due to a legitimate mut appeared in the expansion of for. We probably just need to check whether a mut that has been introduced is due to legitimate source code or if its due to an internal expansion, and use that knowledge when we decide whether to signal the unused_mut lint.)
Consider the following code (play):
It signals the following diagnostic:
Which is pretty nonsensical in appearance.
(It almost certainly arises due to a legitimate
mutappeared in the expansion offor. We probably just need to check whether amutthat has been introduced is due to legitimate source code or if its due to an internal expansion, and use that knowledge when we decide whether to signal theunused_mutlint.)