mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
I think the original idea was to elide `Array<$T>` if there is a binding a resolved generic arguments i.e. `Array<Float>`, but the check doesn't account for the fact that bindings could be of different kinds and there are some implicit conversions that could be missed if we remove the bindings. For example, given the following constraints: `Array<$T0> conv $T1` `$T1 conv Array<(String, Int)>` `$T0` can be a supertype of `Array<$T0>` and subtype of `Array<(String, Int)>`. The solver should accept both types as viable bindings because the `$T0` could be bound to `(key: String, value: Int)` and that would match `Array<(String, Int)>` conversion.