]> git.lizzy.rs Git - rust.git/blob - src/test/ui/stability-attribute/auxiliary/unstable_generic_param.rs
Permit `#[deprecated]` in stdlib
[rust.git] / src / test / ui / stability-attribute / auxiliary / unstable_generic_param.rs
1 #![crate_type = "lib"]
2 #![feature(staged_api)]
3 #![stable(feature = "stable_test_feature", since = "1.0.0")]
4
5 #[stable(feature = "stable_test_feature", since = "1.0.0")]
6 pub trait Trait1<#[unstable(feature = "unstable_default", issue = "none")] T = ()> {
7     #[stable(feature = "stable_test_feature", since = "1.0.0")]
8     fn foo() -> T;
9 }
10
11 #[stable(feature = "stable_test_feature", since = "1.0.0")]
12 pub trait Trait2<#[unstable(feature = "unstable_default", issue = "none")] T = usize> {
13     #[stable(feature = "stable_test_feature", since = "1.0.0")]
14     fn foo() -> T;
15 }
16
17 #[stable(feature = "stable_test_feature", since = "1.0.0")]
18 pub trait Trait3<T = ()> {
19     #[stable(feature = "stable_test_feature", since = "1.0.0")]
20     fn foo() -> T;
21 }
22
23 #[stable(feature = "stable_test_feature", since = "1.0.0")]
24 pub struct Struct1<#[unstable(feature = "unstable_default", issue = "none")] T = usize> {
25     #[stable(feature = "stable_test_feature", since = "1.0.0")]
26     pub field: T,
27 }
28
29 #[stable(feature = "stable_test_feature", since = "1.0.0")]
30 pub struct Struct2<T = usize> {
31     #[stable(feature = "stable_test_feature", since = "1.0.0")]
32     pub field: T,
33 }
34
35 #[stable(feature = "stable_test_feature", since = "1.0.0")]
36 pub struct Struct3<A = isize, #[unstable(feature = "unstable_default", issue = "none")] B = usize> {
37     #[stable(feature = "stable_test_feature", since = "1.0.0")]
38     pub field1: A,
39     #[stable(feature = "stable_test_feature", since = "1.0.0")]
40     pub field2: B,
41 }
42
43 #[deprecated(since = "1.1.0", note = "test")]
44 #[stable(feature = "stable_test_feature", since = "1.0.0")]
45 pub struct Struct4<A = usize> {
46     #[stable(feature = "stable_test_feature", since = "1.0.0")]
47     pub field: A,
48 }
49
50 #[deprecated(since = "1.1.0", note = "test")]
51 #[stable(feature = "stable_test_feature", since = "1.0.0")]
52 pub struct Struct5<#[unstable(feature = "unstable_default", issue = "none")] A = usize> {
53     #[stable(feature = "stable_test_feature", since = "1.0.0")]
54     pub field: A,
55 }
56
57 #[stable(feature = "stable_test_feature", since = "1.0.0")]
58 pub struct Struct6<#[unstable(feature = "unstable_default6", issue = "none")] T = usize> {
59     #[stable(feature = "stable_test_feature", since = "1.0.0")]
60     pub field: T,
61 }
62
63 #[stable(feature = "stable_test_feature", since = "1.0.0")]
64 pub const STRUCT1: Struct1 = Struct1 { field: 1 };
65
66 #[stable(feature = "stable_test_feature", since = "1.0.0")]
67 pub const STRUCT2: Struct2 = Struct2 { field: 1 };
68
69 #[stable(feature = "stable_test_feature", since = "1.0.0")]
70 pub const STRUCT3: Struct3 = Struct3 { field1: 1, field2: 2 };
71
72 #[stable(feature = "stable_test_feature", since = "1.0.0")]
73 pub const STRUCT4: Struct4 = Struct4 { field: 1 };
74
75 #[stable(feature = "stable_test_feature", since = "1.0.0")]
76 pub const STRUCT5: Struct5 = Struct5 { field: 1 };
77
78 #[stable(feature = "stable_test_feature", since = "1.0.0")]
79 pub enum Enum1<#[unstable(feature = "unstable_default", issue = "none")] T = usize> {
80     #[stable(feature = "stable_test_feature", since = "1.0.0")]
81     Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
82     #[stable(feature = "stable_test_feature", since = "1.0.0")]
83     None,
84 }
85
86 #[stable(feature = "stable_test_feature", since = "1.0.0")]
87 pub enum Enum2<T = usize> {
88     #[stable(feature = "stable_test_feature", since = "1.0.0")]
89     Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
90     #[stable(feature = "stable_test_feature", since = "1.0.0")]
91     None,
92 }
93
94 #[stable(feature = "stable_test_feature", since = "1.0.0")]
95 pub enum Enum3<T = isize, #[unstable(feature = "unstable_default", issue = "none")] E = usize> {
96     #[stable(feature = "stable_test_feature", since = "1.0.0")]
97     Ok(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
98     #[stable(feature = "stable_test_feature", since = "1.0.0")]
99     Err(#[stable(feature = "stable_test_feature", since = "1.0.0")] E),
100 }
101
102 #[deprecated(since = "1.1.0", note = "test")]
103 #[stable(feature = "stable_test_feature", since = "1.0.0")]
104 pub enum Enum4<T = usize> {
105     #[stable(feature = "stable_test_feature", since = "1.0.0")]
106     Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
107     #[stable(feature = "stable_test_feature", since = "1.0.0")]
108     None,
109 }
110
111 #[deprecated(since = "1.1.0", note = "test")]
112 #[stable(feature = "stable_test_feature", since = "1.0.0")]
113 pub enum Enum5<#[unstable(feature = "unstable_default", issue = "none")] T = usize> {
114     #[stable(feature = "stable_test_feature", since = "1.0.0")]
115     Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
116     #[stable(feature = "stable_test_feature", since = "1.0.0")]
117     None,
118 }
119
120 #[stable(feature = "stable_test_feature", since = "1.0.0")]
121 pub enum Enum6<#[unstable(feature = "unstable_default6", issue = "none")] T = usize> {
122     #[stable(feature = "stable_test_feature", since = "1.0.0")]
123     Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
124     #[stable(feature = "stable_test_feature", since = "1.0.0")]
125     None,
126 }
127
128 #[stable(feature = "stable_test_feature", since = "1.0.0")]
129 pub const ENUM1: Enum1 = Enum1::Some(1);
130
131 #[stable(feature = "stable_test_feature", since = "1.0.0")]
132 pub const ENUM2: Enum2 = Enum2::Some(1);
133
134 #[stable(feature = "stable_test_feature", since = "1.0.0")]
135 pub const ENUM3: Enum3 = Enum3::Ok(1);
136 #[stable(feature = "stable_test_feature", since = "1.0.0")]
137 pub const ENUM3B: Enum3 = Enum3::Err(1);
138
139 #[stable(feature = "stable_test_feature", since = "1.0.0")]
140 pub const ENUM4: Enum4 = Enum4::Some(1);
141
142 #[stable(feature = "stable_test_feature", since = "1.0.0")]
143 pub const ENUM5: Enum5 = Enum5::Some(1);
144
145 #[stable(feature = "stable_test_feature", since = "1.0.0")]
146 pub type Alias1<#[unstable(feature = "unstable_default", issue = "none")] T = usize> = Option<T>;
147
148 #[stable(feature = "stable_test_feature", since = "1.0.0")]
149 pub type Alias2<T = usize> = Option<T>;
150
151 #[stable(feature = "stable_test_feature", since = "1.0.0")]
152 pub type Alias3<T = isize, #[unstable(feature = "unstable_default", issue = "none")] E = usize> =
153     Result<T, E>;
154
155 #[deprecated(since = "1.1.0", note = "test")]
156 #[stable(feature = "stable_test_feature", since = "1.0.0")]
157 pub type Alias4<T = usize> = Option<T>;
158
159 #[deprecated(since = "1.1.0", note = "test")]
160 #[stable(feature = "stable_test_feature", since = "1.0.0")]
161 pub type Alias5<#[unstable(feature = "unstable_default", issue = "none")] T = usize> = Option<T>;
162
163 #[stable(feature = "stable_test_feature", since = "1.0.0")]
164 pub type Alias6<#[unstable(feature = "unstable_default6", issue = "none")] T = usize> = Option<T>;
165
166 #[stable(feature = "stable_test_feature", since = "1.0.0")]
167 pub const ALIAS1: Alias1 = Alias1::Some(1);
168
169 #[stable(feature = "stable_test_feature", since = "1.0.0")]
170 pub const ALIAS2: Alias2 = Alias2::Some(1);
171
172 #[stable(feature = "stable_test_feature", since = "1.0.0")]
173 pub const ALIAS3: Alias3 = Alias3::Ok(1);
174 #[stable(feature = "stable_test_feature", since = "1.0.0")]
175 pub const ALIAS3B: Alias3 = Alias3::Err(1);
176
177 #[stable(feature = "stable_test_feature", since = "1.0.0")]
178 pub const ALIAS4: Alias4 = Alias4::Some(1);
179
180 #[stable(feature = "stable_test_feature", since = "1.0.0")]
181 pub const ALIAS5: Alias5 = Alias5::Some(1);
182
183
184 #[stable(feature = "stable_test_feature", since = "1.0.0")]
185 pub trait Alloc {}
186
187 #[stable(feature = "stable_test_feature", since = "1.0.0")]
188 pub struct System {}
189
190 #[stable(feature = "stable_test_feature", since = "1.0.0")]
191 impl Alloc for System {}
192
193 #[stable(feature = "stable_test_feature", since = "1.0.0")]
194 pub struct Box1<T, #[unstable(feature = "box_alloc_param", issue = "none")] A: Alloc = System> {
195     ptr: *mut T,
196     alloc: A,
197 }
198
199 impl<T> Box1<T, System> {
200     #[stable(feature = "stable_test_feature", since = "1.0.0")]
201     pub fn new(mut t: T) -> Self {
202         unsafe { Self { ptr: &mut t, alloc: System {} } }
203     }
204 }
205
206 #[stable(feature = "stable_test_feature", since = "1.0.0")]
207 pub struct Box2<T, A: Alloc = System> {
208     ptr: *mut T,
209     alloc: A,
210 }
211
212 impl<T> Box2<T, System> {
213     #[stable(feature = "stable_test_feature", since = "1.0.0")]
214     pub fn new(mut t: T) -> Self {
215         Self { ptr: &mut t, alloc: System {} }
216     }
217 }
218
219 #[stable(feature = "stable_test_feature", since = "1.0.0")]
220 pub struct Box3<T> {
221     ptr: *mut T,
222 }
223
224 impl<T> Box3<T> {
225     #[stable(feature = "stable_test_feature", since = "1.0.0")]
226     pub fn new(mut t: T) -> Self {
227         Self { ptr: &mut t }
228     }
229 }