Simplify StaticDef to Instance conversion
This commit is contained in:
parent
281b65aad9
commit
e16ebdbb06
@ -322,9 +322,9 @@ impl<'tcx> Context for TablesWrapper<'tcx> {
|
||||
matches!(instance.def, ty::InstanceDef::DropGlue(_, None))
|
||||
}
|
||||
|
||||
fn mono_instance(&self, item: stable_mir::CrateItem) -> stable_mir::mir::mono::Instance {
|
||||
fn mono_instance(&self, def_id: stable_mir::DefId) -> stable_mir::mir::mono::Instance {
|
||||
let mut tables = self.0.borrow_mut();
|
||||
let def_id = tables[item.0];
|
||||
let def_id = tables[def_id];
|
||||
Instance::mono(tables.tcx, def_id).stable(&mut *tables)
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,7 @@ pub trait Context {
|
||||
|
||||
/// Convert a non-generic crate item into an instance.
|
||||
/// This function will panic if the item is generic.
|
||||
fn mono_instance(&self, item: CrateItem) -> Instance;
|
||||
fn mono_instance(&self, def_id: DefId) -> Instance;
|
||||
|
||||
/// Item requires monomorphization.
|
||||
fn requires_monomorphization(&self, def_id: DefId) -> bool;
|
||||
|
@ -143,8 +143,9 @@ impl TryFrom<CrateItem> for Instance {
|
||||
|
||||
fn try_from(item: CrateItem) -> Result<Self, Self::Error> {
|
||||
with(|context| {
|
||||
if !context.requires_monomorphization(item.0) {
|
||||
Ok(context.mono_instance(item))
|
||||
let def_id = item.def_id();
|
||||
if !context.requires_monomorphization(def_id) {
|
||||
Ok(context.mono_instance(def_id))
|
||||
} else {
|
||||
Err(Error::new("Item requires monomorphization".to_string()))
|
||||
}
|
||||
@ -223,7 +224,7 @@ impl TryFrom<Instance> for StaticDef {
|
||||
impl From<StaticDef> for Instance {
|
||||
fn from(value: StaticDef) -> Self {
|
||||
// A static definition should always be convertible to an instance.
|
||||
Instance::try_from(CrateItem::from(value)).unwrap()
|
||||
with(|cx| cx.mono_instance(value.def_id()))
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user