Skip to content

Commit d97fdf1

Browse files
committed
Add test for #101844
1 parent 92b759f commit d97fdf1

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

src/test/ui/mir/issue-101844.rs

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// check-pass
2+
3+
pub trait FirstTrait {
4+
type Item;
5+
type Extra: Extra<(), Error = Self::Item>;
6+
}
7+
8+
trait SecondTrait {
9+
type Item2;
10+
}
11+
12+
trait ThirdTrait: SecondTrait {
13+
type Item3;
14+
}
15+
16+
trait FourthTrait {
17+
type Item4;
18+
}
19+
20+
impl<First> SecondTrait for First
21+
where
22+
First: FirstTrait,
23+
{
24+
type Item2 = First::Extra;
25+
}
26+
27+
impl<Second, T> ThirdTrait for Second
28+
where
29+
Second: SecondTrait<Item2 = T>,
30+
{
31+
type Item3 = T;
32+
}
33+
34+
impl<S, Third: ?Sized> FourthTrait for Third
35+
where
36+
Third: ThirdTrait<Item3 = S>,
37+
{
38+
type Item4 = S;
39+
}
40+
41+
pub trait Extra<Request> {
42+
type Error;
43+
}
44+
45+
struct ImplShoulExist<D, Req> {
46+
_gen: (D, Req),
47+
}
48+
49+
impl<D, Req> ImplShoulExist<D, Req>
50+
where
51+
D: FourthTrait,
52+
D::Item4: Extra<Req>,
53+
<D::Item4 as Extra<Req>>::Error: Into<()>,
54+
{
55+
fn access_fn(_: D) {
56+
todo!()
57+
}
58+
}
59+
60+
impl<D, Req> Extra<Req> for ImplShoulExist<D, Req> {
61+
type Error = ();
62+
}
63+
64+
pub fn broken<MS>(ms: MS)
65+
where
66+
MS: FirstTrait,
67+
MS::Item: Into<()>,
68+
{
69+
// Error: Apparently Balance::new doesn't exist during MIR validation
70+
let _ = ImplShoulExist::<MS, ()>::access_fn(ms);
71+
}
72+
73+
fn main() {}

0 commit comments

Comments
 (0)