diff options
| author | bors <bors@rust-lang.org> | 2023-03-30 19:28:56 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-03-30 19:28:56 +0000 |
| commit | ec2f40c6b04f0e9850dd1f454e8639d319f4ed9b (patch) | |
| tree | 184117668671744a4aa48d5d99ac6543b6281343 /compiler/rustc_middle | |
| parent | 789ee5e4333a132cb58708ac5c341571c57d92ef (diff) | |
| parent | 1ce6e2bd339d0ea4d292d3afde482050c1f34497 (diff) | |
| download | rust-ec2f40c6b04f0e9850dd1f454e8639d319f4ed9b.tar.gz rust-ec2f40c6b04f0e9850dd1f454e8639d319f4ed9b.zip | |
Auto merge of #109740 - compiler-errors:new-solver-deep-reject-placeholder-consts, r=lcnr
Don't ICE on placeholder consts in deep reject Since we canonicalize const params into placeholder consts, we need to be able to handle them during deep reject. r? `@lcnr` (though maybe `@oli-obk` can look at this one too, if he wants 😸) Fixes compiler-errors/next-solver-hir-issues#10
Diffstat (limited to 'compiler/rustc_middle')
| -rw-r--r-- | compiler/rustc_middle/src/ty/fast_reject.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/rustc_middle/src/ty/fast_reject.rs b/compiler/rustc_middle/src/ty/fast_reject.rs index 0a6e94248e6..61cde923e9a 100644 --- a/compiler/rustc_middle/src/ty/fast_reject.rs +++ b/compiler/rustc_middle/src/ty/fast_reject.rs @@ -312,6 +312,7 @@ impl DeepRejectCtxt { // Impls cannot contain these types as these cannot be named directly. ty::FnDef(..) | ty::Closure(..) | ty::Generator(..) => false, + // Placeholder types don't unify with anything on their own ty::Placeholder(..) | ty::Bound(..) => false, // Depending on the value of `treat_obligation_params`, we either @@ -359,6 +360,9 @@ impl DeepRejectCtxt { TreatParams::AsCandidateKey => true, }, + // Placeholder consts don't unify with anything on their own + ty::ConstKind::Placeholder(_) => false, + // As we don't necessarily eagerly evaluate constants, // they might unify with any value. ty::ConstKind::Expr(_) | ty::ConstKind::Unevaluated(_) | ty::ConstKind::Error(_) => { @@ -371,7 +375,7 @@ impl DeepRejectCtxt { ty::ConstKind::Infer(_) => true, - ty::ConstKind::Bound(..) | ty::ConstKind::Placeholder(_) => { + ty::ConstKind::Bound(..) => { bug!("unexpected obl const: {:?}", obligation_ct) } } |
