diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index 6b8ec4279bb30..6c0646ce78943 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -10607,6 +10607,9 @@ AccessorDecl *AccessorDecl::createParsed( // The cloned parameter is implicit. param->setImplicit(); + if (subscriptParam->isSending()) + param->setSending(); + newParams.push_back(param); } } diff --git a/test/Concurrency/sending_witness_subscript.swift b/test/Concurrency/sending_witness_subscript.swift new file mode 100644 index 0000000000000..b9d55791fe3a2 --- /dev/null +++ b/test/Concurrency/sending_witness_subscript.swift @@ -0,0 +1,11 @@ +// RUN: %target-swift-frontend -emit-sil -swift-version 6 %s -o /dev/null -verify + +class NonSendableKlass {} + +protocol P { + subscript(_: sending NonSendableKlass) -> sending NonSendableKlass { get } +} + +struct S: P { + subscript(_: sending NonSendableKlass) -> sending NonSendableKlass { NonSendableKlass() } +}