mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #76250 from ktoso/wip-experimental-isolated-deinit
This commit is contained in:
@@ -13,7 +13,6 @@
|
||||
// RUN: %target-swift-frontend -compile-module-from-interface -o %t/SmokeTest.swiftmodule %s
|
||||
// RUN: %target-swift-ide-test -print-module -module-to-print SmokeTest -I %t -source-filename x -print-interface > %t/SmokeTest.txt
|
||||
// RUN: %FileCheck %s < %t/SmokeTest.txt
|
||||
// RUN: %FileCheck -check-prefix NEGATIVE %s < %t/SmokeTest.txt
|
||||
// RUN: llvm-bcanalyzer -dump %t/SmokeTest.swiftmodule | grep FILE_DEPENDENCY
|
||||
|
||||
// CHECK-LABEL: public class TestClass
|
||||
@@ -33,7 +32,7 @@ public class TestClass {
|
||||
// CHECK: public static var propWithNoAccessors: Int{{$}}
|
||||
public static var propWithNoAccessors: Int
|
||||
|
||||
// NEGATIVE-NOT: deinit
|
||||
// CHECK: deinit
|
||||
deinit
|
||||
} // CHECK: {{^}$}}
|
||||
|
||||
|
||||
152
test/ModuleInterface/isolated-deinit-compatibility.swift
Normal file
152
test/ModuleInterface/isolated-deinit-compatibility.swift
Normal file
@@ -0,0 +1,152 @@
|
||||
// RUN: %target-swift-frontend -enable-experimental-feature IsolatedDeinit -disable-availability-checking -emit-silgen -verify %s
|
||||
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) -DEMIT_IFACE %s -enable-experimental-feature IsolatedDeinit -disable-availability-checking -module-name IsolatedDeinitCompatibility
|
||||
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -enable-experimental-feature IsolatedDeinit -disable-availability-checking -module-name IsolatedDeinitCompatibility
|
||||
// RUN: %FileCheck %s --dump-input=always < %t.swiftinterface
|
||||
|
||||
// MARK: Sync deinit in class
|
||||
|
||||
// CHECK-NOT: #
|
||||
// CHECK: open class SyncClassDefaultOpen {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}deinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: }
|
||||
open class SyncClassDefaultOpen {
|
||||
deinit {}
|
||||
}
|
||||
|
||||
// CHECK-NOT: #
|
||||
// CHECK: public class SyncClassDefaultPublic {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}deinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: }
|
||||
public class SyncClassDefaultPublic {
|
||||
deinit {}
|
||||
}
|
||||
|
||||
// CHECK: #if {{.*}}$IsolatedDeinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: open class SyncClassGlobalActorOpen {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}@_Concurrency.MainActor deinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: }
|
||||
// CHECK: #endif
|
||||
open class SyncClassGlobalActorOpen {
|
||||
@MainActor deinit {}
|
||||
}
|
||||
|
||||
// CHECK-NOT: #
|
||||
// CHECK: public class SyncClassGlobalActorPublic {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: #if {{.*}}$IsolatedDeinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}@_Concurrency.MainActor deinit
|
||||
// CHECK: }
|
||||
public class SyncClassGlobalActorPublic {
|
||||
@MainActor deinit {}
|
||||
}
|
||||
|
||||
// CHECK: #if {{.*}}$IsolatedDeinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: @_Concurrency.MainActor open class SyncClassIsolatedOpen {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}isolated deinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: }
|
||||
// CHECK: #endif
|
||||
@MainActor
|
||||
open class SyncClassIsolatedOpen {
|
||||
isolated deinit {}
|
||||
}
|
||||
|
||||
// CHECK-NOT: #
|
||||
// CHECK: @_Concurrency.MainActor public class SyncClassIsolatedPublic {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: #if {{.*}}$IsolatedDeinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}isolated deinit
|
||||
// CHECK: }
|
||||
@MainActor
|
||||
public class SyncClassIsolatedPublic {
|
||||
isolated deinit {}
|
||||
}
|
||||
|
||||
// CHECK: #if {{.*}}$IsolatedDeinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: @_Concurrency.MainActor open class SyncClassNonisolatedOpen {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}nonisolated deinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: }
|
||||
// CHECK: #endif
|
||||
@MainActor
|
||||
open class SyncClassNonisolatedOpen {
|
||||
nonisolated deinit {}
|
||||
}
|
||||
|
||||
// CHECK-NOT: #
|
||||
// CHECK: @_Concurrency.MainActor public class SyncClassNonisolatedPublic {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: #if {{.*}}$IsolatedDeinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}nonisolated deinit
|
||||
// CHECK: }
|
||||
@MainActor
|
||||
public class SyncClassNonisolatedPublic {
|
||||
nonisolated deinit {}
|
||||
}
|
||||
|
||||
// MARK: Sync deinit in actor
|
||||
|
||||
// CHECK-NOT: #
|
||||
// CHECK: public actor SyncActorDefaultPublic {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}deinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: }
|
||||
public actor SyncActorDefaultPublic {
|
||||
deinit {}
|
||||
}
|
||||
|
||||
// CHECK-NOT: #
|
||||
// CHECK: public actor SyncActorGlobalActorPublic {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: #if {{.*}}$IsolatedDeinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}@_Concurrency.MainActor deinit
|
||||
// CHECK: }
|
||||
public actor SyncActorGlobalActorPublic {
|
||||
@MainActor deinit {}
|
||||
}
|
||||
|
||||
// CHECK-NOT: #
|
||||
// CHECK: public actor SyncActorIsolatedPublic {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: #if {{.*}}$IsolatedDeinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}isolated deinit
|
||||
// CHECK: }
|
||||
public actor SyncActorIsolatedPublic {
|
||||
isolated deinit {}
|
||||
}
|
||||
|
||||
// CHECK-NOT: #
|
||||
// CHECK: public actor SyncActorNonisolatedPublic {
|
||||
// CHECK-NOT: #
|
||||
// CHECK: #if {{.*}}$IsolatedDeinit
|
||||
// CHECK-NOT: #
|
||||
// CHECK: {{(@objc )?}}nonisolated deinit
|
||||
// CHECK: }
|
||||
public actor SyncActorNonisolatedPublic {
|
||||
nonisolated deinit {}
|
||||
}
|
||||
|
||||
// MARK: - Open actor
|
||||
|
||||
// Check that open actors are not allowed
|
||||
// If they become allowed in the future, extra test cases need to be added to this test
|
||||
#if !EMIT_IFACE
|
||||
open actor OpenActor {} // expected-error {{only classes and overridable class members can be declared 'open'; use 'public'}}
|
||||
#endif
|
||||
Reference in New Issue
Block a user