|
1 | 1 | // 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 |
2 | 3 |
|
3 | 4 | // REQUIRES: CPU=x86_64
|
4 | 5 |
|
@@ -117,3 +118,62 @@ protocol Comprehensive {
|
117 | 118 | // CHECK-SAME: %swift.protocol_requirement { i32 4, i32 0 },
|
118 | 119 | // CHECK-SAME: %swift.protocol_requirement { i32 6, i32 0 }
|
119 | 120 |
|
| 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