[embedded] Support withoutActuallyEscaping in Embedded Swift

This commit is contained in:
Kuba Mracek
2025-01-25 15:24:20 -08:00
parent 5770d59e4d
commit 8e3ee38324
2 changed files with 50 additions and 1 deletions

View File

@@ -272,11 +272,19 @@ public func swift_dynamicCastClass(object: UnsafeMutableRawPointer, targetMetada
public func swift_dynamicCastClassUnconditional(object: UnsafeMutableRawPointer, targetMetadata: UnsafeRawPointer,
file: UnsafePointer<CChar>, line: CUnsignedInt, column: CUnsignedInt) -> UnsafeMutableRawPointer {
guard let result = swift_dynamicCastClass(object: object, targetMetadata: targetMetadata) else {
Builtin.int_trap()
fatalError("failed cast")
}
return result
}
@_cdecl("swift_isEscapingClosureAtFileLocation")
public func swift_isEscapingClosureAtFileLocation(object: Builtin.RawPointer, filename: UnsafePointer<CChar>, filenameLength: Int32, line: Int32, column: Int32, verificationType: CUnsignedInt) -> Bool {
guard swift_isUniquelyReferenced_native(object: object) else {
fatalError("non-escaping closure escaped")
}
return false
}
@_cdecl("swift_isUniquelyReferenced_native")
public func swift_isUniquelyReferenced_native(object: Builtin.RawPointer) -> Bool {
if !isValidPointerForNativeRetain(object: object) { return false }