@@ -8,6 +8,10 @@ public protocol P<A, B> {
88 associatedtype B
99}
1010
11+ public protocol P1 < A> {
12+ associatedtype A
13+ }
14+
1115public protocol Q < C> {
1216 associatedtype C
1317}
@@ -34,16 +38,29 @@ public func foo(_ a: (any P<Int, Float> & Q<String> & R).Type) {}
3438public func foo( _ a: ( any P < Int , Float > & Q < String > & R & C < Bool > ) . Type) { }
3539public func foo( _ a: ( any P < Int , Float > & Q < String > & R & AnyObject ) . Type) { }
3640
37- public func foo( _ a: ( any P & R ) . Type) { }
38- public func foo( _ a: ( any P & Q < String > ) . Type) { }
39- public func foo( _ a: ( any P & Q < String > & R ) . Type) { }
40- public func foo( _ a: ( any P & Q < String > & R & C < Bool > ) . Type) { }
41- public func foo( _ a: ( any P & Q < String > & R & AnyObject ) . Type) { }
41+ public func foo( _ a: ( any P & P1 ) . Type) { }
42+ public func foo( _ a: ( any P & P1 < String > ) . Type) { }
43+ public func foo( _ a: ( any P & P1 < String > & R ) . Type) { }
44+ public func foo( _ a: ( any P & P1 < String > & R & C < Bool > ) . Type) { }
45+ public func foo( _ a: ( any P & P1 < String > & R & AnyObject ) . Type) { }
46+
47+ public func foo( _ a: ( any P < Int , Float > & P1 ) . Type) { }
48+ public func foo( _ a: ( any P < Int , Float > & P1 & R ) . Type) { }
49+ public func foo( _ a: ( any P < Int , Float > & P1 & R & C < Bool > ) . Type) { }
50+ public func foo( _ a: ( any P < Int , Float > & P1 & R & AnyObject ) . Type) { }
51+
52+ public protocol Q2 < C> : Q { }
53+
54+ public protocol Q3 < C> : Q {
55+ associatedtype C
56+ }
4257
43- public func foo( _ a: ( any P < Int , Float > & Q ) . Type) { }
44- public func foo( _ a: ( any P < Int , Float > & Q & R ) . Type) { }
45- public func foo( _ a: ( any P < Int , Float > & Q & R & C < Bool > ) . Type) { }
46- public func foo( _ a: ( any P < Int , Float > & Q & R & AnyObject ) . Type) { }
58+ public func foo( _ a: ( any Q2 < Int > & R ) . Type) { }
59+ public func foo( _ a: ( any Q3 < Int > & R ) . Type) { }
60+ public func foo( _ a: ( any Q2 & Q3 ) . Type) { }
61+ public func foo( _ a: ( any Q2 & Q3 < Int > ) . Type) { }
62+ public func foo2( _ a: ( any Q2 < Int > & Q3 ) . Type) { }
63+ public func foo3( _ a: ( any Q2 < Int > & Q3 < Int > ) . Type) { }
4764
4865public struct Foo < each T , U> {
4966 public var a1 : ( repeat any P < each T , U > & R )
0 commit comments