Skip to content

Commit 11781a5

Browse files
authored
Merge pull request #77438 from swiftlang/revert-77364-mpokhylets/non-experimental-isolated-deinit
2 parents 2ee2f1e + b5964a0 commit 11781a5

21 files changed

+58
-30
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5959,6 +5959,9 @@ ERROR(isolated_deinit_no_isolation,none,
59595959
ERROR(isolated_deinit_on_value_type,none,
59605960
"only classes and actors can have isolated deinit",
59615961
())
5962+
ERROR(isolated_deinit_experimental,none,
5963+
"'isolated' deinit requires frontend flag -enable-experimental-feature IsolatedDeinit "
5964+
"to enable the usage of this language feature", ())
59625965

59635966
//------------------------------------------------------------------------------
59645967
// MARK: String Processing

include/swift/Basic/Features.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ EXPERIMENTAL_FEATURE(SafeInterop, true)
409409
EXPERIMENTAL_FEATURE(AssumeResilientCxxTypes, true)
410410

411411
// Isolated deinit
412-
SUPPRESSIBLE_LANGUAGE_FEATURE(IsolatedDeinit, 371, "isolated deinit")
412+
SUPPRESSIBLE_EXPERIMENTAL_FEATURE(IsolatedDeinit, true)
413413

414414
// Enable values in generic signatures, e.g. <let N: Int>
415415
EXPERIMENTAL_FEATURE(ValueGenerics, true)

lib/Sema/TypeCheckAttr.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,14 @@ class AttributeChecker : public AttributeVisitor<AttributeChecker> {
112112
}
113113

114114
void diagnoseIsolatedDeinitInValueTypes(DeclAttribute *attr) {
115+
auto &C = D->getASTContext();
116+
115117
if (isa<DestructorDecl>(D)) {
118+
if (!C.LangOpts.hasFeature(Feature::IsolatedDeinit)) {
119+
diagnoseAndRemoveAttr(attr, diag::isolated_deinit_experimental);
120+
return;
121+
}
122+
116123
if (auto nominal = dyn_cast<NominalTypeDecl>(D->getDeclContext())) {
117124
if (!isa<ClassDecl>(nominal)) {
118125
// only classes and actors can have isolated deinit.

test/Concurrency/Runtime/actor_deinit_escaping_self.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
// RUN: %target-run-simple-swift( -target %target-swift-5.1-abi-triple %import-libdispatch -parse-as-library)
1+
// RUN: %target-run-simple-swift( -enable-experimental-feature IsolatedDeinit -target %target-swift-5.1-abi-triple %import-libdispatch -parse-as-library)
22

33
// REQUIRES: executable_test
44
// REQUIRES: libdispatch
55
// REQUIRES: concurrency
66
// REQUIRES: concurrency_runtime
7+
// REQUIRES: swift_feature_IsolatedDeinit
78
// UNSUPPORTED: back_deployment_runtime
89

910
import _Concurrency

test/Concurrency/Runtime/actor_recursive_deinit.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
// RUN: %target-run-simple-swift(-target %target-swift-5.1-abi-triple -parse-stdlib -parse-as-library) | %FileCheck %s
1+
// RUN: %target-run-simple-swift(-enable-experimental-feature IsolatedDeinit -target %target-swift-5.1-abi-triple -parse-stdlib -parse-as-library) | %FileCheck %s
22

33
// REQUIRES: executable_test
44
// REQUIRES: concurrency
55

66
// REQUIRES: concurrency_runtime
7+
// REQUIRES: swift_feature_IsolatedDeinit
78
// UNSUPPORTED: back_deployment_runtime
89

910
// Compiler crashes because builtin "ifdef_SWIFT_STDLIB_PRINT_DISABLED"() gets lowered as "i32 0",

test/Concurrency/Runtime/async_task_locals_isolated_deinit.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// RUN: %empty-directory(%t)
2-
// RUN: %target-build-swift -plugin-path %swift-plugin-dir -target %target-swift-5.1-abi-triple -parse-stdlib %import-libdispatch %s -o %t/a.out
2+
// RUN: %target-build-swift -enable-experimental-feature IsolatedDeinit -plugin-path %swift-plugin-dir -enable-experimental-feature IsolatedDeinit -target %target-swift-5.1-abi-triple -parse-stdlib %import-libdispatch %s -o %t/a.out
33
// RUN: %target-codesign %t/a.out
44
// RUN: %env-SWIFT_IS_CURRENT_EXECUTOR_LEGACY_MODE_OVERRIDE=swift6 %target-run %t/a.out
55

@@ -8,6 +8,7 @@
88
// REQUIRES: concurrency
99
// REQUIRES: concurrency_runtime
1010
// UNSUPPORTED: back_deployment_runtime
11+
// REQUIRES: swift_feature_IsolatedDeinit
1112

1213
import Swift
1314
import _Concurrency

test/Concurrency/Runtime/isolated_deinit_main_sync.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
// RUN: %target-run-simple-swift(-target %target-swift-5.1-abi-triple) | %FileCheck %s
1+
// RUN: %target-run-simple-swift(-enable-experimental-feature IsolatedDeinit -target %target-swift-5.1-abi-triple) | %FileCheck %s
22

33
// REQUIRES: executable_test
44
// REQUIRES: concurrency
55
// REQUIRES: concurrency_runtime
6+
// REQUIRES: swift_feature_IsolatedDeinit
67

78
var isDead: Bool = false
89

test/Concurrency/deinit_isolation.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
// RUN: %target-swift-frontend -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -verify %s
2-
// RUN: %target-swift-frontend -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -DSILGEN %s | %FileCheck %s
3-
// RUN: %target-swift-frontend -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -DSILGEN %s | %FileCheck -check-prefix=CHECK-SYMB %s
1+
// RUN: %target-swift-frontend -target %target-swift-5.1-abi-triple -parse-as-library -enable-experimental-feature IsolatedDeinit -emit-silgen -verify %s
2+
// RUN: %target-swift-frontend -target %target-swift-5.1-abi-triple -parse-as-library -enable-experimental-feature IsolatedDeinit -emit-silgen -DSILGEN %s | %FileCheck %s
3+
// RUN: %target-swift-frontend -target %target-swift-5.1-abi-triple -parse-as-library -enable-experimental-feature IsolatedDeinit -emit-silgen -DSILGEN %s | %FileCheck -check-prefix=CHECK-SYMB %s
44

55
// REQUIRES: concurrency
6+
// REQUIRES: swift_feature_IsolatedDeinit
67

78
// Fixtures
89

test/Concurrency/deinit_isolation_import/test.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,20 @@
33
// RUN: cp -R $INPUT_DIR/Alpha.framework %t/Frameworks/
44
// RUN: %empty-directory(%t/Frameworks/Alpha.framework/Modules/Alpha.swiftmodule)
55
// RUN: %empty-directory(%t/Frameworks/Alpha.framework/Headers/)
6-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-implicit-string-processing-module-import -parse-as-library -module-name Alpha \
6+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-feature IsolatedDeinit -disable-implicit-string-processing-module-import -parse-as-library -module-name Alpha \
77
// RUN: -emit-module -o %t/Frameworks/Alpha.framework/Modules/Alpha.swiftmodule/%module-target-triple.swiftmodule \
88
// RUN: -enable-objc-interop -disable-objc-attr-requires-foundation-module \
99
// RUN: -emit-objc-header -emit-objc-header-path %t/Frameworks/Alpha.framework/Headers/Alpha-Swift.h $INPUT_DIR/Alpha.swift
1010
// RUN: cp -R $INPUT_DIR/Beta.framework %t/Frameworks/
1111
// RUN: %empty-directory(%t/Frameworks/Beta.framework/Headers/)
1212
// RUN: cp $INPUT_DIR/Beta.h %t/Frameworks/Beta.framework/Headers/Beta.h
13-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-implicit-string-processing-module-import -disable-availability-checking -typecheck -verify %s -F %t/Frameworks -F %clang-importer-sdk-path/frameworks
14-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-implicit-string-processing-module-import -disable-availability-checking -parse-as-library -emit-silgen -DSILGEN %s -F %t/Frameworks -F %clang-importer-sdk-path/frameworks | %FileCheck %s
15-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-implicit-string-processing-module-import -disable-availability-checking -parse-as-library -emit-silgen -DSILGEN %s -F %t/Frameworks -F %clang-importer-sdk-path/frameworks | %FileCheck -check-prefix=CHECK-SYMB %s
13+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-feature IsolatedDeinit -disable-implicit-string-processing-module-import -disable-availability-checking -typecheck -verify %s -F %t/Frameworks -F %clang-importer-sdk-path/frameworks
14+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-feature IsolatedDeinit -disable-implicit-string-processing-module-import -disable-availability-checking -parse-as-library -emit-silgen -DSILGEN %s -F %t/Frameworks -F %clang-importer-sdk-path/frameworks | %FileCheck %s
15+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-feature IsolatedDeinit -disable-implicit-string-processing-module-import -disable-availability-checking -parse-as-library -emit-silgen -DSILGEN %s -F %t/Frameworks -F %clang-importer-sdk-path/frameworks | %FileCheck -check-prefix=CHECK-SYMB %s
1616

1717
// REQUIRES: concurrency
1818
// REQUIRES: objc_interop
19+
// REQUIRES: swift_feature_IsolatedDeinit
1920

2021
// Note: intentionally importing Alpha implicitly
2122
import Beta

test/Concurrency/deinit_isolation_in_value_types.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
// RUN: %target-swift-frontend -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -verify %s
1+
// RUN: %target-swift-frontend -target %target-swift-5.1-abi-triple -enable-experimental-feature IsolatedDeinit -parse-as-library -emit-silgen -verify %s
22

3+
// REQUIRES: swift_feature_IsolatedDeinit
34

45
@globalActor final actor FirstActor {
56
static let shared = FirstActor()

test/Concurrency/deinit_isolation_objc.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-implicit-string-processing-module-import -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -verify %s
2-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-implicit-string-processing-module-import -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -DSILGEN %s | %FileCheck %s
3-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-implicit-string-processing-module-import -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -DSILGEN %s | %FileCheck -check-prefix=CHECK-SYMB %s
1+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-feature IsolatedDeinit -disable-implicit-string-processing-module-import -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -verify %s
2+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-feature IsolatedDeinit -disable-implicit-string-processing-module-import -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -DSILGEN %s | %FileCheck %s
3+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-feature IsolatedDeinit -disable-implicit-string-processing-module-import -target %target-swift-5.1-abi-triple -parse-as-library -emit-silgen -DSILGEN %s | %FileCheck -check-prefix=CHECK-SYMB %s
44

55
// REQUIRES: concurrency
66
// REQUIRES: objc_interop
7+
// REQUIRES: swift_feature_IsolatedDeinit
78

89
import Foundation
910

test/Concurrency/deinit_isolation_tbd.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-ir %s | %FileCheck %s
1+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-feature IsolatedDeinit -emit-ir %s | %FileCheck %s
22

3+
// REQUIRES: swift_feature_IsolatedDeinit
34

45
public class Foo {
56
@MainActor

test/Concurrency/flow_isolation.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
// RUN: %target-swift-frontend -strict-concurrency=complete -swift-version 5 -parse-as-library -emit-sil -verify %s
2-
// RUN: %target-swift-frontend -strict-concurrency=complete -swift-version 5 -parse-as-library -emit-sil -verify %s -enable-upcoming-feature RegionBasedIsolation
1+
// RUN: %target-swift-frontend -enable-experimental-feature IsolatedDeinit -strict-concurrency=complete -swift-version 5 -parse-as-library -emit-sil -verify %s
2+
// RUN: %target-swift-frontend -enable-experimental-feature IsolatedDeinit -strict-concurrency=complete -swift-version 5 -parse-as-library -emit-sil -verify %s -enable-upcoming-feature RegionBasedIsolation
33

44
// REQUIRES: swift_feature_RegionBasedIsolation
5+
// REQUIRES: swift_feature_IsolatedDeinit
56

67
func randomBool() -> Bool { return false }
78
func logTransaction(_ i: Int) {}

test/Concurrency/voucher_propagation.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// RUN: %empty-directory(%t)
2-
// RUN: %target-build-swift %s -target %target-swift-5.1-abi-triple -o %t/voucher_propagation
2+
// RUN: %target-build-swift %s -target %target-swift-5.1-abi-triple -enable-experimental-feature IsolatedDeinit -o %t/voucher_propagation
33
// RUN: %target-codesign %t/voucher_propagation
44
// RUN: MallocStackLogging=1 %target-run %t/voucher_propagation
55

@@ -13,6 +13,7 @@
1313
// UNSUPPORTED: back_deployment_runtime
1414

1515
// REQUIRES: OS=macosx
16+
// REQUIRES: swift_feature_IsolatedDeinit
1617

1718
import Darwin
1819
import Dispatch // expected-warning {{add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Dispatch'}}

test/Distributed/Runtime/distributed_actor_deinit.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
// RUN: %empty-directory(%t)
2-
// RUN: %target-build-swift -target %target-swift-5.7-abi-triple %import-libdispatch -parse-stdlib -parse-as-library -module-name=main %s -o %t/a.out
2+
// RUN: %target-build-swift -target %target-swift-5.7-abi-triple %import-libdispatch -enable-experimental-feature IsolatedDeinit -parse-stdlib -parse-as-library -module-name=main %s -o %t/a.out
33
// RUN: %target-codesign %t/a.out
44
// RUN: %env-SWIFT_IS_CURRENT_EXECUTOR_LEGACY_MODE_OVERRIDE=legacy %target-run %t/a.out | %FileCheck %s
55

66
// REQUIRES: libdispatch
77
// REQUIRES: executable_test
88
// REQUIRES: concurrency
99
// REQUIRES: distributed
10+
// REQUIRES: swift_feature_IsolatedDeinit
1011

1112
// UNSUPPORTED: use_os_stdlib
1213
// UNSUPPORTED: back_deployment_runtime

test/Distributed/Runtime/distributed_actor_remote_fieldsDontCrashDeinit.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
// RUN: %empty-directory(%t)
2-
// RUN: %target-swift-frontend-emit-module -emit-module-path %t/FakeDistributedActorSystems.swiftmodule -module-name FakeDistributedActorSystems -target %target-swift-5.7-abi-triple %S/../Inputs/FakeDistributedActorSystems.swift
3-
// RUN: %target-build-swift -module-name main -target %target-swift-5.7-abi-triple -j2 -parse-as-library -I %t %s %S/../Inputs/FakeDistributedActorSystems.swift -o %t/a.out
2+
// RUN: %target-swift-frontend-emit-module -enable-experimental-feature IsolatedDeinit -emit-module-path %t/FakeDistributedActorSystems.swiftmodule -module-name FakeDistributedActorSystems -target %target-swift-5.7-abi-triple %S/../Inputs/FakeDistributedActorSystems.swift
3+
// RUN: %target-build-swift -module-name main -enable-experimental-feature IsolatedDeinit -target %target-swift-5.7-abi-triple -j2 -parse-as-library -I %t %s %S/../Inputs/FakeDistributedActorSystems.swift -o %t/a.out
44
// RUN: %target-codesign %t/a.out
55
// RUN: %target-run %t/a.out | %FileCheck %s
66

77
// REQUIRES: executable_test
88
// REQUIRES: concurrency
99
// REQUIRES: distributed
10+
// REQUIRES: swift_feature_IsolatedDeinit
1011

1112
// rdar://76038845
1213
// UNSUPPORTED: use_os_stdlib

test/Distributed/Runtime/distributed_actor_remote_retains_system.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
// RUN: %target-run-simple-swift( -target %target-swift-5.7-abi-triple -parse-as-library) | %FileCheck %s
1+
// RUN: %target-run-simple-swift( -enable-experimental-feature IsolatedDeinit -target %target-swift-5.7-abi-triple -parse-as-library) | %FileCheck %s
22

33
// REQUIRES: executable_test
44
// REQUIRES: concurrency
55
// REQUIRES: distributed
6+
// REQUIRES: swift_feature_IsolatedDeinit
67

78
// rdar://76038845
89
// UNSUPPORTED: use_os_stdlib

test/ModuleInterface/isolated-deinit-compatibility.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
// RUN: %target-swift-frontend -target %target-swift-5.5-abi-triple -emit-silgen -verify %s
2-
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) -DEMIT_IFACE %s -target %target-swift-5.5-abi-triple -module-name IsolatedDeinitCompatibility
3-
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -target %target-swift-5.5-abi-triple -module-name IsolatedDeinitCompatibility
1+
// RUN: %target-swift-frontend -enable-experimental-feature IsolatedDeinit -target %target-swift-5.5-abi-triple -emit-silgen -verify %s
2+
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) -DEMIT_IFACE %s -enable-experimental-feature IsolatedDeinit -target %target-swift-5.5-abi-triple -module-name IsolatedDeinitCompatibility
3+
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -enable-experimental-feature IsolatedDeinit -target %target-swift-5.5-abi-triple -module-name IsolatedDeinitCompatibility
44
// RUN: %FileCheck %s < %t.swiftinterface
55

6+
// REQUIRES: swift_feature_IsolatedDeinit
67

78
// MARK: Sync deinit in class
89

test/SILGen/inlinable_attribute.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
// RUN: %target-swift-emit-silgen -module-name inlinable_attribute -emit-verbose-sil -warnings-as-errors -target %target-swift-5.1-abi-triple %s | %FileCheck %s
1+
// RUN: %target-swift-emit-silgen -enable-experimental-feature IsolatedDeinit -module-name inlinable_attribute -emit-verbose-sil -warnings-as-errors -target %target-swift-5.1-abi-triple %s | %FileCheck %s
22

3+
// REQUIRES: swift_feature_IsolatedDeinit
34

45
// CHECK-LABEL: sil [serialized] [ossa] @$s19inlinable_attribute15fragileFunctionyyF : $@convention(thin) () -> ()
56
@inlinable public func fragileFunction() {

test/SILOptimizer/stack_promotion_isolated_deinit.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
// RUN: %target-swift-frontend -parse-as-library -O -module-name=test %s -emit-sil | %FileCheck %s
1+
// RUN: %target-swift-frontend -parse-as-library -O -module-name=test %s -emit-sil -enable-experimental-feature IsolatedDeinit | %FileCheck %s
22
// REQUIRES: swift_in_compiler
3+
// REQUIRES: swift_feature_IsolatedDeinit
34

45
@globalActor actor AnotherActor: GlobalActor {
56
static let shared = AnotherActor()

test/attr/global_actor.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
// RUN: %target-swift-frontend -typecheck -verify %s -disable-availability-checking -package-name myPkg
1+
// RUN: %target-swift-frontend -typecheck -verify %s -disable-availability-checking -package-name myPkg -enable-experimental-feature IsolatedDeinit
22
// REQUIRES: concurrency
3+
// REQUIRES: swift_feature_IsolatedDeinit
34

45
actor SomeActor { }
56

0 commit comments

Comments
 (0)