Skip to content

Commit bcb9571

Browse files
JGiolajrose-apple
authored andcommitted
Add fix in Casting.cpp for SR-6032 (#12298)
Private classes doesn't add extra stuff when passed to String(describing:)
1 parent 08a404c commit bcb9571

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

stdlib/public/runtime/Casting.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ static void _buildNameForMetadata(const Metadata *type,
100100

101101
Demangle::DemangleOptions options;
102102
options.QualifyEntities = qualified;
103+
if (!qualified)
104+
options.ShowPrivateDiscriminators = false;
103105
result = Demangle::nodeToString(demangling, options);
104106
}
105107

test/stdlib/StringDescribing.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// RUN: %target-run-simple-swift
2+
// REQUIRES: executable_test
3+
4+
import StdlibUnittest
5+
6+
private class Foo {}
7+
class Bar {}
8+
9+
var StringDescribingTestSuite = TestSuite("StringDescribing")
10+
11+
StringDescribingTestSuite.test("String(describing:) shouldn't include extra stuff if the class is private") {
12+
expectEqual(String(describing: Foo.self), "Foo")
13+
expectEqual(String(describing: Bar.self), "Bar")
14+
}
15+
16+
StringDescribingTestSuite.test("String(reflecting:) should include extra stuff if the class is private") {
17+
expectEqual(String(reflecting: Bar.self), "main.Bar")
18+
expectEqual(String(reflecting: Foo.self), "main.(Foo in _AE29BC3E71CF180B9604AA0071CCE6E8)")
19+
}
20+
21+
runAllTests()

0 commit comments

Comments
 (0)