Skip to content

Commit 55bf810

Browse files
Also report when goals go from ok to error
1 parent eb088b8 commit 55bf810

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

Diff for: compiler/rustc_trait_selection/src/solve/eval_ctxt.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -391,13 +391,19 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
391391
debug!("rerunning goal to check result is stable");
392392
self.search_graph.reset_encountered_overflow(encountered_overflow);
393393
let (_orig_values, canonical_goal) = self.canonicalize_goal(goal);
394-
let new_canonical_response = EvalCtxt::evaluate_canonical_goal(
394+
let Ok(new_canonical_response) = EvalCtxt::evaluate_canonical_goal(
395395
self.tcx(),
396396
self.search_graph,
397397
canonical_goal,
398398
// FIXME(-Ztrait-solver=next): we do not track what happens in `evaluate_canonical_goal`
399399
&mut ProofTreeBuilder::new_noop(),
400-
)?;
400+
) else {
401+
bug!(
402+
"goal went from {certainty:?} to error: re-canonicalized goal={canonical_goal:#?} \
403+
first_response={canonical_response:#?},
404+
second response was error"
405+
);
406+
};
401407
// We only check for modulo regions as we convert all regions in
402408
// the input to new existentials, even if they're expected to be
403409
// `'static` or a placeholder region.

0 commit comments

Comments
 (0)