44// RUN: %target-swift-frontend %s -parse-as-library -module-name=test -emit-ir | %FileCheck --check-prefix=IR %s
55// RUN: %target-swift-frontend %s -parse-as-library -O -module-name=test -emit-ir | %FileCheck --check-prefix=IR %s
66
7+ // RUN: %target-run-simple-swift(-parse-as-library)
8+ // RUN: %target-run-simple-swift(-parse-as-library -O)
9+
10+ // REQUIRES: executable_test
11+
712public protocol MyProtocol { }
813public protocol MyProtocol2 { }
914
@@ -67,10 +72,8 @@ public let metatype14: any (Hashable & MyProtocol).Type = S.self
6772// SIL: sil_global [let] @$s4test10metatype14SH_AA10MyProtocolpXpvp : $@thick any (Hashable & MyProtocol).Type
6873// SIL-EMPTY:
6974public let metatype15 : Any . Type = Array< Int> . self
70- // SIL: sil_global [let] @$s4test10metatype15ypXpvp : $@thick any Any.Type = {
71- // SIL-NEXT: %0 = metatype $@thick Array<Int>.Type // user: %1
72- // SIL-NEXT: %initval = init_existential_metatype %0, $@thick any Any.Type
73- // SIL-NEXT: }
75+ // SIL: sil_global [let] @$s4test10metatype15ypXpvp : $@thick any Any.Type
76+ // SIL-EMPTY:
7477public let metatype16 : any ( Hashable & Sendable ) . Type = Array< Int> . self
7578// SIL: sil_global [let] @$s4test10metatype16SH_s8SendablepXpvp : $@thick any (Hashable & Sendable).Type
7679// SIL-EMPTY:
@@ -80,11 +83,26 @@ public let metatype17: Any.Type = (Bool.random() ? Array<Int>.self : Array<Bool>
8083public let metatype18 : Any . Type = Mirror . self // resilient
8184// SIL: sil_global [let] @$s4test10metatype18ypXpvp : $@thick any Any.Type
8285// SIL-EMPTY:
86+ public var metatype19 : Any . Type = ( any MyProtocol ) . self
87+ // SIL: sil_global @$s4test10metatype19ypXpvp : $@thick any Any.Type
88+ // SIL-EMPTY:
89+ public var metatype20 : [ Any . Type ] = [ ( any MyProtocol ) . self]
90+ // SIL: sil_global @$s4test10metatype20SayypXpGvp : $Array<any Any.Type>
91+ // SIL-EMPTY:
92+ public var metatype21 : [ Any . Type ] = [ Int . self]
93+ // SIL: sil_global @$s4test10metatype21SayypXpGvp : $Array<any Any.Type>
94+ // SIL-EMPTY:
95+ public var metatype22 : [ Any . Type ] = [ S . self]
96+ // SIL: sil_global @$s4test10metatype22SayypXpGvp : $Array<any Any.Type>
97+ // SIL-EMPTY:
98+
99+ // Only to detect link-time missing symbols
100+ @main
101+ struct Main { static func main( ) { } }
83102
84103// IR: @"$s4test9metatype3ypXpvp" = {{.*}}constant ptr @"$sSiN"
85104// IR: @"$s4test9metatype4ypXpvp" = {{.*}}constant ptr getelementptr inbounds{{.*}} ({{.*}}, ptr @"$s4test1SVMf", {{.*}})
86105// IR: @"$s4test9metatype5AA10MyProtocol_pXpvp" = {{.*}}constant <{ ptr, ptr }> <{ ptr @"$sSiN", ptr @"$sSi4test10MyProtocolAAWP" }>
87106// IR: @"$s4test9metatype6AA10MyProtocol_pXpvp" = {{.*}}constant <{ ptr, ptr }> <{ ptr getelementptr inbounds{{.*}} ({{.*}}, ptr @"$s4test1SVMf", {{.*}}), ptr @"$s4test1SVAA10MyProtocolAAWP" }>
88107// IR: @"$s4test9metatype7AA10MyProtocol_AA0C9Protocol2pXpvp" = {{.*}}constant <{ ptr, ptr, ptr }> <{ ptr @"$sSiN", ptr @"$sSi4test10MyProtocolAAWP", ptr @"$sSi4test11MyProtocol2AAWP" }>
89108// IR: @"$s4test9metatype8AA10MyProtocol_AA0C9Protocol2pXpvp" = {{.*}}constant <{ ptr, ptr, ptr }> <{ ptr getelementptr inbounds{{.*}} ({{.*}}, ptr @"$s4test1SVMf", {{.*}}), ptr @"$s4test1SVAA10MyProtocolAAWP", ptr @"$s4test1SVAA11MyProtocol2AAWP" }>
90- // IR: @"$s4test10metatype15ypXpvp" = {{.*}}constant ptr getelementptr inbounds{{.*}} ({{.*}}, ptr @"$sSaySiGMf", {{.*}})
0 commit comments