// RUN: %target-swift-frontend -emit-ir %s -g -target %target-swift-5.9-abi-triple
// Note: The goal of this test is to exercise the mangling/demangling via
// the -g flag.
public protocol P {
associatedtype A
associatedtype B
}
public protocol P1 {
associatedtype A
}
public protocol Q {
associatedtype C
}
public protocol R {}
public class C {}
public func foo(_ a: any P & R) {}
public func foo(_ a: any P & Q) {}
public func foo(_ a: any P & Q & R) {}
public func foo(_ a: any P & Q & R & C) {}
public func foo(_ a: any P & Q & R & AnyObject) {}
public func foo(_ a: any (P & R).Type) {}
public func foo(_ a: any (P & Q).Type) {}
public func foo(_ a: any (P & Q & R).Type) {}
public func foo(_ a: any (P & Q & R & C).Type) {}
public func foo(_ a: any (P & Q & R & AnyObject).Type) {}
public func foo(_ a: (any P & R).Type) {}
public func foo(_ a: (any P & Q).Type) {}
public func foo(_ a: (any P & Q & R).Type) {}
public func foo(_ a: (any P & Q & R & C).Type) {}
public func foo(_ a: (any P & Q & R & AnyObject).Type) {}
public func foo(_ a: (any P & P1).Type) {}
public func foo(_ a: (any P & P1).Type) {}
public func foo(_ a: (any P & P1 & R).Type) {}
public func foo(_ a: (any P & P1 & R & C).Type) {}
public func foo(_ a: (any P & P1 & R & AnyObject).Type) {}
public func foo(_ a: (any P & P1).Type) {}
public func foo(_ a: (any P & P1 & R).Type) {}
public func foo(_ a: (any P & P1 & R & C).Type) {}
public func foo(_ a: (any P & P1 & R & AnyObject).Type) {}
public protocol Q2: Q {}
public protocol Q3: Q {
associatedtype C
}
public func foo(_ a: (any Q2 & R).Type) {}
public func foo(_ a: (any Q3 & R).Type) {}
public func foo(_ a: (any Q2 & Q3).Type) {}
public func foo(_ a: (any Q2 & Q3).Type) {}
public func foo2(_ a: (any Q2 & Q3).Type) {}
public func foo3(_ a: (any Q2 & Q3).Type) {}
public struct Foo {
public var a1: (repeat any P & R)
}