detect External indices more generally in internalize_constant (#2395)
This commit is contained in:
@@ -1017,6 +1017,13 @@ fn generate_instruction_preface() -> TokenStream {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn is_external(&self) -> bool {
|
||||||
|
matches!(
|
||||||
|
self,
|
||||||
|
IndexingCodePtr::External(_) | IndexingCodePtr::DynamicExternal(_)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl IndexingInstruction {
|
impl IndexingInstruction {
|
||||||
|
|||||||
@@ -114,13 +114,13 @@ impl<'a> IndexingCodeMergingPtr<'a> {
|
|||||||
Some(OptArgIndexKey::Literal(_, _, constant, _)) => {
|
Some(OptArgIndexKey::Literal(_, _, constant, _)) => {
|
||||||
constants.insert(*constant, constant_ptr);
|
constants.insert(*constant, constant_ptr);
|
||||||
}
|
}
|
||||||
|
_ if constant_ptr.is_external() => {
|
||||||
|
// this must be a defunct clause, because it's been deleted
|
||||||
|
// from the skeleton.
|
||||||
|
debug_assert!(constant_key.is_none());
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
if let IndexingCodePtr::DynamicExternal(_) = constant_ptr {
|
unreachable!()
|
||||||
// this must be a defunct clause, because it's been deleted
|
|
||||||
// from the skeleton.
|
|
||||||
} else {
|
|
||||||
unreachable!()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user