@@ -10,6 +10,11 @@ struct StructWithMembers {
1010 var b = " Hello World "
1111}
1212
13+ struct StructIsNonCopyable : ~ Copyable {
14+ var a = 1
15+ var b = " Hello World "
16+ }
17+
1318class ClassWithMembers {
1419 var a = 1
1520 var b = " Hello World "
@@ -108,6 +113,64 @@ if #available(SwiftStdlib 6.1, *) {
108113 }
109114}
110115
116+ @available ( SwiftStdlib 6 . 3 , * )
117+ func _expectStringForPrintObject< T> ( _ pointer: UnsafePointer < T > , output: String ) {
118+ guard let mangledTypeName = _mangledTypeName ( T . self) else {
119+ expectTrue ( false )
120+ return
121+ }
122+ let ( success, printed) =
123+ _DebuggerSupport. stringForPrintObject ( UnsafeRawPointer ( pointer) , mangledTypeName: mangledTypeName)
124+ expectTrue ( success)
125+ expectEqual ( printed, output)
126+ }
127+
128+ if #available( SwiftStdlib 6 . 3 , * ) {
129+ StringForPrintObjectTests . test ( " PointerWithMangledTypeName " ) {
130+ var num = 33
131+ _expectStringForPrintObject ( & num, output: " 33 \n " )
132+
133+ var val1 = StructWithMembers ( )
134+ _expectStringForPrintObject ( & val1, output: " ▿ StructWithMembers \n - a : 1 \n - b : \" Hello World \" \n " )
135+
136+ var val2 : StructWithMembers ? = StructWithMembers ( )
137+ _expectStringForPrintObject ( & val2,
138+ output: " ▿ Optional<StructWithMembers> \n ▿ some : StructWithMembers \n - a : 1 \n - b : \" Hello World \" \n " )
139+
140+ do {
141+ var val3 = StructIsNonCopyable ( )
142+ if let mangledTypeName = _mangledTypeName ( StructIsNonCopyable . self) {
143+ withUnsafeBytes ( of: & val3) { bytes in
144+ guard let pointer = bytes. baseAddress else {
145+ expectTrue ( false )
146+ return
147+ }
148+ let ( success, printed) =
149+ _DebuggerSupport. stringForPrintObject ( pointer, mangledTypeName: mangledTypeName)
150+ expectFalse ( success)
151+ expectEqual ( printed, " type not found for mangled name: \( mangledTypeName) " )
152+ }
153+ } else {
154+ expectTrue ( false )
155+ }
156+ }
157+
158+ do {
159+ let obj = ClassWithMembers ( )
160+ if let mangledTypeName = _mangledTypeName ( ClassWithMembers . self) {
161+ withExtendedLifetime ( obj) { obj in
162+ let pointer = unsafeBitCast ( obj, to: UnsafeRawPointer . self)
163+ let ( success, printed) = _DebuggerSupport. stringForPrintObject ( pointer, mangledTypeName: mangledTypeName)
164+ expectTrue ( success)
165+ expectTrue ( printed. hasPrefix ( " <ClassWithMembers: 0x " ) )
166+ }
167+ } else {
168+ expectTrue ( false )
169+ }
170+ }
171+ }
172+ }
173+
111174class RefCountedObj {
112175 var patatino : Int
113176 init ( _ p : Int ) {
0 commit comments