mirror of
https://github.com/rust-lang/rust.git
synced 2024-10-31 22:41:50 +00:00
Run the "is this static mutable" logic the same way as in in_mutable_memory
This commit is contained in:
parent
8c9cba2be7
commit
d87e9636d5
@ -491,21 +491,23 @@ impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValidityVisitor<'rt, 'mir, '
|
||||
}
|
||||
// Return alloc mutability. For "root" statics we look at the type to account for interior
|
||||
// mutability; for nested statics we have no type and directly use the annotated mutability.
|
||||
match (mutability, nested) {
|
||||
(Mutability::Mut, _) => Mutability::Mut,
|
||||
(Mutability::Not, true) => Mutability::Not,
|
||||
(Mutability::Not, false)
|
||||
if !self
|
||||
.ecx
|
||||
.tcx
|
||||
.type_of(did)
|
||||
.no_bound_vars()
|
||||
.expect("statics should not have generic parameters")
|
||||
.is_freeze(*self.ecx.tcx, ty::ParamEnv::reveal_all()) =>
|
||||
{
|
||||
Mutability::Mut
|
||||
if nested {
|
||||
mutability
|
||||
} else {
|
||||
match mutability {
|
||||
Mutability::Not
|
||||
if !self
|
||||
.ecx
|
||||
.tcx
|
||||
.type_of(did)
|
||||
.no_bound_vars()
|
||||
.expect("statics should not have generic parameters")
|
||||
.is_freeze(*self.ecx.tcx, ty::ParamEnv::reveal_all()) =>
|
||||
{
|
||||
Mutability::Mut
|
||||
}
|
||||
_ => mutability,
|
||||
}
|
||||
(Mutability::Not, false) => Mutability::Not,
|
||||
}
|
||||
}
|
||||
GlobalAlloc::Memory(alloc) => alloc.inner().mutability,
|
||||
|
Loading…
Reference in New Issue
Block a user