Skip to content

Commit 479819b

Browse files
author
Karl Wagner
committed
Add IRGen test for nested protocol descriptors
1 parent acab0e8 commit 479819b

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

test/IRGen/protocol_metadata.swift

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// RUN: %target-swift-frontend -primary-file %s -emit-ir -disable-objc-attr-requires-foundation-module -enable-objc-interop | %FileCheck %s -DINT=i%target-ptrsize
2+
// RUN: %target-swift-frontend -primary-file %s -emit-ir -disable-objc-attr-requires-foundation-module -enable-objc-interop -enable-experimental-feature NestedProtocols | %FileCheck --check-prefix=NESTED %s -DINT=i%target-ptrsize
23

34
// REQUIRES: CPU=x86_64
45

@@ -117,3 +118,62 @@ protocol Comprehensive {
117118
// CHECK-SAME: %swift.protocol_requirement { i32 4, i32 0 },
118119
// CHECK-SAME: %swift.protocol_requirement { i32 6, i32 0 }
119120

121+
#if $NestedProtocols
122+
struct ParentType {
123+
124+
// NESTED: [[NESTED_NAME:@.*]] = private constant [7 x i8] c"Nested\00"
125+
// NESTED: [[NESTED_RETURNVALUE_NAME:@.*]] = private constant [12 x i8] c"ReturnValue\00"
126+
127+
// NESTED: @"$s17protocol_metadata10ParentTypeV6NestedMp" = hidden constant
128+
// NESTED-SAME: i32 65603,
129+
// NESTED-SAME: @"$s17protocol_metadata10ParentTypeVMn"
130+
// NESTED-SAME: @"$s17protocol_metadata10ParentTypeV6NestedMp", i32 0, i32 1)
131+
// NESTED-SAME: [7 x i8]* [[NESTED_NAME]]
132+
// NESTED-SAME: @"$s17protocol_metadata10ParentTypeV6NestedMp", i32 0, i32 2)
133+
// NESTED-SAME: i32 0,
134+
// NESTED-SAME: i32 2,
135+
// NESTED-SAME: [12 x i8]* [[NESTED_RETURNVALUE_NAME]]
136+
// NESTED-SAME: @"$s17protocol_metadata10ParentTypeV6NestedMp", i32 0, i32 5)
137+
// NESTED-SAME: %swift.protocol_requirement { i32 7, i32 0 },
138+
// NESTED-SAME: %swift.protocol_requirement { i32 17, i32 0 }
139+
protocol Nested {
140+
associatedtype ReturnValue
141+
func doSomething() -> ReturnValue
142+
}
143+
}
144+
145+
extension ParentType {
146+
147+
// NESTED: [[NESTEDVIAEXT_NAME:@.*]] = private constant [19 x i8] c"NestedViaExtension\00"
148+
149+
// NESTED: @"$s17protocol_metadata10ParentTypeV18NestedViaExtensionMp" = hidden constant
150+
// NESTED-SAME: i32 65603,
151+
// NESTED-SAME: @"$s17protocol_metadata10ParentTypeVMn"
152+
// NESTED-SAME: @"$s17protocol_metadata10ParentTypeV18NestedViaExtensionMp", i32 0, i32 1)
153+
// NESTED-SAME: [19 x i8]* [[NESTEDVIAEXT_NAME]]
154+
// NESTED-SAME: @"$s17protocol_metadata10ParentTypeV18NestedViaExtensionMp", i32 0, i32 2)
155+
// NESTED-SAME: i32 0,
156+
// NESTED-SAME: i32 1,
157+
// NESTED-SAME: i32 0,
158+
// NESTED-SAME: %swift.protocol_requirement { i32 17, i32 0 }
159+
protocol NestedViaExtension {
160+
func foo()
161+
}
162+
}
163+
164+
func parentFunc() {
165+
// NESTED: @"$s17protocol_metadata10parentFuncyyF6NestedL_Mp" = internal constant
166+
// NESTED-SAME: i32 65603,
167+
// NESTED-SAME: @"$s17protocol_metadata10parentFuncyyF6NestedL_PMXX"
168+
// NESTED-SAME: @"$s17protocol_metadata10parentFuncyyF6NestedL_Mp", i32 0, i32 1)
169+
// NESTED-SAME: [7 x i8]* [[NESTED_NAME]]
170+
// NESTED-SAME: @"$s17protocol_metadata10parentFuncyyF6NestedL_Mp", i32 0, i32 2)
171+
// NESTED-SAME: i32 0,
172+
// NESTED-SAME: i32 1,
173+
// NESTED-SAME: i32 0,
174+
// NESTED-SAME: %swift.protocol_requirement { i32 17, i32 0 }
175+
protocol Nested {
176+
func foo()
177+
}
178+
}
179+
#endif

0 commit comments

Comments
 (0)