Skip to content

Commit

Permalink
Support non-tuple ZSTs
Browse files Browse the repository at this point in the history
  • Loading branch information
Nadrieril committed Oct 15, 2024
1 parent 1c87998 commit 4d5abb0
Showing 1 changed file with 20 additions and 16 deletions.
36 changes: 20 additions & 16 deletions frontend/exporter/src/constant_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -649,26 +649,30 @@ mod rustc {
ConstValue::ZeroSized { .. } => {
// Should be unit
let hty: Ty = ty.sinto(s);
let cv = match hty.kind() {
TyKind::Tuple(tys) if tys.is_empty() => {
let cv = match ty.kind() {
ty::TyKind::Tuple(tys) if tys.is_empty() => {
ConstantExprKind::Tuple { fields: Vec::new() }
}
TyKind::Arrow(_) => match ty.kind() {
rustc_middle::ty::TyKind::FnDef(def_id, args) => {
let (def_id, generics, generics_impls, method_impl) =
get_function_from_def_id_and_generics(s, *def_id, args);

ConstantExprKind::FnPtr {
def_id,
generics,
generics_impls,
method_impl,
}
ty::TyKind::FnDef(def_id, args) => {
let (def_id, generics, generics_impls, method_impl) =
get_function_from_def_id_and_generics(s, *def_id, args);

ConstantExprKind::FnPtr {
def_id,
generics,
generics_impls,
method_impl,
}
kind => {
fatal!(s[span], "Unexpected:"; {kind})
}
ty::TyKind::Adt(adt_def, ..) => {
assert_eq!(adt_def.variants().len(), 1);
let variant = rustc_target::abi::FIRST_VARIANT;
let variants_info = get_variant_information(adt_def, variant, s);
ConstantExprKind::Adt {
info: variants_info,
fields: vec![],
}
},
}
_ => {
fatal!(
s[span],
Expand Down

0 comments on commit 4d5abb0

Please sign in to comment.