Skip to content

Commit f1070f7

Browse files
authored
Merge pull request #80000 from swiftlang/jgrynspan/145945680-mangledtypename-nonescapable
[Runtime] Allow ~Escapable types in _getMangledTypeName.
2 parents 3a4549b + 9489564 commit f1070f7

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

stdlib/public/core/Misc.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,15 @@ func _typeName(_ type: Any.Type, qualified: Bool = true) -> String {
9898
@available(SwiftStdlib 5.3, *)
9999
@_silgen_name("swift_getMangledTypeName")
100100
@_preInverseGenerics
101-
public func _getMangledTypeName(_ type: any ~Copyable.Type)
101+
public func _getMangledTypeName(_ type: any (~Copyable & ~Escapable).Type)
102102
-> (UnsafePointer<UInt8>, Int)
103103

104104
/// Returns the mangled name for a given type.
105105
@available(SwiftStdlib 5.3, *)
106106
@_unavailableInEmbedded
107107
@_preInverseGenerics
108108
public // SPI
109-
func _mangledTypeName(_ type: any ~Copyable.Type) -> String? {
109+
func _mangledTypeName(_ type: any (~Copyable & ~Escapable).Type) -> String? {
110110
let (stringPtr, count) = unsafe _getMangledTypeName(type)
111111
guard count > 0 else {
112112
return nil

test/Runtime/demangleToMetadata.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,7 @@ DemangleToMetadataTests.test("Nested types in same-type-constrained extensions")
494494
}
495495

496496
struct NonCopyable: ~Copyable {}
497+
struct NonEscapable: ~Escapable {}
497498

498499
if #available(SwiftStdlib 5.3, *) {
499500
DemangleToMetadataTests.test("Round-trip with _mangledTypeName and _typeByName") {
@@ -531,6 +532,11 @@ if #available(SwiftStdlib 5.3, *) {
531532
let type: any ~Copyable.Type = NonCopyable.self
532533
expectEqual("4main11NonCopyableV", _mangledTypeName(type))
533534
}
535+
536+
DemangleToMetadataTests.test("Check _MangledTypeName with any ~Escapable.Type") {
537+
let type: any ~Escapable.Type = NonEscapable.self
538+
expectEqual("4main12NonEscapableV", _mangledTypeName(type))
539+
}
534540
}
535541

536542
if #available(SwiftStdlib 5.1, *) {

0 commit comments

Comments
 (0)