Skip to content

Commit 70a7a88

Browse files
Christopher Whitewhiteio
authored andcommitted
Make std.string conform to CustomDebugStringConvertible
1 parent ec5dc4c commit 70a7a88

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

stdlib/public/Cxx/std/String.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ extension std.string: ExpressibleByStringLiteral {
2525
}
2626
}
2727

28+
extension std.string: CustomDebugStringConvertible {
29+
public var debugDescription: String {
30+
return "std.string(\(String(cxxString: self)))"
31+
}
32+
}
33+
2834
extension String {
2935
public init(cxxString: std.string) {
3036
let buffer = UnsafeBufferPointer<CChar>(

test/Interop/Cxx/stdlib/overlay/std-string-overlay.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,21 @@ StdStringOverlayTestSuite.test("std::string <=> Swift.String") {
3737
expectEqual(swift6, "xyz\0abc")
3838
}
3939

40+
StdStringOverlayTestSuite.test("std::string as Swift.CustomDebugStringConvertible") {
41+
let cxx1 = std.string()
42+
expectEqual(cxx1.debugDescription, "std.string()")
43+
44+
let cxx2 = std.string("something123")
45+
expectEqual(cxx2.debugDescription, "std.string(something123)")
46+
47+
let bytes: [UInt8] = [0xE1, 0xC1, 0xAC]
48+
var cxx3 = std.string()
49+
for byte in bytes {
50+
cxx3.push_back(CChar(bitPattern: byte))
51+
}
52+
expectEqual(cxx3.debugDescription, "std.string(���)")
53+
}
54+
4055
StdStringOverlayTestSuite.test("std::string as Swift.Sequence") {
4156
let cxx1 = std.string()
4257
var iterated = false

0 commit comments

Comments
 (0)