diff options
| author | Yuki Okushi <jtitor@2k36.org> | 2023-01-31 11:46:25 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-31 11:46:25 +0900 |
| commit | f95f835470f1c5b295d2486259e745eb8e859344 (patch) | |
| tree | 9b745562e3fba358ced07abe7b0b214d1f594a0a /compiler | |
| parent | fbcaf046cc49b8fcb7af96b64293301be6936fad (diff) | |
| parent | 343a359109a48f4ece657831bf0331e22d108800 (diff) | |
| download | rust-f95f835470f1c5b295d2486259e745eb8e859344.tar.gz rust-f95f835470f1c5b295d2486259e745eb8e859344.zip | |
Rollup merge of #107479 - compiler-errors:probe-can-call-ocx, r=BoxyUwU
Use `ObligationCtxt::new_in_snapshot` in `satisfied_from_param_env` We can evaluate nested `ConstEvaluatable` obligations in an evaluation probe, which will ICE if we use `ObligationCtxt::new`. Fixes #107474 Fixes #106666 r? `@BoxyUwU` but feel free to reassign cc `@JulianKnodt` who i think added this assertion code Not sure if the rustdoc test is needed, but can't hurt. They're the same root cause, though.
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/const_evaluatable.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs index f779d9dd8d9..786473457ae 100644 --- a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs +++ b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs @@ -219,7 +219,7 @@ fn satisfied_from_param_env<'tcx>( } if let Some(Ok(c)) = single_match { - let ocx = ObligationCtxt::new(infcx); + let ocx = ObligationCtxt::new_in_snapshot(infcx); assert!(ocx.eq(&ObligationCause::dummy(), param_env, c.ty(), ct.ty()).is_ok()); assert!(ocx.eq(&ObligationCause::dummy(), param_env, c, ct).is_ok()); assert!(ocx.select_all_or_error().is_empty()); |
