File tree Expand file tree Collapse file tree 1 file changed +58
-0
lines changed
src/test/ui/const-generics Expand file tree Collapse file tree 1 file changed +58
-0
lines changed Original file line number Diff line number Diff line change 1+ // check-pass
2+ // revisions: full min
3+
4+ #![ cfg_attr( full, feature( const_generics) ) ]
5+ #![ cfg_attr( full, allow( incomplete_features) ) ]
6+ #![ cfg_attr( min, feature( min_const_generics) ) ]
7+
8+ trait Foo < const N : usize > { }
9+ trait Bar < const N : usize > : Foo < N > { }
10+ trait Baz : Foo < 3 > { }
11+
12+ struct FooType < const N : usize > { }
13+ struct BarType < const N : usize > { }
14+ struct BazType { }
15+
16+ impl < const N : usize > Foo < N > for FooType < N > { }
17+ impl < const N : usize > Foo < N > for BarType < N > { }
18+ impl < const N : usize > Bar < N > for BarType < N > { }
19+ impl Foo < 3 > for BazType { }
20+ impl Baz for BazType { }
21+
22+ trait Foz { }
23+ trait Boz : Foo < 3 > + Foz { }
24+ trait Bok < const N : usize > : Foo < N > + Foz { }
25+
26+ struct FozType { }
27+ struct BozType { }
28+ struct BokType < const N : usize > { }
29+
30+ impl Foz for FozType { }
31+
32+ impl Foz for BozType { }
33+ impl Foo < 3 > for BozType { }
34+ impl Boz for BozType { }
35+
36+ impl < const N : usize > Foz for BokType < N > { }
37+ impl < const N : usize > Foo < N > for BokType < N > { }
38+ impl < const N : usize > Bok < N > for BokType < N > { }
39+
40+ fn a < const N : usize > ( x : & dyn Foo < N > ) { }
41+ fn b ( x : & dyn Foo < 3 > ) { }
42+
43+ fn main ( ) {
44+ let foo = FooType :: < 3 > { } ;
45+ a ( & foo) ; b ( & foo) ;
46+
47+ let bar = BarType :: < 3 > { } ;
48+ a ( & bar) ; b ( & bar) ;
49+
50+ let baz = BazType { } ;
51+ a ( & baz) ; b ( & baz) ;
52+
53+ let boz = BozType { } ;
54+ a ( & boz) ; b ( & boz) ;
55+
56+ let bok = BokType :: < 3 > { } ;
57+ a ( & bok) ; b ( & bok) ;
58+ }
You can’t perform that action at this time.
0 commit comments