Just like #76041, but for ~Escapable instead of ~Copyable.

Resolves rdar://145945680.
This commit is contained in:
Jonathan Grynspan
2025-03-03 14:06:30 -05:00
parent a1724891ec
commit 9489564e07
2 changed files with 8 additions and 2 deletions

View File

@@ -98,7 +98,7 @@ func _typeName(_ type: Any.Type, qualified: Bool = true) -> String {
@available(SwiftStdlib 5.3, *)
@_silgen_name("swift_getMangledTypeName")
@_preInverseGenerics
public func _getMangledTypeName(_ type: any ~Copyable.Type)
public func _getMangledTypeName(_ type: any (~Copyable & ~Escapable).Type)
-> (UnsafePointer<UInt8>, Int)
/// Returns the mangled name for a given type.
@@ -106,7 +106,7 @@ public func _getMangledTypeName(_ type: any ~Copyable.Type)
@_unavailableInEmbedded
@_preInverseGenerics
public // SPI
func _mangledTypeName(_ type: any ~Copyable.Type) -> String? {
func _mangledTypeName(_ type: any (~Copyable & ~Escapable).Type) -> String? {
let (stringPtr, count) = unsafe _getMangledTypeName(type)
guard count > 0 else {
return nil

View File

@@ -494,6 +494,7 @@ DemangleToMetadataTests.test("Nested types in same-type-constrained extensions")
}
struct NonCopyable: ~Copyable {}
struct NonEscapable: ~Escapable {}
if #available(SwiftStdlib 5.3, *) {
DemangleToMetadataTests.test("Round-trip with _mangledTypeName and _typeByName") {
@@ -531,6 +532,11 @@ if #available(SwiftStdlib 5.3, *) {
let type: any ~Copyable.Type = NonCopyable.self
expectEqual("4main11NonCopyableV", _mangledTypeName(type))
}
DemangleToMetadataTests.test("Check _MangledTypeName with any ~Escapable.Type") {
let type: any ~Escapable.Type = NonEscapable.self
expectEqual("4main12NonEscapableV", _mangledTypeName(type))
}
}
if #available(SwiftStdlib 5.1, *) {