1
Fork 0

use AllocId and Ty in ExprKind::StaticRef and delay ConstValue construction

This commit is contained in:
b-naber 2022-02-09 16:18:57 +01:00
parent 54ff25e446
commit fff06e5edc
4 changed files with 16 additions and 18 deletions

View file

@ -17,6 +17,7 @@ use rustc_index::newtype_index;
use rustc_index::vec::IndexVec;
use rustc_middle::infer::canonical::Canonical;
use rustc_middle::middle::region;
use rustc_middle::mir::interpret::AllocId;
use rustc_middle::mir::{
BinOp, BorrowKind, FakeReadCause, Field, Mutability, UnOp, UserTypeProjection,
};
@ -419,7 +420,8 @@ pub enum ExprKind<'tcx> {
/// This is only distinguished from `Literal` so that we can register some
/// info for diagnostics.
StaticRef {
literal: Const<'tcx>,
alloc_id: AllocId,
ty: Ty<'tcx>,
def_id: DefId,
},
/// Inline assembly, i.e. `asm!()`.
@ -715,7 +717,11 @@ impl<'tcx> fmt::Display for Pat<'tcx> {
Some(&adt_def.variants[variant_index])
}
_ => self.ty.ty_adt_def().and_then(|adt| {
if !adt.is_enum() { Some(adt.non_enum_variant()) } else { None }
if !adt.is_enum() {
Some(adt.non_enum_variant())
} else {
None
}
}),
};

View file

@ -123,7 +123,7 @@ pub fn walk_expr<'a, 'tcx: 'a, V: Visitor<'a, 'tcx>>(visitor: &mut V, expr: &Exp
}
Closure { closure_id: _, substs: _, upvars: _, movability: _, fake_reads: _ } => {}
Literal { literal, user_ty: _, const_id: _ } => visitor.visit_const(literal),
StaticRef { literal, def_id: _ } => visitor.visit_const(literal),
StaticRef { .. } => {}
InlineAsm { ref operands, template: _, options: _, line_spans: _ } => {
for op in &**operands {
use InlineAsmOperand::*;