From c73dff826ef1014906c802cde860d0b167984425 Mon Sep 17 00:00:00 2001 From: Alexsander Borges Damaceno Date: Thu, 11 Dec 2025 23:46:04 -0300 Subject: [PATCH] Isolated keyword should not be permitted in inheritance clause --- lib/Sema/TypeCheckType.cpp | 6 +++--- test/Concurrency/isolated_parameters.swift | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/Sema/TypeCheckType.cpp b/lib/Sema/TypeCheckType.cpp index a0a7b53286d12..900b79ef7d237 100644 --- a/lib/Sema/TypeCheckType.cpp +++ b/lib/Sema/TypeCheckType.cpp @@ -5391,10 +5391,10 @@ TypeResolver::resolveOwnershipTypeRepr(OwnershipTypeRepr *repr, NeverNullType TypeResolver::resolveIsolatedTypeRepr(IsolatedTypeRepr *repr, TypeResolutionOptions options) { - // isolated is only value for non-EnumCaseDecl parameters. + // isolated is only valid for non-EnumCaseDecl parameters. if ((!options.is(TypeResolverContext::FunctionInput) || - options.hasBase(TypeResolverContext::EnumElementDecl)) && - !options.is(TypeResolverContext::Inherited)) { + (options.hasBase(TypeResolverContext::EnumElementDecl) && + !options.is(TypeResolverContext::Inherited)) || options.is(TypeResolverContext::Inherited))) { diagnoseInvalid( repr, repr->getSpecifierLoc(), diag::attr_only_on_parameters, "isolated"); diff --git a/test/Concurrency/isolated_parameters.swift b/test/Concurrency/isolated_parameters.swift index 531c91e69944d..31e99fb79d42c 100644 --- a/test/Concurrency/isolated_parameters.swift +++ b/test/Concurrency/isolated_parameters.swift @@ -343,3 +343,8 @@ struct WritableActorKeyPath: Sendable { nonmutating set { setter(root, newValue) } } } + +protocol P {} +struct S: isolated P {} // expected-error {{'isolated' may only be used on parameters}} + +