@@ -17,7 +17,7 @@ LL | fn in_impl_Fn_parameter_in_return() -> &'static impl Fn(impl Debug) { panic
1717 | outer `impl Trait`
1818
1919error[E0658]: `impl Trait` in type aliases is unstable
20- --> $DIR/where-allowed.rs:121 :16
20+ --> $DIR/where-allowed.rs:119 :16
2121 |
2222LL | type Out = impl Debug;
2323 | ^^^^^^^^^^
@@ -26,7 +26,7 @@ LL | type Out = impl Debug;
2626 = help: add `#![feature(min_type_alias_impl_trait)]` to the crate attributes to enable
2727
2828error[E0658]: `impl Trait` in type aliases is unstable
29- --> $DIR/where-allowed.rs:157 :23
29+ --> $DIR/where-allowed.rs:154 :23
3030 |
3131LL | type InTypeAlias<R> = impl Debug;
3232 | ^^^^^^^^^^
@@ -35,7 +35,7 @@ LL | type InTypeAlias<R> = impl Debug;
3535 = help: add `#![feature(min_type_alias_impl_trait)]` to the crate attributes to enable
3636
3737error[E0658]: `impl Trait` in type aliases is unstable
38- --> $DIR/where-allowed.rs:161 :39
38+ --> $DIR/where-allowed.rs:157 :39
3939 |
4040LL | type InReturnInTypeAlias<R> = fn() -> impl Debug;
4141 | ^^^^^^^^^^
@@ -110,184 +110,207 @@ LL | fn in_impl_Fn_parameter_in_return() -> &'static impl Fn(impl Debug) { panic
110110 | ^^^^^^^^^^
111111
112112error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
113- --> $DIR/where-allowed.rs:62 :59
113+ --> $DIR/where-allowed.rs:61 :59
114114 |
115115LL | fn in_impl_Fn_return_in_return() -> &'static impl Fn() -> impl Debug { panic!() }
116116 | ^^^^^^^^^^
117117
118118error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
119- --> $DIR/where-allowed.rs:67 :38
119+ --> $DIR/where-allowed.rs:65 :38
120120 |
121121LL | fn in_Fn_parameter_in_generics<F: Fn(impl Debug)> (_: F) { panic!() }
122122 | ^^^^^^^^^^
123123
124124error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
125- --> $DIR/where-allowed.rs:71 :40
125+ --> $DIR/where-allowed.rs:69 :40
126126 |
127127LL | fn in_Fn_return_in_generics<F: Fn() -> impl Debug> (_: F) { panic!() }
128128 | ^^^^^^^^^^
129129
130130error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
131- --> $DIR/where-allowed.rs:84 :32
131+ --> $DIR/where-allowed.rs:82 :32
132132 |
133133LL | struct InBraceStructField { x: impl Debug }
134134 | ^^^^^^^^^^
135135
136136error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
137- --> $DIR/where-allowed.rs:88 :41
137+ --> $DIR/where-allowed.rs:86 :41
138138 |
139139LL | struct InAdtInBraceStructField { x: Vec<impl Debug> }
140140 | ^^^^^^^^^^
141141
142142error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
143- --> $DIR/where-allowed.rs:92 :27
143+ --> $DIR/where-allowed.rs:90 :27
144144 |
145145LL | struct InTupleStructField(impl Debug);
146146 | ^^^^^^^^^^
147147
148148error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
149- --> $DIR/where-allowed.rs:97 :25
149+ --> $DIR/where-allowed.rs:95 :25
150150 |
151151LL | InBraceVariant { x: impl Debug },
152152 | ^^^^^^^^^^
153153
154154error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
155- --> $DIR/where-allowed.rs:99 :20
155+ --> $DIR/where-allowed.rs:97 :20
156156 |
157157LL | InTupleVariant(impl Debug),
158158 | ^^^^^^^^^^
159159
160160error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
161- --> $DIR/where-allowed.rs:110 :23
161+ --> $DIR/where-allowed.rs:108 :23
162162 |
163163LL | fn in_return() -> impl Debug;
164164 | ^^^^^^^^^^
165165
166166error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
167- --> $DIR/where-allowed.rs:128 :34
167+ --> $DIR/where-allowed.rs:125 :34
168168 |
169169LL | fn in_trait_impl_return() -> impl Debug { () }
170170 | ^^^^^^^^^^
171171
172172error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
173- --> $DIR/where-allowed.rs:141 :33
173+ --> $DIR/where-allowed.rs:138 :33
174174 |
175175LL | fn in_foreign_parameters(_: impl Debug);
176176 | ^^^^^^^^^^
177177
178178error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
179- --> $DIR/where-allowed.rs:144 :31
179+ --> $DIR/where-allowed.rs:141 :31
180180 |
181181LL | fn in_foreign_return() -> impl Debug;
182182 | ^^^^^^^^^^
183183
184184error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
185- --> $DIR/where-allowed.rs:161 :39
185+ --> $DIR/where-allowed.rs:157 :39
186186 |
187187LL | type InReturnInTypeAlias<R> = fn() -> impl Debug;
188188 | ^^^^^^^^^^
189189
190190error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
191- --> $DIR/where-allowed.rs:166 :16
191+ --> $DIR/where-allowed.rs:162 :16
192192 |
193193LL | impl PartialEq<impl Debug> for () {
194194 | ^^^^^^^^^^
195195
196196error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
197- --> $DIR/where-allowed.rs:171 :24
197+ --> $DIR/where-allowed.rs:167 :24
198198 |
199199LL | impl PartialEq<()> for impl Debug {
200200 | ^^^^^^^^^^
201201
202202error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
203- --> $DIR/where-allowed.rs:176 :6
203+ --> $DIR/where-allowed.rs:172 :6
204204 |
205205LL | impl impl Debug {
206206 | ^^^^^^^^^^
207207
208208error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
209- --> $DIR/where-allowed.rs:182 :24
209+ --> $DIR/where-allowed.rs:178 :24
210210 |
211211LL | impl InInherentImplAdt<impl Debug> {
212212 | ^^^^^^^^^^
213213
214214error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
215- --> $DIR/where-allowed.rs:188 :11
215+ --> $DIR/where-allowed.rs:184 :11
216216 |
217217LL | where impl Debug: Debug
218218 | ^^^^^^^^^^
219219
220220error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
221- --> $DIR/where-allowed.rs:195 :15
221+ --> $DIR/where-allowed.rs:191 :15
222222 |
223223LL | where Vec<impl Debug>: Debug
224224 | ^^^^^^^^^^
225225
226226error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
227- --> $DIR/where-allowed.rs:202 :24
227+ --> $DIR/where-allowed.rs:198 :24
228228 |
229229LL | where T: PartialEq<impl Debug>
230230 | ^^^^^^^^^^
231231
232232error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
233- --> $DIR/where-allowed.rs:209 :17
233+ --> $DIR/where-allowed.rs:205 :17
234234 |
235235LL | where T: Fn(impl Debug)
236236 | ^^^^^^^^^^
237237
238238error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
239- --> $DIR/where-allowed.rs:216 :22
239+ --> $DIR/where-allowed.rs:212 :22
240240 |
241241LL | where T: Fn() -> impl Debug
242242 | ^^^^^^^^^^
243243
244244error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
245- --> $DIR/where-allowed.rs:222:29
245+ --> $DIR/where-allowed.rs:218:40
246+ |
247+ LL | struct InStructGenericParamDefault<T = impl Debug>(T);
248+ | ^^^^^^^^^^
249+
250+ error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
251+ --> $DIR/where-allowed.rs:222:36
252+ |
253+ LL | enum InEnumGenericParamDefault<T = impl Debug> { Variant(T) }
254+ | ^^^^^^^^^^
255+
256+ error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
257+ --> $DIR/where-allowed.rs:226:38
258+ |
259+ LL | trait InTraitGenericParamDefault<T = impl Debug> {}
260+ | ^^^^^^^^^^
261+
262+ error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
263+ --> $DIR/where-allowed.rs:230:41
264+ |
265+ LL | type InTypeAliasGenericParamDefault<T = impl Debug> = T;
266+ | ^^^^^^^^^^
267+
268+ error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
269+ --> $DIR/where-allowed.rs:234:11
270+ |
271+ LL | impl <T = impl Debug> T {}
272+ | ^^^^^^^^^^
273+
274+ error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
275+ --> $DIR/where-allowed.rs:240:40
276+ |
277+ LL | fn in_method_generic_param_default<T = impl Debug>(_: T) {}
278+ | ^^^^^^^^^^
279+
280+ error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
281+ --> $DIR/where-allowed.rs:246:29
246282 |
247283LL | let _in_local_variable: impl Fn() = || {};
248284 | ^^^^^^^^^
249285 |
250286 = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
251287
252288error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
253- --> $DIR/where-allowed.rs:224 :46
289+ --> $DIR/where-allowed.rs:248 :46
254290 |
255291LL | let _in_return_in_local_variable = || -> impl Fn() { || {} };
256292 | ^^^^^^^^^
257293
258- error[E0720]: cannot resolve opaque type
259- --> $DIR/where-allowed.rs:56:49
260- |
261- LL | fn in_impl_Fn_parameter_in_return() -> &'static impl Fn(impl Debug) { panic!() }
262- | ^^^^^^^^^^^^^^^^^^^ -------- this returned value is of `!` type
263- | |
264- | cannot resolve opaque type
265- |
266- = help: this error will resolve once the item's body returns a concrete type
267-
268- error[E0720]: cannot resolve opaque type
269- --> $DIR/where-allowed.rs:62:46
294+ error: defaults for type parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
295+ --> $DIR/where-allowed.rs:234:7
270296 |
271- LL | fn in_impl_Fn_return_in_return() -> &'static impl Fn() -> impl Debug { panic!() }
272- | ^^^^^^^^^^^^^^^^^^^^^^^ -------- this returned value is of `!` type
273- | |
274- | cannot resolve opaque type
297+ LL | impl <T = impl Debug> T {}
298+ | ^
275299 |
276- = help: this error will resolve once the item's body returns a concrete type
300+ = note: `#[deny(invalid_type_param_default)]` on by default
301+ = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
302+ = note: for more information, see issue #36887 <https://github.com/rust-lang/rust/issues/36887>
277303
278- error: could not find defining uses
279- --> $DIR/where-allowed.rs:121:16
304+ error: defaults for type parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
305+ --> $DIR/where-allowed.rs:240:36
280306 |
281- LL | type Out = impl Debug;
282- | ^^^^^^^^^^
283-
284- error: could not find defining uses
285- --> $DIR/where-allowed.rs:157:23
307+ LL | fn in_method_generic_param_default<T = impl Debug>(_: T) {}
308+ | ^
286309 |
287- LL | type InTypeAlias<R> = impl Debug;
288- | ^^^^^^^^^^
310+ = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
311+ = note: for more information, see issue #36887 <https://github.com/rust-lang/rust/issues/36887>
289312
290- error: aborting due to 44 previous errors
313+ error: aborting due to 48 previous errors
291314
292- Some errors have detailed explanations: E0562, E0658, E0666, E0720 .
315+ Some errors have detailed explanations: E0562, E0658, E0666.
293316For more information about an error, try `rustc --explain E0562`.
0 commit comments