File tree 2 files changed +67
-0
lines changed 2 files changed +67
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // Formerly this ICEd with the following message:
12
+ // Tried to project an inherited associated type during coherence checking,
13
+ // which is currently not supported.
14
+ //
15
+ // No we expect to run into a more user-friendly cycle error instead.
16
+
17
+ #![ feature( specialization) ]
18
+
19
+ trait Trait < T > { type Assoc ; }
20
+ //~^ unsupported cyclic reference between types/traits detected [E0391]
21
+
22
+ impl < T > Trait < T > for Vec < T > {
23
+ type Assoc = ( ) ;
24
+ }
25
+
26
+ impl Trait < u8 > for Vec < u8 > { }
27
+
28
+ impl < T > Trait < T > for String {
29
+ type Assoc = ( ) ;
30
+ }
31
+
32
+ impl Trait < <Vec < u8 > as Trait < u8 > >:: Assoc > for String { }
33
+
34
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // Make sure we don't crash with a cycle error during coherence.
12
+
13
+ #![ feature( specialization) ]
14
+
15
+ trait Trait < T > {
16
+ type Assoc ;
17
+ }
18
+
19
+ impl < T > Trait < T > for Vec < T > {
20
+ default type Assoc = ( ) ;
21
+ }
22
+
23
+ impl Trait < u8 > for Vec < u8 > {
24
+ type Assoc = u8 ;
25
+ }
26
+
27
+ impl < T > Trait < T > for String {
28
+ type Assoc = ( ) ;
29
+ }
30
+
31
+ impl Trait < <Vec < u8 > as Trait < u8 > >:: Assoc > for String { }
32
+
33
+ fn main ( ) { }
You can’t perform that action at this time.
0 commit comments