Skip to content

Commit

Permalink
Do not ICE when failing to normalize in ConstProp.
Browse files Browse the repository at this point in the history
  • Loading branch information
cjgillot committed Mar 6, 2023
1 parent 0fbfc3e commit 8c0cbd8
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 10 deletions.
11 changes: 2 additions & 9 deletions compiler/rustc_const_eval/src/interpret/eval_context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use either::{Either, Left, Right};
use rustc_hir::{self as hir, def_id::DefId, definitions::DefPathData};
use rustc_index::vec::IndexVec;
use rustc_middle::mir;
use rustc_middle::mir::interpret::{ErrorHandled, InterpError, InvalidProgramInfo};
use rustc_middle::mir::interpret::{ErrorHandled, InterpError};
use rustc_middle::ty::layout::{
self, FnAbiError, FnAbiOfHelpers, FnAbiRequest, LayoutError, LayoutOf, LayoutOfHelpers,
TyAndLayout,
Expand Down Expand Up @@ -508,14 +508,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
frame
.instance
.try_subst_mir_and_normalize_erasing_regions(*self.tcx, self.param_env, value)
.map_err(|e| {
self.tcx.sess.delay_span_bug(
self.cur_span(),
format!("failed to normalize {}", e.get_type_for_failure()).as_str(),
);

InterpError::InvalidProgram(InvalidProgramInfo::TooGeneric)
})
.map_err(|_| err_inval!(TooGeneric))
}

/// The `substs` are assumed to already be in our interpreter "universe" (param_env).
Expand Down
8 changes: 7 additions & 1 deletion tests/ui/associated-types/issue-67684.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
// check-pass
// revisions: check build
// [check]check-pass
//
// This second configuration aims to verify that we do not ICE in ConstProp because of
// normalization failure.
// [build]build-pass
// [build]compile-flags: -Zmir-opt-level=3 --emit=mir

#![allow(dead_code)]

Expand Down

0 comments on commit 8c0cbd8

Please sign in to comment.