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:
parent
d2454643e1
commit
f422ef141a
17 changed files with 403 additions and 68 deletions
|
@ -232,6 +232,12 @@ declare_lint! {
|
|||
"detects unaligned references to fields of packed structs",
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
pub CONST_ITEM_MUTATION,
|
||||
Warn,
|
||||
"detects attempts to mutate a `const` item",
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
pub SAFE_PACKED_BORROWS,
|
||||
Warn,
|
||||
|
@ -572,6 +578,7 @@ declare_lint_pass! {
|
|||
CONST_ERR,
|
||||
RENAMED_AND_REMOVED_LINTS,
|
||||
UNALIGNED_REFERENCES,
|
||||
CONST_ITEM_MUTATION,
|
||||
SAFE_PACKED_BORROWS,
|
||||
PATTERNS_IN_FNS_WITHOUT_BODY,
|
||||
LATE_BOUND_LIFETIME_ARGUMENTS,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue