]> git.proxmox.com Git - rustc.git/blame - src/tools/rustfmt/tests/source/trait.rs
Update upstream source from tag 'upstream/1.52.1+dfsg1'
[rustc.git] / src / tools / rustfmt / tests / source / trait.rs
CommitLineData
f20569fa
XL
1// Test traits
2
3trait Foo {
4 fn bar(x: i32 ) -> Baz< U> { Baz::new()
5 }
6
7 fn baz(a: AAAAAAAAAAAAAAAAAAAAAA,
8b: BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB)
9-> RetType;
10
11 fn foo(a: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, // Another comment
12b: BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB)
13 -> RetType ; // Some comment
14
15 fn baz(&mut self ) -> i32 ;
16
17fn increment(& mut self, x: i32 );
18
19 fn read(&mut self, x: BufReader<R> /* Used to be MemReader */)
20 where R: Read;
21}
22
23pub trait WriteMessage {
24 fn write_message (&mut self, &FrontendMessage) -> io::Result<()>;
25}
26
27trait Runnable {
28 fn handler(self: & Runnable );
29}
30
31trait TraitWithExpr {
32 fn fn_with_expr(x: [i32; 1]);
33}
34
35trait Test {
36 fn read_struct<T, F>(&mut self, s_name: &str, len: usize, f: F) -> Result<T, Self::Error> where F: FnOnce(&mut Self) -> Result<T, Self::Error>;
37}
38
39trait T<> {}
40
41trait Foo { type Bar: Baz; type Inner: Foo = Box< Foo >; }
42
43trait ConstCheck<T>:Foo where T: Baz {
44 const J: i32;
45}
46
47trait Tttttttttttttttttttttttttttttttttttttttttttttttttttttttttt<T>
48 where T: Foo {}
49
50trait Ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt<T> where T: Foo {}
51
52trait FooBar<T> : Tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt where J: Bar { fn test(); }
53
54trait WhereList<T, J> where T: Foo, J: Bar {}
55
56trait X /* comment */ {}
57trait Y // comment
58{
59}
60
61// #2055
62pub trait Foo:
63// A and C
64A + C
65// and B
66 + B
67{}
68
69// #2158
70trait Foo {
71 type ItRev = <MergingUntypedTimeSeries<SliceSeries<SliceWindow>> as UntypedTimeSeries>::IterRev;
72 type IteRev = <MergingUntypedTimeSeries<SliceSeries<SliceWindow>> as UntypedTimeSeries>::IterRev;
73}
74
75// #2331
76trait MyTrait<AAAAAAAAAAAAAAAAAAAA, BBBBBBBBBBBBBBBBBBBB, CCCCCCCCCCCCCCCCCCCC, DDDDDDDDDDDDDDDDDDDD> {
77 fn foo() {}
78}
79
80// Trait aliases
81trait FooBar =
82 Foo
83 + Bar;
84trait FooBar <A, B, C>=
85 Foo
86 + Bar;
87pub trait FooBar =
88 Foo
89 + Bar;
90pub trait FooBar <A, B, C>=
91 Foo
92 + Bar;
93trait AAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDD;
94pub trait AAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDD;
95trait AAAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDD;
96trait AAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDDD;
97trait AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<A, B, C, D, E> = FooBar;
98trait AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<A, B, C, D, E> = FooBar;
99#[rustfmt::skip]
100trait FooBar = Foo
101 + Bar;
102
103// #2637
104auto trait Example {}
105pub auto trait PubExample {}
106pub unsafe auto trait PubUnsafeExample {}
107
108// #3006
109trait Foo<'a> {
110 type Bar< 'a >;
111}
112
113impl<'a> Foo<'a> for i32 {
114 type Bar< 'a > = i32;
115}
116
117// #3092
118pub mod test {
119 pub trait ATraitWithALooongName {}
120 pub trait ATrait
121 :ATraitWithALooongName + ATraitWithALooongName + ATraitWithALooongName + ATraitWithALooongName
122{
123}
124}
125
126// Trait aliases with where clauses.
127trait A = where for<'b> &'b Self: Send;
128
129trait B = where for<'b> &'b Self: Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCC;
130trait B = where for<'b> &'b Self: Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCCC;
131trait B = where
132 for<'b> &'b Self:
133Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCCCCCCCCCCCCCCC;
134trait B = where
135 for<'b> &'b Self:
136Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC;
137
138trait B = where
139 for<'b> &'b Self:
140Send
141 + Clone
142 + Copy
143 + SomeTrait
144 + AAAAAAAA
145 + BBBBBBB
146 + CCCCCCCCC
147 + DDDDDDD
148 + DDDDDDDD
149 + DDDDDDDDD
150 + EEEEEEE;
151
152trait A<'a, 'b, 'c> = Debug<T> + Foo where for<'b> &'b Self: Send;
153
154trait B<'a, 'b, 'c> = Debug<T> +Foo
155where for<'b> &'b Self:
156Send
157 + Clone
158 + Copy
159 + SomeTrait
160 + AAAAAAAA
161 + BBBBBBB
162 + CCCCCCCCC
163 + DDDDDDD;
164
165trait B<'a, 'b, 'c,T> = Debug<'a, T> where for<'b> &'b Self:
166Send
167 + Clone
168 + Copy
169 + SomeTrait
170 + AAAAAAAA
171 + BBBBBBB
172 + CCCCCCCCC
173 + DDDDDDD
174 + DDDDDDDD
175 + DDDDDDDDD
176 + EEEEEEE;