mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Whenever we form a potential archetype that is unresolved (because it names a member wasn't known at the time the potential archetype was formed), create a corresponding delayed requirement to resolve the potential archetype. This ensures that all potential archetypes get a chance to be resolve, fixing the nested type should have matched associated type assertion in rdar://problem/31401161 (and others).
19 lines
490 B
Swift
19 lines
490 B
Swift
// RUN: %target-typecheck-verify-swift
|
|
|
|
// rdar://problem/31401161
|
|
class C1 {}
|
|
|
|
protocol P1 {
|
|
associatedtype Element
|
|
}
|
|
|
|
protocol P2 : P1 {
|
|
associatedtype SubSequence : P1 // expected-note{{'SubSequence' declared here}}
|
|
}
|
|
|
|
protocol P3 : P2 {
|
|
associatedtype SubSequence : P2 // expected-warning{{redeclaration of associated type 'SubSequence' from protocol 'P2' is better expressed as a 'where' clause on the protocol}}
|
|
}
|
|
|
|
func foo<S>(_: S) where S.SubSequence.Element == C1, S : P3 {}
|