From c494124d11f4e7b79f42e7231ce51553d8dcbedc Mon Sep 17 00:00:00 2001 From: Andrew Trick Date: Fri, 12 Sep 2025 21:46:39 -0700 Subject: [PATCH 1/2] Allow Builtin.Take -> ~Escapable --- include/swift/AST/Builtins.def | 1 + lib/AST/Builtins.cpp | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/swift/AST/Builtins.def b/include/swift/AST/Builtins.def index 4352ad2974867..b39972c7be964 100644 --- a/include/swift/AST/Builtins.def +++ b/include/swift/AST/Builtins.def @@ -240,6 +240,7 @@ BUILTIN_SIL_OPERATION(LoadRaw, "loadRaw", Special) BUILTIN_SIL_OPERATION(LoadInvariant, "loadInvariant", Special) /// Take has type (Builtin.RawPointer) -> T +/// where T: ~Copyable & ~Escapable BUILTIN_SIL_OPERATION(Take, "take", Special) /// Destroy has type (T.Type, Builtin.RawPointer) -> () diff --git a/lib/AST/Builtins.cpp b/lib/AST/Builtins.cpp index b2d5dd8af304f..6e335eae267a9 100644 --- a/lib/AST/Builtins.cpp +++ b/lib/AST/Builtins.cpp @@ -931,8 +931,7 @@ static ValueDecl *getLoadOperation(ASTContext &ctx, Identifier id) { static ValueDecl *getTakeOperation(ASTContext &ctx, Identifier id) { return getBuiltinFunction(ctx, id, _thin, - _generics(_unrestricted, - _conformsTo(_typeparam(0), _escapable)), + _generics(_unrestricted), _parameters(_rawPointer), _typeparam(0)); } From df42301b8043872df10812621edf8b864cf30907 Mon Sep 17 00:00:00 2001 From: Andrew Trick Date: Fri, 3 Oct 2025 16:05:13 -0700 Subject: [PATCH 2/2] Allow Builtin.Load -> ~Escapable --- lib/AST/Builtins.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/AST/Builtins.cpp b/lib/AST/Builtins.cpp index 6e335eae267a9..3ed613359e9e5 100644 --- a/lib/AST/Builtins.cpp +++ b/lib/AST/Builtins.cpp @@ -923,8 +923,7 @@ static ValueDecl *getRefCountingOperation(ASTContext &ctx, Identifier id) { static ValueDecl *getLoadOperation(ASTContext &ctx, Identifier id) { return getBuiltinFunction(ctx, id, _thin, _generics(_unrestricted, - _conformsTo(_typeparam(0), _copyable), - _conformsTo(_typeparam(0), _escapable)), + _conformsTo(_typeparam(0), _copyable)), _parameters(_rawPointer), _typeparam(0)); }