Skip to content

Commit 9b0b310

Browse files
committed
Fix cerce_unsize_info
1 parent 1c9fde8 commit 9b0b310

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/monomorphize_collector.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use rustc_middle::{middle::codegen_fn_attrs::CodegenFnAttrFlags, mir::visit::TyC
2626
use rustc_session::config::EntryFnType;
2727
use rustc_session::Limit;
2828
use rustc_span::source_map::{dummy_spanned, respan, Spanned};
29-
use rustc_span::{Span, DUMMY_SP};
29+
use rustc_span::{ErrorGuaranteed, Span, DUMMY_SP};
3030
use rustc_trait_selection::traits;
3131
use std::ops::Range;
3232
use std::path::PathBuf;
@@ -37,7 +37,7 @@ fn custom_coerce_unsize_info<'tcx>(
3737
param_env: ty::ParamEnv<'tcx>,
3838
source_ty: Ty<'tcx>,
3939
target_ty: Ty<'tcx>,
40-
) -> CustomCoerceUnsized {
40+
) -> Result<CustomCoerceUnsized, ErrorGuaranteed> {
4141
let trait_ref = ty::TraitRef::from_lang_item(
4242
tcx.tcx,
4343
LangItem::CoerceUnsized,
@@ -49,7 +49,7 @@ fn custom_coerce_unsize_info<'tcx>(
4949
Ok(traits::ImplSource::UserDefined(traits::ImplSourceUserDefinedData {
5050
impl_def_id,
5151
..
52-
})) => tcx.coerce_unsized_info(impl_def_id).custom_kind.unwrap(),
52+
})) => Ok(tcx.coerce_unsized_info(impl_def_id)?.custom_kind.unwrap()),
5353
impl_source => {
5454
bug!("invalid `CoerceUnsized` impl_source: {:?}", impl_source);
5555
}
@@ -867,7 +867,13 @@ pub fn find_vtable_types_for_unsizing<'tcx>(
867867
assert_eq!(source_adt_def, target_adt_def);
868868

869869
let CustomCoerceUnsized::Struct(coerce_index) =
870-
custom_coerce_unsize_info(tcx, param_env, source_ty, target_ty);
870+
match custom_coerce_unsize_info(tcx, param_env, source_ty, target_ty) {
871+
Ok(ccu) => ccu,
872+
Err(e) => {
873+
let e = Ty::new_error(tcx.tcx, e);
874+
return (e, e);
875+
}
876+
};
871877

872878
let source_fields = &source_adt_def.non_enum_variant().fields;
873879
let target_fields = &target_adt_def.non_enum_variant().fields;

0 commit comments

Comments
 (0)