Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/mir/eval/shim.rs')
-rw-r--r--crates/hir-ty/src/mir/eval/shim.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/crates/hir-ty/src/mir/eval/shim.rs b/crates/hir-ty/src/mir/eval/shim.rs
index 284148873d..b4a5aa8a87 100644
--- a/crates/hir-ty/src/mir/eval/shim.rs
+++ b/crates/hir-ty/src/mir/eval/shim.rs
@@ -4,7 +4,7 @@
use std::cmp::{self, Ordering};
use hir_def::{attrs::AttrFlags, signatures::FunctionSignature};
-use intern::sym;
+use rustc_abi::ExternAbi;
use rustc_type_ir::inherent::{GenericArgs as _, IntoKind, SliceLike, Ty as _};
use stdx::never;
@@ -59,7 +59,9 @@ impl<'a, 'db: 'a> Evaluator<'a, 'db> {
);
}
let is_extern_c = match def.lookup(self.db).container {
- hir_def::ItemContainerId::ExternBlockId(block) => block.abi(self.db) == Some(sym::C),
+ hir_def::ItemContainerId::ExternBlockId(block) => {
+ matches!(block.abi(self.db), ExternAbi::C { .. })
+ }
_ => false,
};
if is_extern_c {
@@ -1368,7 +1370,8 @@ impl<'a, 'db: 'a> Evaluator<'a, 'db> {
.unwrap()
.1
.get()
- .instantiate(self.interner(), subst);
+ .instantiate(self.interner(), subst)
+ .skip_norm_wip();
let sized_part_size =
layout.fields.offset(field_types.iter().count() - 1).bytes_usize();
let sized_part_align = layout.align.bytes() as usize;