// 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.conditional_pack_requirements::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.conditional_pack_requirements::Nested : conditional_pack_requirements::Q where repeat each A : conditional_pack_requirements::Q, repeat each B : conditional_pack_requirements::Q {