diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-09-23 15:40:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-23 15:40:22 +0200 |
| commit | 3a8bad98d71448290c58913bc42dfbea49855aad (patch) | |
| tree | 2ef8ccfda83e29bed99a59671dea05bbbb0a22db | |
| parent | 3de0d678f81b852bae74dc327e4443f8367bbaf1 (diff) | |
| parent | ded3edac9ad2dd014eed22d5c9050af6eb22882f (diff) | |
| download | rust-3a8bad98d71448290c58913bc42dfbea49855aad.tar.gz rust-3a8bad98d71448290c58913bc42dfbea49855aad.zip | |
Rollup merge of #102137 - b-naber:lazy-const-val-conversion, r=lcnr
Don't convert valtree to constvalue during normalization r? ``@lcnr``
3 files changed, 7 insertions, 54 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/query/normalize.rs b/compiler/rustc_trait_selection/src/traits/query/normalize.rs index 77f83b3f542..31e7fb67f0e 100644 --- a/compiler/rustc_trait_selection/src/traits/query/normalize.rs +++ b/compiler/rustc_trait_selection/src/traits/query/normalize.rs @@ -351,25 +351,7 @@ impl<'cx, 'tcx> FallibleTypeFolder<'tcx> for QueryNormalizer<'cx, 'tcx> { &mut self, constant: mir::ConstantKind<'tcx>, ) -> Result<mir::ConstantKind<'tcx>, Self::Error> { - Ok(match constant { - mir::ConstantKind::Ty(c) => { - let const_folded = c.try_super_fold_with(self)?; - match const_folded.kind() { - ty::ConstKind::Value(valtree) => { - let tcx = self.infcx.tcx; - let ty = const_folded.ty(); - let const_val = tcx.valtree_to_const_val((ty, valtree)); - debug!(?ty, ?valtree, ?const_val); - - mir::ConstantKind::Val(const_val, ty) - } - _ => mir::ConstantKind::Ty(const_folded), - } - } - mir::ConstantKind::Val(_, _) | mir::ConstantKind::Unevaluated(..) => { - constant.try_super_fold_with(self)? - } - }) + constant.try_super_fold_with(self) } #[inline] diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.rs b/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.rs index 354abf99d4d..52aa4bb3101 100644 --- a/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.rs +++ b/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.rs @@ -24,10 +24,6 @@ mod assert { Src, Context, { from_options(ASSUME_ALIGNMENT, ASSUME_LIFETIMES, ASSUME_SAFETY, ASSUME_VALIDITY) } - //~^ ERROR E0080 - //~| ERROR E0080 - //~| ERROR E0080 - //~| ERROR E0080 >, {} diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.stderr b/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.stderr index a258f2ecea6..c6d93876cfa 100644 --- a/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.stderr +++ b/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.stderr @@ -1,52 +1,27 @@ error[E0308]: mismatched types - --> $DIR/wrong-type-assume.rs:53:51 + --> $DIR/wrong-type-assume.rs:49:51 | LL | assert::is_transmutable::<Src, Dst, Context, {0u8}, false, false, false>(); | ^^^ expected `bool`, found `u8` -error[E0080]: evaluation of `assert::is_transmutable::<test::Src, test::Dst, test::Context, {0u8}, false, false, false>::{constant#0}` failed - --> $DIR/wrong-type-assume.rs:26:15 - | -LL | { from_options(ASSUME_ALIGNMENT, ASSUME_LIFETIMES, ASSUME_SAFETY, ASSUME_VALIDITY) } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ referenced constant has errors - error[E0308]: mismatched types - --> $DIR/wrong-type-assume.rs:54:58 + --> $DIR/wrong-type-assume.rs:50:58 | LL | assert::is_transmutable::<Src, Dst, Context, false, {0u8}, false, false>(); | ^^^ expected `bool`, found `u8` -error[E0080]: evaluation of `assert::is_transmutable::<test::Src, test::Dst, test::Context, false, {0u8}, false, false>::{constant#0}` failed - --> $DIR/wrong-type-assume.rs:26:15 - | -LL | { from_options(ASSUME_ALIGNMENT, ASSUME_LIFETIMES, ASSUME_SAFETY, ASSUME_VALIDITY) } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ referenced constant has errors - error[E0308]: mismatched types - --> $DIR/wrong-type-assume.rs:55:65 + --> $DIR/wrong-type-assume.rs:51:65 | LL | assert::is_transmutable::<Src, Dst, Context, false, false, {0u8}, false>(); | ^^^ expected `bool`, found `u8` -error[E0080]: evaluation of `assert::is_transmutable::<test::Src, test::Dst, test::Context, false, false, {0u8}, false>::{constant#0}` failed - --> $DIR/wrong-type-assume.rs:26:15 - | -LL | { from_options(ASSUME_ALIGNMENT, ASSUME_LIFETIMES, ASSUME_SAFETY, ASSUME_VALIDITY) } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ referenced constant has errors - error[E0308]: mismatched types - --> $DIR/wrong-type-assume.rs:56:72 + --> $DIR/wrong-type-assume.rs:52:72 | LL | assert::is_transmutable::<Src, Dst, Context, false, false, false, {0u8}>(); | ^^^ expected `bool`, found `u8` -error[E0080]: evaluation of `assert::is_transmutable::<test::Src, test::Dst, test::Context, false, false, false, {0u8}>::{constant#0}` failed - --> $DIR/wrong-type-assume.rs:26:15 - | -LL | { from_options(ASSUME_ALIGNMENT, ASSUME_LIFETIMES, ASSUME_SAFETY, ASSUME_VALIDITY) } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ referenced constant has errors - -error: aborting due to 8 previous errors +error: aborting due to 4 previous errors -Some errors have detailed explanations: E0080, E0308. -For more information about an error, try `rustc --explain E0080`. +For more information about this error, try `rustc --explain E0308`. |
