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.
This commit is contained in:
commit
88197214b8
22 changed files with 427 additions and 116 deletions
|
@ -922,6 +922,8 @@ pub enum LocalInfo<'tcx> {
|
|||
User(ClearCrossCrate<BindingForm<'tcx>>),
|
||||
/// A temporary created that references the static with the given `DefId`.
|
||||
StaticRef { def_id: DefId, is_thread_local: bool },
|
||||
/// A temporary created that references the const with the given `DefId`
|
||||
ConstRef { def_id: DefId },
|
||||
}
|
||||
|
||||
impl<'tcx> LocalDecl<'tcx> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue