From 5189b6cffc7b5be8ad31dac97fe24695c9ab2fe5 Mon Sep 17 00:00:00 2001 From: Harshit Mukhedkar Date: Fri, 10 Oct 2025 10:27:29 +0530 Subject: [PATCH 1/2] [Sema] Propagate default actor isolation to synthesized default initializers. --- lib/Sema/CodeSynthesis.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/Sema/CodeSynthesis.cpp b/lib/Sema/CodeSynthesis.cpp index cdffea876a224..f94584a2a395a 100644 --- a/lib/Sema/CodeSynthesis.cpp +++ b/lib/Sema/CodeSynthesis.cpp @@ -1703,9 +1703,14 @@ SynthesizeDefaultInitRequest::evaluate(Evaluator &evaluator, ImplicitConstructorKind::DefaultDistributedActor : ImplicitConstructorKind::Default; if (auto ctor = createImplicitConstructor(decl, ctorKind, ctx)) { + if (auto isolation = decl->getDefaultActorIsolation()) { + /// Ensure the synthesized default initializer inherits the class's + /// default actor isolation (e.g., @MainActor) to avoid + /// override-isolation mismatches in subclasses. + ctor->setActorIsolation(isolation); + } // Add the constructor. decl->addMember(ctor); - // Lazily synthesize an empty body for the default constructor. ctor->setBodySynthesizer(synthesizeSingleReturnFunctionBody); return ctor; From 9336d0e535bd3b5af1309e4addadf562314df62f Mon Sep 17 00:00:00 2001 From: Harshit Mukhedkar Date: Fri, 10 Oct 2025 10:30:01 +0530 Subject: [PATCH 2/2] Create default_actor_isolation_initializer.swift --- test/Concurrency/default_actor_isolation_initializer.swift | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 test/Concurrency/default_actor_isolation_initializer.swift diff --git a/test/Concurrency/default_actor_isolation_initializer.swift b/test/Concurrency/default_actor_isolation_initializer.swift new file mode 100644 index 0000000000000..63403face1a6d --- /dev/null +++ b/test/Concurrency/default_actor_isolation_initializer.swift @@ -0,0 +1,7 @@ +// RUN: %target-typecheck-verify-swift -enable-upcoming-feature GlobalActorIsMainActor -enable-upcoming-feature RegionBasedIsolation +// expected-no-diagnostics + +@MainActor +class Thing {} + +class SubThing: Thing {}