// RUN: %target-typecheck-verify-swift -target %target-swift-5.9-abi-triple func sameType(_: T.Type, _: T.Type) {} typealias A = (repeat (each T, U, V)) struct G { typealias B = (repeat A) struct H { typealias C = (repeat B) } } func f1(u: repeat G) {} func fa(t: repeat each T, u: U, v: V) -> A { return (repeat (each t, u, v)) } /* FIXME: These don't work yet func fb(t: repeat each T, u: repeat each U, v: V) -> G.B { return (repeat fa(t: repeat each t, u: each u, v)) } func fc(t: repeat each T, u: repeat each U, v: repeat each V) -> G.H.C { return (repeat fb(t: repeat each t, u: repeat each u, v: each v)) } */ struct X1 {} struct Y1 {} struct Z1 {} struct X2 {} struct Y2 {} struct Z2 {} struct X3 {} struct Y3 {} struct Z3 {} typealias Expanded = ((((X1, X2, X3), (Y1, X2, X3), (Z1, X2, X3)), ((X1, Y2, X3), (Y1, Y2, X3), (Z1, Y2, X3)), ((X1, Z2, X3), (Y1, Z2, X3), (Z1, Z2, X3))), (((X1, X2, Y3), (Y1, X2, Y3), (Z1, X2, Y3)), ((X1, Y2, Y3), (Y1, Y2, Y3), (Z1, Y2, Y3)), ((X1, Z2, Y3), (Y1, Z2, Y3), (Z1, Z2, Y3))), (((X1, X2, Z3), (Y1, X2, Z3), (Z1, X2, Z3)), ((X1, Y2, Z3), (Y1, Y2, Z3), (Z1, Y2, Z3)), ((X1, Z2, Z3), (Y1, Z2, Z3), (Z1, Z2, Z3)))) sameType(G.H.C.self, Expanded.self) typealias C1 = G.H.C typealias C2 = G.H.C typealias C3 = G.H.C sameType(C1.self, Expanded.self) sameType(C2.self, Expanded.self) sameType(C2.self, Expanded.self) extension G { typealias C1 = G.H.C typealias C2 = G.H.C typealias C3 = G.H.C } sameType(G.C1.self, Expanded.self) sameType(G.C2.self, Expanded.self) sameType(G.C3.self, Expanded.self)