Rename InstanceDef -> InstanceKind
This commit is contained in:
parent
55cac26a9e
commit
342c1b03d6
53 changed files with 421 additions and 418 deletions
|
@ -10,7 +10,7 @@ use rustc_middle::mir::visit::{MutatingUseContext, NonMutatingUseContext, PlaceC
|
|||
use rustc_middle::mir::*;
|
||||
use rustc_middle::span_bug;
|
||||
use rustc_middle::ty::{self, adjustment::PointerCoercion, Ty, TyCtxt};
|
||||
use rustc_middle::ty::{Instance, InstanceDef, TypeVisitableExt};
|
||||
use rustc_middle::ty::{Instance, InstanceKind, TypeVisitableExt};
|
||||
use rustc_mir_dataflow::Analysis;
|
||||
use rustc_span::{sym, Span, Symbol, DUMMY_SP};
|
||||
use rustc_trait_selection::traits::error_reporting::TypeErrCtxtExt as _;
|
||||
|
@ -769,7 +769,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> {
|
|||
|
||||
if let Ok(Some(instance)) =
|
||||
Instance::resolve(tcx, param_env, callee, fn_args)
|
||||
&& let InstanceDef::Item(def) = instance.def
|
||||
&& let InstanceKind::Item(def) = instance.def
|
||||
{
|
||||
// Resolve a trait method call to its concrete implementation, which may be in a
|
||||
// `const` trait impl. This is only used for the const stability check below, since
|
||||
|
|
|
@ -289,7 +289,7 @@ pub fn eval_to_const_value_raw_provider<'tcx>(
|
|||
|
||||
// We call `const_eval` for zero arg intrinsics, too, in order to cache their value.
|
||||
// Catch such calls and evaluate them instead of trying to load a constant's MIR.
|
||||
if let ty::InstanceDef::Intrinsic(def_id) = key.value.instance.def {
|
||||
if let ty::InstanceKind::Intrinsic(def_id) = key.value.instance.def {
|
||||
let ty = key.value.instance.ty(tcx, key.param_env);
|
||||
let ty::FnDef(_, args) = ty.kind() else {
|
||||
bug!("intrinsic with type {:?}", ty);
|
||||
|
|
|
@ -398,10 +398,10 @@ impl<'tcx> interpret::Machine<'tcx> for CompileTimeMachine<'tcx> {
|
|||
|
||||
fn load_mir(
|
||||
ecx: &InterpCx<'tcx, Self>,
|
||||
instance: ty::InstanceDef<'tcx>,
|
||||
instance: ty::InstanceKind<'tcx>,
|
||||
) -> InterpResult<'tcx, &'tcx mir::Body<'tcx>> {
|
||||
match instance {
|
||||
ty::InstanceDef::Item(def) => Ok(ecx.tcx.mir_for_ctfe(def)),
|
||||
ty::InstanceKind::Item(def) => Ok(ecx.tcx.mir_for_ctfe(def)),
|
||||
_ => Ok(ecx.tcx.instance_mir(instance)),
|
||||
}
|
||||
}
|
||||
|
@ -424,7 +424,7 @@ impl<'tcx> interpret::Machine<'tcx> for CompileTimeMachine<'tcx> {
|
|||
};
|
||||
|
||||
// Only check non-glue functions
|
||||
if let ty::InstanceDef::Item(def) = instance.def {
|
||||
if let ty::InstanceKind::Item(def) = instance.def {
|
||||
// Execution might have wandered off into other crates, so we cannot do a stability-
|
||||
// sensitive check here. But we can at least rule out functions that are not const at
|
||||
// all. That said, we have to allow calling functions inside a trait marked with
|
||||
|
@ -540,7 +540,7 @@ impl<'tcx> interpret::Machine<'tcx> for CompileTimeMachine<'tcx> {
|
|||
);
|
||||
}
|
||||
return Ok(Some(ty::Instance {
|
||||
def: ty::InstanceDef::Item(instance.def_id()),
|
||||
def: ty::InstanceKind::Item(instance.def_id()),
|
||||
args: instance.args,
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -562,7 +562,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
|
||||
pub fn load_mir(
|
||||
&self,
|
||||
instance: ty::InstanceDef<'tcx>,
|
||||
instance: ty::InstanceKind<'tcx>,
|
||||
promoted: Option<mir::Promoted>,
|
||||
) -> InterpResult<'tcx, &'tcx mir::Body<'tcx>> {
|
||||
trace!("load mir(instance={:?}, promoted={:?})", instance, promoted);
|
||||
|
|
|
@ -177,7 +177,7 @@ pub trait Machine<'tcx>: Sized {
|
|||
/// constants, ...
|
||||
fn load_mir(
|
||||
ecx: &InterpCx<'tcx, Self>,
|
||||
instance: ty::InstanceDef<'tcx>,
|
||||
instance: ty::InstanceKind<'tcx>,
|
||||
) -> InterpResult<'tcx, &'tcx mir::Body<'tcx>> {
|
||||
Ok(ecx.tcx.instance_mir(instance))
|
||||
}
|
||||
|
|
|
@ -175,7 +175,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
Drop { place, target, unwind, replace: _ } => {
|
||||
let place = self.eval_place(place)?;
|
||||
let instance = Instance::resolve_drop_in_place(*self.tcx, place.layout.ty);
|
||||
if let ty::InstanceDef::DropGlue(_, None) = instance.def {
|
||||
if let ty::InstanceKind::DropGlue(_, None) = instance.def {
|
||||
// This is the branch we enter if and only if the dropped type has no drop glue
|
||||
// whatsoever. This can happen as a result of monomorphizing a drop of a
|
||||
// generic. In order to make sure that generic and non-generic code behaves
|
||||
|
@ -550,7 +550,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
};
|
||||
|
||||
match instance.def {
|
||||
ty::InstanceDef::Intrinsic(def_id) => {
|
||||
ty::InstanceKind::Intrinsic(def_id) => {
|
||||
assert!(self.tcx.intrinsic(def_id).is_some());
|
||||
// FIXME: Should `InPlace` arguments be reset to uninit?
|
||||
if let Some(fallback) = M::call_intrinsic(
|
||||
|
@ -562,7 +562,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
unwind,
|
||||
)? {
|
||||
assert!(!self.tcx.intrinsic(fallback.def_id()).unwrap().must_be_overridden);
|
||||
assert!(matches!(fallback.def, ty::InstanceDef::Item(_)));
|
||||
assert!(matches!(fallback.def, ty::InstanceKind::Item(_)));
|
||||
return self.eval_fn_call(
|
||||
FnVal::Instance(fallback),
|
||||
(caller_abi, caller_fn_abi),
|
||||
|
@ -576,18 +576,18 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
Ok(())
|
||||
}
|
||||
}
|
||||
ty::InstanceDef::VTableShim(..)
|
||||
| ty::InstanceDef::ReifyShim(..)
|
||||
| ty::InstanceDef::ClosureOnceShim { .. }
|
||||
| ty::InstanceDef::ConstructCoroutineInClosureShim { .. }
|
||||
| ty::InstanceDef::CoroutineKindShim { .. }
|
||||
| ty::InstanceDef::FnPtrShim(..)
|
||||
| ty::InstanceDef::DropGlue(..)
|
||||
| ty::InstanceDef::CloneShim(..)
|
||||
| ty::InstanceDef::FnPtrAddrShim(..)
|
||||
| ty::InstanceDef::ThreadLocalShim(..)
|
||||
| ty::InstanceDef::AsyncDropGlueCtorShim(..)
|
||||
| ty::InstanceDef::Item(_) => {
|
||||
ty::InstanceKind::VTableShim(..)
|
||||
| ty::InstanceKind::ReifyShim(..)
|
||||
| ty::InstanceKind::ClosureOnceShim { .. }
|
||||
| ty::InstanceKind::ConstructCoroutineInClosureShim { .. }
|
||||
| ty::InstanceKind::CoroutineKindShim { .. }
|
||||
| ty::InstanceKind::FnPtrShim(..)
|
||||
| ty::InstanceKind::DropGlue(..)
|
||||
| ty::InstanceKind::CloneShim(..)
|
||||
| ty::InstanceKind::FnPtrAddrShim(..)
|
||||
| ty::InstanceKind::ThreadLocalShim(..)
|
||||
| ty::InstanceKind::AsyncDropGlueCtorShim(..)
|
||||
| ty::InstanceKind::Item(_) => {
|
||||
// We need MIR for this fn
|
||||
let Some((body, instance)) = M::find_mir_or_eval_fn(
|
||||
self,
|
||||
|
@ -786,9 +786,9 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
Ok(()) => Ok(()),
|
||||
}
|
||||
}
|
||||
// `InstanceDef::Virtual` does not have callable MIR. Calls to `Virtual` instances must be
|
||||
// `InstanceKind::Virtual` does not have callable MIR. Calls to `Virtual` instances must be
|
||||
// codegen'd / interpreted as virtual calls through the vtable.
|
||||
ty::InstanceDef::Virtual(def_id, idx) => {
|
||||
ty::InstanceKind::Virtual(def_id, idx) => {
|
||||
let mut args = args.to_vec();
|
||||
// We have to implement all "object safe receivers". So we have to go search for a
|
||||
// pointer or `dyn Trait` type, but it could be wrapped in newtypes. So recursively
|
||||
|
@ -965,7 +965,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
let place = self.force_allocation(place)?;
|
||||
|
||||
// We behave a bit different from codegen here.
|
||||
// Codegen creates an `InstanceDef::Virtual` with index 0 (the slot of the drop method) and
|
||||
// Codegen creates an `InstanceKind::Virtual` with index 0 (the slot of the drop method) and
|
||||
// then dispatches that to the normal call machinery. However, our call machinery currently
|
||||
// only supports calling `VtblEntry::Method`; it would choke on a `MetadataDropInPlace`. So
|
||||
// instead we do the virtual call stuff ourselves. It's easier here than in `eval_fn_call`
|
||||
|
|
|
@ -44,7 +44,7 @@ where
|
|||
| ty::CoroutineClosure(def_id, args, ..)
|
||||
| ty::Coroutine(def_id, args, ..)
|
||||
| ty::FnDef(def_id, args) => {
|
||||
let instance = ty::InstanceDef::Item(def_id);
|
||||
let instance = ty::InstanceKind::Item(def_id);
|
||||
let unused_params = self.tcx.unused_generic_params(instance);
|
||||
for (index, arg) in args.into_iter().enumerate() {
|
||||
let index = index
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue