Skip to content

Commit f666aac

Browse files
committed
add regression tests
1 parent a9dd08c commit f666aac

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//@ check-pass
2+
//@ revisions: ai ia ii
3+
//@ compile-flags: -Znext-solver=coherence
4+
5+
// Regression test for nalgebra hang <https://github.com/rust-lang/rust/issues/130056>.
6+
7+
#![feature(lazy_type_alias)]
8+
#![allow(incomplete_features)]
9+
10+
type Id<T: ?Sized> = T;
11+
trait NotImplemented {}
12+
13+
struct W<'a, T: ?Sized, U: ?Sized>(&'a (), *const T, *const U);
14+
trait Trait {
15+
type Assoc: ?Sized;
16+
}
17+
impl<'a, T: ?Sized + Trait> Trait for W<'a, T, T> {
18+
#[cfg(ai)]
19+
type Assoc = W<'a, T::Assoc, Id<T::Assoc>>;
20+
#[cfg(ia)]
21+
type Assoc = W<'a, Id<T::Assoc>, T::Assoc>;
22+
#[cfg(ii)]
23+
type Assoc = W<'a, Id<T::Assoc>, Id<T::Assoc>>;
24+
}
25+
26+
trait Overlap<T: ?Sized> {}
27+
impl<'a, T: ?Sized> Overlap<T> for W<'a, T, T> {}
28+
impl<T: ?Sized + Trait + NotImplemented> Overlap<T::Assoc> for T {}
29+
30+
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//@ check-pass
2+
//@ revisions: current next
3+
//@[next] compile-flags: -Znext-solver
4+
5+
// Regression test for nalgebra hang from
6+
// https://github.com/rust-lang/rust/pull/130654#issuecomment-2365465354
7+
trait HasAlias {}
8+
9+
struct Dummy;
10+
trait DummyTrait {
11+
type DummyType<T: HasAlias>;
12+
}
13+
impl DummyTrait for Dummy {
14+
type DummyType<T: HasAlias> = T;
15+
}
16+
type AliasOf<T> = <Dummy as DummyTrait>::DummyType<T>;
17+
18+
struct Matrix<T, S>(T, S);
19+
type OMatrix<T> = Matrix<T, AliasOf<T>>;
20+
21+
impl<T: HasAlias> HasAlias for OMatrix<T> {}
22+
23+
trait SimdValue {
24+
type Element;
25+
}
26+
impl<T: HasAlias + SimdValue<Element: HasAlias>> SimdValue for OMatrix<T> {
27+
type Element = OMatrix<T::Element>;
28+
}
29+
30+
trait Unimplemented {}
31+
pub trait MyFrom<T> {}
32+
impl<T: Unimplemented> MyFrom<T> for T {}
33+
impl<T: SimdValue<Element: HasAlias>> MyFrom<T> for OMatrix<T::Element> {}
34+
35+
fn main() {}

0 commit comments

Comments
 (0)