]> git.lizzy.rs Git - rust.git/commit - src/tools/rustfmt
Auto merge of #75573 - Aaron1011:feature/const-mutation-lint, r=oli-obk
authorbors <bors@rust-lang.org>
Thu, 10 Sep 2020 05:54:26 +0000 (05:54 +0000)
committerbors <bors@rust-lang.org>
Thu, 10 Sep 2020 05:54:26 +0000 (05:54 +0000)
commit88197214b8a9099bb3da559a3bd7bf4867c10c5f
treeac629e272c836b5dd523baec4209f32110843244
parenta1894e4afe1a39f718cc27232a5a2f0d02b501f6
parent4434e8cefbec96e6928ea23769eb1a83d0f198b5
Auto merge of #75573 - Aaron1011:feature/const-mutation-lint, r=oli-obk

Add CONST_ITEM_MUTATION lint

Fixes #74053
Fixes #55721

This PR adds a new lint `CONST_ITEM_MUTATION`.
Given an item `const FOO: SomeType = ..`, this lint fires on:

* Attempting to write directly to a field (`FOO.field = some_val`) or
  array entry (`FOO.array_field[0] = val`)
* Taking a mutable reference to the `const` item (`&mut FOO`), including
  through an autoderef `FOO.some_mut_self_method()`

The lint message explains that since each use of a constant creates a
new temporary, the original `const` item will not be modified.
compiler/rustc_middle/src/mir/mod.rs
compiler/rustc_mir/src/transform/mod.rs
compiler/rustc_session/src/lint/builtin.rs