diff --git a/lib/Sema/TypeCheckConcurrency.cpp b/lib/Sema/TypeCheckConcurrency.cpp index 8768f982ed6c0..851daae03d3d3 100644 --- a/lib/Sema/TypeCheckConcurrency.cpp +++ b/lib/Sema/TypeCheckConcurrency.cpp @@ -6051,10 +6051,9 @@ computeDefaultInferredActorIsolation(ValueDecl *value) { sendableConformanceRequiresNonisolated(nominalTypeDecl)) return { }; - // FIXME: deinit should be implicitly MainActor too. if (isa(value) || isa(value) || - isa(value) || isa(value) || - isa(value)) { + isa(value) || + isa(value)) { // Preconcurrency here is used to stage the diagnostics // when users select `@MainActor` default isolation with // non-strict concurrency modes (pre Swift 6). diff --git a/test/Concurrency/assume_mainactor.swift b/test/Concurrency/assume_mainactor.swift index 5ac53cb6bc911..3255a5ba48a8f 100644 --- a/test/Concurrency/assume_mainactor.swift +++ b/test/Concurrency/assume_mainactor.swift @@ -8,13 +8,14 @@ class Klass { // Implicit deinit // CHECK: // Klass.deinit - // CHECK-NEXT: // Isolation: unspecified + // CHECK-NEXT: // Isolation: global_actor. type: MainActor // CHECK-NEXT: sil hidden [ossa] @$s16assume_mainactor5KlassCfd : $@convention(method) (@guaranteed Klass) -> @owned Builtin.NativeObject { // Implicit deallocating deinit // CHECK: // Klass.__deallocating_deinit // CHECK-NEXT: // Isolation: nonisolated // CHECK-NEXT: sil hidden [ossa] @$s16assume_mainactor5KlassCfD : $@convention(method) (@owned Klass) -> () { + // CHECK: swift_task_deinitOnExecutor // Implicit allocating init // CHECK: // Klass.__allocating_init() @@ -66,6 +67,16 @@ struct NonIsolatedStructContainingKlass { // CHECK-NEXT: sil hidden [ossa] @$s16assume_mainactor32NonIsolatedStructContainingKlassVACycfC : $@convention(method) (@thin NonIsolatedStructContainingKlass.Type) -> @owned NonIsolatedStructContainingKlass { } +struct NonCopyableStruct: ~Copyable { + var x: Int + var y: Int + + // CHECK: NonCopyableStruct.deinit + // CHECK-NEXT: Isolation: nonisolated + deinit { + } +} + @globalActor actor CustomActor { static nonisolated let shared = CustomActor()