| // Ensure that we emit the deny-by-default lint `invalid_type_param_default` in locations where |
| // type parameter defaults were accidentally allowed but don't have any effect whatsoever. |
| // |
| // Tracked in <https://github.com/rust-lang/rust/issues/36887>. |
| // FIXME(default_type_parameter_fallback): Consider reallowing them once they work properly. |
| |
| fn avg<T = i32>(_: T) {} |
| //~^ ERROR defaults for generic parameters are not allowed here [invalid_type_param_default] |
| //~| WARN this was previously accepted |
| |
| // issue: <https://github.com/rust-lang/rust/issues/26812> |
| fn mdn<T = T::Item>(_: T) {} |
| //~^ ERROR generic parameter defaults cannot reference parameters before they are declared |
| //~| ERROR defaults for generic parameters are not allowed here [invalid_type_param_default] |
| //~| WARN this was previously accepted |
| |
| struct S<T>(T); |
| impl<T = i32> S<T> {} |
| //~^ ERROR defaults for generic parameters are not allowed here [invalid_type_param_default] |
| //~| WARN this was previously accepted |
| |
| fn main() {} |