swift
c2787178 - [CSSimplify] Avoid simplifying dependent members until pack expansions in the based are bound

Commit
129 days ago
[CSSimplify] Avoid simplifying dependent members until pack expansions in the based are bound Dependent members cannot be simplified if base type contains unresolved pack expansion type variables because they don't give enough information to substitution logic to form a correct type. For example: ``` protocol P { associatedtype V } struct S<each T> : P { typealias V = (repeat (each T)?) } ``` If pack expansion is represented as `$T1` and its pattern is `$T2`, a reference to `V` would get a type `S<Pack{$T}>.V` and simplified version would be `Optional<Pack{$T1}>` instead of `Pack{repeat Optional<$T2>}` because `$T1` is treated as a substitution for `each T` until bound. Resolves: rdar://161207705
Author
Parents
Loading