Skip to content

Commit 0046c75

Browse files
committed
Isolated deinit is 6.1 available but experimental
1 parent 87191a2 commit 0046c75

File tree

4 files changed

+13
-1
lines changed

4 files changed

+13
-1
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5960,6 +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))
59635966
ERROR(isolated_deinit_experimental,none,
59645967
"'isolated' deinit requires frontend flag -enable-experimental-feature IsolatedDeinit "
59655968
"to enable the usage of this language feature", ())

include/swift/AST/FeatureAvailability.def

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

7777
FEATURE(LayoutStringValueWitnesses, (6, 1))
7878
FEATURE(CreateTaskWithConsumedFunction, (6, 1))
79+
FEATURE(IsolatedDeinit, (6, 1))
7980

8081
FEATURE(TaskExecutor, FUTURE)
8182
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-
EXPERIMENTAL_FEATURE(IsolatedDeinit, true)
413+
SUPPRESSIBLE_EXPERIMENTAL_FEATURE(IsolatedDeinit, false)
414414

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

lib/Sema/TypeCheckAttr.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,14 @@ class AttributeChecker : public AttributeVisitor<AttributeChecker> {
127127
return;
128128
}
129129
}
130+
131+
TypeChecker::checkAvailability(
132+
attr->getRange(), C.getIsolatedDeinitAvailability(),
133+
D->getDeclContext(),
134+
[&](StringRef platformName, llvm::VersionTuple version) {
135+
return diagnoseAndRemoveAttr(
136+
attr, diag::isolated_deinit_unavailable, platformName, version);
137+
});
130138
}
131139
}
132140

0 commit comments

Comments
 (0)