|
1 |
| -// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-availability-checking -enable-upcoming-feature DynamicActorIsolation -emit-silgen %s | %FileCheck %s |
| 1 | +// RUN: %empty-directory(%t/src) |
| 2 | +// RUN: split-file %s %t/src |
| 3 | + |
| 4 | +// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-availability-checking -enable-upcoming-feature DynamicActorIsolation -emit-silgen -module-name preconcurrency_conformances %t/src/checks.swift | %FileCheck %t/src/checks.swift |
| 5 | +// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-availability-checking -swift-version 6 -disable-dynamic-actor-isolation -emit-silgen -module-name preconcurrency_conformances %t/src/checks_disabled.swift | %FileCheck %t/src/checks_disabled.swift |
2 | 6 |
|
3 | 7 | // REQUIRES: asserts
|
4 | 8 | // REQUIRES: concurrency
|
5 | 9 | // REQUIRES: objc_interop
|
6 | 10 |
|
| 11 | +//--- checks.swift |
7 | 12 | import Foundation
|
8 | 13 |
|
9 | 14 | actor MyActor {
|
@@ -130,3 +135,77 @@ class Sub : Super {
|
130 | 135 | // CHECK-NEXT: [[EXEC:%.*]] = extract_executor [[MAIN_ACTOR]] : $MainActor
|
131 | 136 | // CHECK: [[PRECONDITION:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> ()
|
132 | 137 | // CHECK-NEXT: {{.*}} = apply [[PRECONDITION]]({{.*}}, [[EXEC]]) : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> ()
|
| 138 | + |
| 139 | +//--- checks_disabled.swift |
| 140 | +import Foundation |
| 141 | + |
| 142 | +actor MyActor { |
| 143 | +} |
| 144 | + |
| 145 | +@globalActor |
| 146 | +struct GlobalActor { |
| 147 | + static let shared: MyActor = MyActor() |
| 148 | +} |
| 149 | + |
| 150 | +@objc protocol P { |
| 151 | + var data: String? { get set } |
| 152 | + |
| 153 | + init() |
| 154 | + func test() -> String? |
| 155 | +} |
| 156 | + |
| 157 | +@MainActor |
| 158 | +final class K : @preconcurrency P { |
| 159 | + var data: String? { |
| 160 | + get { nil } |
| 161 | + set {} |
| 162 | + } |
| 163 | + |
| 164 | + init() {} |
| 165 | + @GlobalActor func test() -> String? { nil } |
| 166 | +} |
| 167 | + |
| 168 | +// @objc K.data.getter |
| 169 | +// CHECK-LABEL: sil private [thunk] [ossa] @$s27preconcurrency_conformances1KC4dataSSSgvgTo : $@convention(objc_method) (K) -> @autoreleased Optional<NSString> |
| 170 | +// CHECK-NOT: [[PRECONDITION:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> () |
| 171 | + |
| 172 | +// @objc K.data.setter |
| 173 | +// CHECK-LABEL: sil private [thunk] [ossa] @$s27preconcurrency_conformances1KC4dataSSSgvsTo : $@convention(objc_method) (Optional<NSString>, K) -> () |
| 174 | +// CHECK-NOT: [[PRECONDITION:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> () |
| 175 | + |
| 176 | +// @objc K.init() |
| 177 | +// CHECK-LABEL: sil private [thunk] [ossa] @$s27preconcurrency_conformances1KCACycfcTo : $@convention(objc_method) (@owned K) -> @owned K |
| 178 | +// CHECK-NOT: [[PRECONDITION:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> () |
| 179 | + |
| 180 | +// @objc K.test() |
| 181 | +// CHECK-LABEL: sil private [thunk] [ossa] @$s27preconcurrency_conformances1KC4testSSSgyFTo : $@convention(objc_method) (K) -> @autoreleased Optional<NSString> |
| 182 | +// CHECK-NOT: [[PRECONDITION:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> () |
| 183 | + |
| 184 | +@MainActor |
| 185 | +class TestObjCMethod { |
| 186 | + @objc func testImplicit() -> Int { 42 } |
| 187 | + |
| 188 | + @GlobalActor |
| 189 | + @objc func testExplicit() {} |
| 190 | +} |
| 191 | + |
| 192 | +// CHECK-LABEL: sil private [thunk] [ossa] @$s27preconcurrency_conformances14TestObjCMethodC12testImplicitSiyFTo : $@convention(objc_method) (TestObjCMethod) -> Int |
| 193 | +// CHECK-NOT: [[PRECONDITION:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> () |
| 194 | + |
| 195 | +// CHECK-LABEL: sil private [thunk] [ossa] @$s27preconcurrency_conformances14TestObjCMethodC12testExplicityyFTo : $@convention(objc_method) (TestObjCMethod) -> () |
| 196 | +// CHECK-NOT: [[PRECONDITION:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> () |
| 197 | + |
| 198 | +@objcMembers |
| 199 | +class Super { |
| 200 | + @MainActor func test() {} |
| 201 | +} |
| 202 | + |
| 203 | +class Sub : Super { |
| 204 | + override func test() {} |
| 205 | +} |
| 206 | + |
| 207 | +// CHECK-LABEL: sil private [thunk] [ossa] @$s27preconcurrency_conformances5SuperC4testyyFTo : $@convention(objc_method) (Super) -> () |
| 208 | +// CHECK-NOT: [[PRECONDITION:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> () |
| 209 | + |
| 210 | +// CHECK-LABEL: sil private [thunk] [ossa] @$s27preconcurrency_conformances3SubC4testyyFTo : $@convention(objc_method) (Sub) -> () |
| 211 | +// CHECK-NOT: [[PRECONDITION:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF : $@convention(thin) (Builtin.RawPointer, Builtin.Word, Builtin.Int1, Builtin.Word, Builtin.Executor) -> () |
0 commit comments