From 7425d334e65d38e595920091aedb2da460855be2 Mon Sep 17 00:00:00 2001 From: Doug Gregor Date: Tue, 15 Jul 2025 17:00:34 -0700 Subject: [PATCH 1/2] [SE-0466] Account for nonisolated functions and extensions, too --- proposals/0466-control-default-actor-isolation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/0466-control-default-actor-isolation.md b/proposals/0466-control-default-actor-isolation.md index 5a1e975d25..7fc65477f2 100644 --- a/proposals/0466-control-default-actor-isolation.md +++ b/proposals/0466-control-default-actor-isolation.md @@ -66,7 +66,7 @@ When the default actor isolation is specified as `MainActor`, declarations are i * All declarations inside an `actor` type, including static variables, methods, initializers, and deinitializers * Declarations that cannot have global actor isolation, including typealiases, import statements, enum cases, and individual accessors * Declarations whose primary definition directly conforms to a protocol that inherits `SendableMetatype` -* Declarations that are types nested within a nonisolated type +* Declarations that are nested within a nonisolated type, function, or extension The following code example shows the inferred actor isolation in comments given the code is built with `-default-isolation MainActor`: From 3a96bced75a72c2985315ad1204e273783753ad2 Mon Sep 17 00:00:00 2001 From: Doug Gregor Date: Tue, 15 Jul 2025 17:55:26 -0700 Subject: [PATCH 2/2] Add more examples --- proposals/0466-control-default-actor-isolation.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/proposals/0466-control-default-actor-isolation.md b/proposals/0466-control-default-actor-isolation.md index 7fc65477f2..5052a9ad56 100644 --- a/proposals/0466-control-default-actor-isolation.md +++ b/proposals/0466-control-default-actor-isolation.md @@ -87,6 +87,21 @@ class C { // @MainActor static var value = 10 + + nonisolated func f() { + // nonisolated + struct Nested { + // ... + } + } +} + +nonisolated extension C { + // nonisolated + func g() { } + + // nonisolated + struct NestedInExtension { } } @globalActor