Files
swift-mirror/test/decl/protocol/req/where_clause.swift
Doug Gregor 4860607700 [GSB] Record unresolved potential archetypes as delayed requirements.
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).
2017-06-19 22:20:21 -07:00

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 {}