// RUN: %empty-directory(%t) // RUN: %target-swift-emit-module-interface(%t/conditional_pack_requirements.swiftinterface) %s -target %target-swift-5.9-abi-triple // RUN: %FileCheck %s < %t/conditional_pack_requirements.swiftinterface public protocol P { associatedtype A } public protocol Q {} public class C {} public struct GG1 where A.A == C {} extension GG1: Q where A: Q, repeat each B: Q {} // CHECK-LABEL: public struct GG1 where A : conditional_pack_requirements.P, repeat each B : conditional_pack_requirements.P, A.A == conditional_pack_requirements.C { // CHECK-LABEL: extension conditional_pack_requirements.GG1 : conditional_pack_requirements.Q where A : conditional_pack_requirements.Q, repeat each B : conditional_pack_requirements.Q { public struct GG2 { public struct Nested where repeat (each A).A == (each B).A {} } extension GG2.Nested: Q where repeat each A: Q, repeat each B: Q {} // CHECK-LABEL: public struct GG2 where repeat each A : conditional_pack_requirements.P { // CHECK-LABEL: public struct Nested where repeat each B : conditional_pack_requirements.P, repeat (each A).A == (each B).A { // CHECK-LABEL: extension conditional_pack_requirements.GG2.Nested : conditional_pack_requirements.Q where repeat each A : conditional_pack_requirements.Q, repeat each B : conditional_pack_requirements.Q { public struct GG3 where A.A : C {} extension GG3: Q where A: Q, repeat each B: Q {} // CHECK-LABEL: public struct GG3 where A : conditional_pack_requirements.P, repeat each B : conditional_pack_requirements.P, A.A : conditional_pack_requirements.C { // CHECK-LABEL: extension conditional_pack_requirements.GG3 : conditional_pack_requirements.Q where A : conditional_pack_requirements.Q, repeat each B : conditional_pack_requirements.Q { public struct GG4 { public struct Nested where repeat (each A).A : C<(each B).A> {} } extension GG4.Nested: Q where repeat each A: Q, repeat each B: Q {} // CHECK-LABEL: public struct GG4 where repeat each A : conditional_pack_requirements.P { // CHECK-LABEL: public struct Nested where repeat each B : conditional_pack_requirements.P, repeat (each A).A : conditional_pack_requirements.C<(each B).A> { // CHECK-LABEL: extension conditional_pack_requirements.GG4.Nested : conditional_pack_requirements.Q where repeat each A : conditional_pack_requirements.Q, repeat each B : conditional_pack_requirements.Q {