Skip to content

Commit 87191a2

Browse files
committed
IsolatedDeinit still experimental on 6.1
1 parent 55b8e80 commit 87191a2

23 files changed

+57
-43
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5960,9 +5960,9 @@ ERROR(isolated_deinit_no_isolation,none,
59605960
ERROR(isolated_deinit_on_value_type,none,
59615961
"only classes and actors can have isolated deinit",
59625962
())
5963-
ERROR(isolated_deinit_unavailable,none,
5964-
"isolated deinit is only available in %0 %1 or newer",
5965-
(StringRef, llvm::VersionTuple))
5963+
ERROR(isolated_deinit_experimental,none,
5964+
"'isolated' deinit requires frontend flag -enable-experimental-feature IsolatedDeinit "
5965+
"to enable the usage of this language feature", ())
59665966

59675967
//------------------------------------------------------------------------------
59685968
// MARK: String Processing

include/swift/AST/FeatureAvailability.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ FEATURE(InitRawStructMetadata, (6, 0))
7676

7777
FEATURE(LayoutStringValueWitnesses, (6, 1))
7878
FEATURE(CreateTaskWithConsumedFunction, (6, 1))
79-
FEATURE(IsolatedDeinit, (6, 1))
8079

8180
FEATURE(TaskExecutor, FUTURE)
8281
FEATURE(Differentiation, FUTURE)

include/swift/Basic/Features.def

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

412412
// Isolated deinit
413-
SUPPRESSIBLE_LANGUAGE_FEATURE(IsolatedDeinit, 371, "isolated deinit")
413+
EXPERIMENTAL_FEATURE(IsolatedDeinit, true)
414414

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

lib/Sema/TypeCheckAttr.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,20 +115,18 @@ class AttributeChecker : public AttributeVisitor<AttributeChecker> {
115115
auto &C = D->getASTContext();
116116

117117
if (isa<DestructorDecl>(D)) {
118+
if (!C.LangOpts.hasFeature(Feature::IsolatedDeinit)) {
119+
diagnoseAndRemoveAttr(attr, diag::isolated_deinit_experimental);
120+
return;
121+
}
122+
118123
if (auto nominal = dyn_cast<NominalTypeDecl>(D->getDeclContext())) {
119124
if (!isa<ClassDecl>(nominal)) {
120125
// only classes and actors can have isolated deinit.
121126
diagnoseAndRemoveAttr(attr, diag::isolated_deinit_on_value_type);
122127
return;
123128
}
124129
}
125-
126-
TypeChecker::checkAvailability(
127-
attr->getRange(), C.getIsolatedDeinitAvailability(),
128-
D->getDeclContext(),
129-
[&](StringRef platformName, llvm::VersionTuple version) {
130-
return diagnoseAndRemoveAttr(attr, diag::isolated_deinit_unavailable, platformName, version);
131-
});
132130
}
133131
}
134132

stdlib/public/Concurrency/Actor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2327,7 +2327,7 @@ class IsolatedDeinitJob : public Job {
23272327

23282328
public:
23292329
IsolatedDeinitJob(JobPriority priority, void *object,
2330-
DeinitWorkFunction *__ptrauth_swift_deinit_work_function work)
2330+
DeinitWorkFunction *work)
23312331
: Job({JobKind::IsolatedDeinit, priority}, &process), Object(object),
23322332
Work(work) {}
23332333

test/Concurrency/Runtime/actor_deinit_escaping_self.swift

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

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

910
import _Concurrency
1011
import Dispatch

test/Concurrency/Runtime/actor_recursive_deinit.swift

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

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

66
// REQUIRES: concurrency_runtime
77
// UNSUPPORTED: back_deployment_runtime
8+
// REQUIRES: swift_feature_IsolatedDeinit
89

910
// Compiler crashes because builtin "ifdef_SWIFT_STDLIB_PRINT_DISABLED"() gets lowered as "i32 0",
1011
// which triggers assertion in LLVM, which expects it to be i1

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-future-triple -parse-stdlib %import-libdispatch %s -o %t/a.out
2+
// RUN: %target-build-swift -enable-experimental-feature IsolatedDeinit -plugin-path %swift-plugin-dir -target %target-future-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-future-triple) | %FileCheck %s
1+
// RUN: %target-run-simple-swift(-enable-experimental-feature IsolatedDeinit -target %target-future-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-future-triple -parse-as-library -emit-silgen -verify %s
2-
// RUN: %target-swift-frontend -target %target-future-triple -parse-as-library -emit-silgen -DSILGEN %s | %FileCheck %s
3-
// RUN: %target-swift-frontend -target %target-future-triple -parse-as-library -emit-silgen -DSILGEN %s | %FileCheck -check-prefix=CHECK-SYMB %s
1+
// RUN: %target-swift-frontend -target %target-future-triple -parse-as-library -enable-experimental-feature IsolatedDeinit -emit-silgen -verify %s
2+
// RUN: %target-swift-frontend -target %target-future-triple -parse-as-library -enable-experimental-feature IsolatedDeinit -emit-silgen -DSILGEN %s | %FileCheck %s
3+
// RUN: %target-swift-frontend -target %target-future-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

0 commit comments

Comments
 (0)