mirror of https://github.com/rust-lang/rust
36 lines
774 B
Rust
36 lines
774 B
Rust
//@ check-pass
|
|
// https://github.com/rust-lang/rust/issues/55001
|
|
#![crate_name="foo"]
|
|
|
|
// Regression test for issue #55001. Previously, we would incorrectly
|
|
// cache certain trait selection results when checking for blanket impls,
|
|
// resulting in an ICE when we tried to confirm the cached ParamCandidate
|
|
// against an obligation.
|
|
|
|
pub struct DefaultAllocator;
|
|
pub struct Standard;
|
|
pub struct Inner;
|
|
|
|
pub trait Rand {}
|
|
|
|
pub trait Distribution<T> {}
|
|
pub trait Allocator<N> {}
|
|
|
|
impl<T> Rand for T where Standard: Distribution<T> {}
|
|
|
|
impl<A> Distribution<Point<A>> for Standard
|
|
where
|
|
DefaultAllocator: Allocator<A>,
|
|
Standard: Distribution<A> {}
|
|
|
|
impl Distribution<Inner> for Standard {}
|
|
|
|
|
|
pub struct Point<N>
|
|
where DefaultAllocator: Allocator<N>
|
|
{
|
|
field: N
|
|
}
|
|
|
|
fn main() {}
|