mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Erase regions in new abstract consts
This commit is contained in:
parent
e02d645110
commit
1e40200b35
@ -236,7 +236,7 @@ impl<'tcx> AbstractConst<'tcx> {
|
||||
) -> Result<Option<AbstractConst<'tcx>>, ErrorGuaranteed> {
|
||||
let inner = tcx.thir_abstract_const_opt_const_arg(uv.def)?;
|
||||
debug!("AbstractConst::new({:?}) = {:?}", uv, inner);
|
||||
Ok(inner.map(|inner| AbstractConst { inner, substs: uv.substs }))
|
||||
Ok(inner.map(|inner| AbstractConst { inner, substs: tcx.erase_regions(uv.substs) }))
|
||||
}
|
||||
|
||||
pub fn from_const(
|
||||
@ -416,6 +416,7 @@ impl<'a, 'tcx> AbstractConstBuilder<'a, 'tcx> {
|
||||
// `AbstractConst`s should not contain any promoteds as they require references which
|
||||
// are not allowed.
|
||||
assert_eq!(ct.promoted, None);
|
||||
assert_eq!(ct, self.tcx.erase_regions(ct));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
33
src/test/ui/const-generics/try_unify_ignore_lifetimes.rs
Normal file
33
src/test/ui/const-generics/try_unify_ignore_lifetimes.rs
Normal file
@ -0,0 +1,33 @@
|
||||
// check-pass
|
||||
#![feature(generic_const_exprs)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
struct Num<const N: usize>;
|
||||
|
||||
trait NumT {
|
||||
const VALUE: usize;
|
||||
}
|
||||
|
||||
impl<const N: usize> NumT for Num<N> {
|
||||
const VALUE: usize = N;
|
||||
}
|
||||
|
||||
struct Foo<'a, N: NumT>(&'a [u32; N::VALUE]) where [(); N::VALUE]:;
|
||||
|
||||
trait Bar {
|
||||
type Size: NumT;
|
||||
|
||||
fn bar<'a>(foo: &Foo<'a, Self::Size>) where [(); Self::Size::VALUE]: {
|
||||
todo!();
|
||||
}
|
||||
}
|
||||
|
||||
trait Baz<'a> {
|
||||
type Size: NumT;
|
||||
|
||||
fn baz(foo: &Foo<'a, Self::Size>) where [(); Self::Size::VALUE]: {
|
||||
todo!();
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Reference in New Issue
Block a user