| A type parameter with default value is using forward declared identifier. | |
| Erroneous code example: | |
| ```compile_fail,E0128 | |
| struct Foo<T = U, U = ()> { | |
| field1: T, | |
| field2: U, | |
| } | |
| // error: generic parameters with a default cannot use forward declared | |
| // identifiers | |
| ``` | |
| Type parameter defaults can only use parameters that occur before them. Since | |
| type parameters are evaluated in-order, this issue could be fixed by doing: | |
| ``` | |
| struct Foo<U = (), T = U> { | |
| field1: T, | |
| field2: U, | |
| } | |
| ``` | |
| Please also verify that this wasn't because of a name-clash and rename the type | |
| parameter if so. |