Change:
https://crater-
searched nightlies: from nightly-2023-01-24 to nightly-2023-03-30 regressed nightly: nightly-2023-02-05 searched commit range: regressed commit: <details<summarybisected with <a href=''cargo-bisect-rustc</av0.6.5</summaryHost triple: x86_64-unknown-linux-gnu Reproduce with: </detailsThis looks related to , but wasn't fixed by
Let's notify the people involved in that bisection, it's cc author and reviewer A minimization would be helpful.
probably just allowed another existing bug to show up, like the other projection issues. I've reduced the regression to this it still depends on , if anyone has the time to also remove that.
WG-prioritization assigning priority (). label -I-prioritize +P-medium
This seems to have disappeared in nightly. Bisect points to Maybe fixed by
Wasn't that PR already present in your previous bisection up to nightly-2023-03-30 ?
Ah, looks like the is fixed in , but not the .
label -E-needs-mcve +S-has-mcve

Discussion:
span: Option<Span>, layout: Option<TyAndLayout<'tcx>>, ) -> InterpResult<'tcx, OpTy<'tcx, M::Provenance>> { <del> // FIXME(const_prop): normalization needed b/c const prop lint in // `mir_drops_elaborated_and_const_checked`, which happens before // optimized MIR. Only after optimizing the MIR can we guarantee // that the `RevealAll` pass has happened and that the body's consts // are normalized, so any call to resolve before that needs to be // manually normalized. let val = self.tcx.normalize_erasing_regions(self.param_env, *val); match val { </del> <ins> match *val { </ins> mir::ConstantKind::Ty(ct) => { let ty = ct.ty(); let valtree = self.eval_ty_constant(ct, span)?;

let arg = self.param_env.and(arg); self.tcx.try_normalize_generic_arg_after_erasing_regions(arg).unwrap_or_else(|_| bug!( <del> "Failed to normalize {:?}, maybe try to call `try_normalize_erasing_regions` instead", arg.value )) </del> <ins> "Failed to normalize {:?}, maybe try to call `try_normalize_erasing_regions` instead", arg.value )) </ins> } }

return None; } <del> self.use_ecx(source_info, |this| this.ecx.eval_mir_constant(&c.literal, Some(c.span), None)) </del> <ins> // Normalization needed b/c const prop lint runs in // `mir_drops_elaborated_and_const_checked`, which happens before // optimized MIR. Only after optimizing the MIR can we guarantee // that the `RevealAll` pass has happened and that the body's consts // are normalized, so any call to resolve before that needs to be // manually normalized. let val = self.tcx.try_normalize_erasing_regions(self.param_env, c.literal).ok()?; self.use_ecx(source_info, |this| this.ecx.eval_mir_constant(&val, Some(c.span), None)) </ins> } /// Returns the value, if any, of evaluating `place`.

<ins> // build-pass // compile-flags: --crate-type=lib use std::marker::PhantomData; pub trait StreamOnce { type Token; } impl StreamOnce for &str { type Token = (); } pub trait Parser<Input: StreamOnce> { type PartialState: Default; fn parse_mode(&self, _state: &Self::PartialState) {} fn parse_mode_impl() {} } pub fn parse_bool<'a>() -> impl Parser<&'a str> { pub struct TokensCmp<C, Input> where Input: StreamOnce, { _cmp: C, _marker: PhantomData<Input>, } impl<Input, C> Parser<Input> for TokensCmp<C, Input> where C: FnMut(Input::Token), Input: StreamOnce, { type PartialState = (); } TokensCmp { _cmp: |_| (), _marker: PhantomData } } pub struct ParseBool; impl<'a> Parser<&'a str> for ParseBool where &'a str: StreamOnce, { type PartialState = (); fn parse_mode_impl() { parse_bool().parse_mode(&Default::default()) } } </ins>