Only track (trivially) freeze types

This commit is contained in:
Jannis Christopher Köhl 2022-10-05 21:42:16 +02:00
parent b5063ab0e5
commit 1765587846
2 changed files with 6 additions and 2 deletions

View file

@ -849,7 +849,7 @@ impl<'tcx> Ty<'tcx> {
///
/// Returning true means the type is known to be `Freeze`. Returning
/// `false` means nothing -- could be `Freeze`, might not be.
fn is_trivially_freeze(self) -> bool {
pub fn is_trivially_freeze(self) -> bool {
match self.kind() {
ty::Int(_)
| ty::Uint(_)

View file

@ -674,7 +674,11 @@ impl Map {
return Err(());
}
// FIXME: Check that the place is `Freeze`.
if !ty.is_trivially_freeze() {
// Due to the way we deal with shared references, only `Freeze` types may be tracked.
// We are a little bit to restrictive here by only allowing trivially `Freeze` types.
return Err(());
}
let place = self.make_place(local, projection)?;