| //@ check-pass | |
| // Regression test for for #129286. | |
| // Makes sure that we don't have unconstrained type variables that come from | |
| // bivariant type parameters due to the way that we construct expectation types | |
| // when checking call expressions in HIR typeck. | |
| trait Trait { | |
| type Item; | |
| } | |
| struct Struct<A: Trait<Item = B>, B> { | |
| pub field: A, | |
| } | |
| fn identity<T>(x: T) -> T { | |
| x | |
| } | |
| fn test<A: Trait<Item = B>, B>(x: &Struct<A, B>) { | |
| let x: &Struct<_, _> = identity(x); | |
| } | |
| fn main() {} |