Store a LocalDefId in hir::AnonConst.
This commit is contained in:
parent
18482f7b23
commit
607d0c2a14
12 changed files with 49 additions and 56 deletions
|
@ -432,7 +432,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||
ty::Const::from_opt_const_arg_anon_const(
|
||||
tcx,
|
||||
ty::WithOptConstParam {
|
||||
did: tcx.hir().local_def_id(ct.value.hir_id),
|
||||
did: ct.value.def_id,
|
||||
const_param_did: Some(param.def_id),
|
||||
},
|
||||
)
|
||||
|
@ -570,8 +570,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||
ConvertedBindingKind::Equality(self.ast_ty_to_ty(ty).into())
|
||||
}
|
||||
hir::Term::Const(ref c) => {
|
||||
let local_did = self.tcx().hir().local_def_id(c.hir_id);
|
||||
let c = Const::from_anon_const(self.tcx(), local_did);
|
||||
let c = Const::from_anon_const(self.tcx(), c.def_id);
|
||||
ConvertedBindingKind::Equality(c.into())
|
||||
}
|
||||
},
|
||||
|
@ -2712,8 +2711,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||
let length = match length {
|
||||
&hir::ArrayLen::Infer(_, span) => self.ct_infer(tcx.types.usize, None, span),
|
||||
hir::ArrayLen::Body(constant) => {
|
||||
let length_def_id = tcx.hir().local_def_id(constant.hir_id);
|
||||
ty::Const::from_anon_const(tcx, length_def_id)
|
||||
ty::Const::from_anon_const(tcx, constant.def_id)
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -2721,7 +2719,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||
self.normalize_ty(ast_ty.span, array_ty)
|
||||
}
|
||||
hir::TyKind::Typeof(ref e) => {
|
||||
let ty_erased = tcx.type_of(tcx.hir().local_def_id(e.hir_id));
|
||||
let ty_erased = tcx.type_of(e.def_id);
|
||||
let ty = tcx.fold_regions(ty_erased, |r, _| {
|
||||
if r.is_erased() { tcx.lifetimes.re_static } else { r }
|
||||
});
|
||||
|
|
|
@ -297,9 +297,8 @@ impl<'tcx> Visitor<'tcx> for CollectItemTypesVisitor<'tcx> {
|
|||
hir::GenericParamKind::Const { default, .. } => {
|
||||
self.tcx.ensure().type_of(param.def_id);
|
||||
if let Some(default) = default {
|
||||
let default_def_id = self.tcx.hir().local_def_id(default.hir_id);
|
||||
// need to store default and type of default
|
||||
self.tcx.ensure().type_of(default_def_id);
|
||||
self.tcx.ensure().type_of(default.def_id);
|
||||
self.tcx.ensure().const_param_default(param.def_id);
|
||||
}
|
||||
}
|
||||
|
@ -877,7 +876,7 @@ fn adt_def<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId) -> ty::AdtDef<'tcx> {
|
|||
|
||||
let discr = if let Some(ref e) = v.disr_expr {
|
||||
distance_from_explicit = 0;
|
||||
ty::VariantDiscr::Explicit(tcx.hir().local_def_id(e.hir_id).to_def_id())
|
||||
ty::VariantDiscr::Explicit(e.def_id.to_def_id())
|
||||
} else {
|
||||
ty::VariantDiscr::Relative(distance_from_explicit)
|
||||
};
|
||||
|
|
|
@ -316,10 +316,9 @@ fn const_evaluatable_predicates_of<'tcx>(
|
|||
|
||||
impl<'tcx> intravisit::Visitor<'tcx> for ConstCollector<'tcx> {
|
||||
fn visit_anon_const(&mut self, c: &'tcx hir::AnonConst) {
|
||||
let def_id = self.tcx.hir().local_def_id(c.hir_id);
|
||||
let ct = ty::Const::from_anon_const(self.tcx, def_id);
|
||||
let ct = ty::Const::from_anon_const(self.tcx, c.def_id);
|
||||
if let ty::ConstKind::Unevaluated(_) = ct.kind() {
|
||||
let span = self.tcx.hir().span(c.hir_id);
|
||||
let span = self.tcx.def_span(c.def_id);
|
||||
self.preds.insert((
|
||||
ty::Binder::dummy(ty::PredicateKind::ConstEvaluatable(ct))
|
||||
.to_predicate(self.tcx),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue