Skip to content

Commit 513303f

Browse files
committed
Also fix and test uppercased and lowercased
1 parent ec5f40f commit 513303f

File tree

3 files changed

+34
-16
lines changed

3 files changed

+34
-16
lines changed

stdlib/public/stubs/SwiftNativeNSXXXBase.mm.gyb

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -192,22 +192,6 @@ bool swift_stdlib_NSStringHasSuffixNFDPointer(void *theString,
192192
return Result;
193193
}
194194

195-
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
196-
NS_RETURNS_RETAINED NSString *
197-
swift_stdlib_NSStringLowercaseString(NSString *NS_RELEASES_ARGUMENT str) {
198-
NSString *Result = objc_retain(str.lowercaseString);
199-
swift_unknownRelease(str);
200-
return Result;
201-
}
202-
203-
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
204-
NS_RETURNS_RETAINED NSString *
205-
swift_stdlib_NSStringUppercaseString(NSString *NS_RELEASES_ARGUMENT str) {
206-
NSString *Result = objc_retain(str.uppercaseString);
207-
swift_unknownRelease(str);
208-
return Result;
209-
}
210-
211195
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
212196
void swift_stdlib_CFSetGetValues(NSSet *NS_RELEASES_ARGUMENT set,
213197
const void **values) {

stdlib/public/stubs/SwiftNativeNSXXXBaseARC.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,17 @@ size_t swift_stdlib_NSStringHashValue(NSString *NS_RELEASES_ARGUMENT str,
3737
(__bridge NSString __unsafe_unretained *)opaque;
3838
return isASCII ? str.hash : str.decomposedStringWithCanonicalMapping.hash;
3939
}
40+
41+
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
42+
NS_RETURNS_RETAINED NSString *
43+
swift_stdlib_NSStringLowercaseString(NSString *NS_RELEASES_ARGUMENT str) {
44+
return str.lowercaseString;
45+
}
46+
47+
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
48+
NS_RETURNS_RETAINED NSString *
49+
swift_stdlib_NSStringUppercaseString(NSString *NS_RELEASES_ARGUMENT str) {
50+
return str.uppercaseString;
51+
}
52+
4053
#endif

test/stdlib/StringMemoryTest.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
import Foundation
1010

11+
let str = "abcdefg\u{A758}hijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\u{A759}"
12+
let str2 = "abcdefg\u{A759}hijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\u{A758}"
13+
1114
@inline(never)
1215
func lookup(_ str: String, _ dict: [String: Int]) -> Bool {
1316
if let _ = dict[str] {
@@ -16,16 +19,34 @@ func lookup(_ str: String, _ dict: [String: Int]) -> Bool {
1619
return false
1720
}
1821

22+
@inline(never)
23+
func uppercase(_ str: String) -> String {
24+
return str.uppercased()
25+
}
26+
27+
@inline(never)
28+
func lowercase(_ str: String) -> String {
29+
return str.lowercased()
30+
}
31+
1932
/// Make sure the hash function does not leak.
2033

2134
let dict = [ "foo" : 1]
2235
for _ in 0 ..< 10_000_000 {
2336
if lookup("\u{1F1E7}\u{1F1E7}", dict) {
2437
print("Found?!")
2538
}
39+
if uppercase(str) == "A" {
40+
print("Found?!")
41+
}
42+
if lowercase(str2) == "A" {
43+
print("Found?!")
44+
}
2645
}
2746

47+
// CHECK-NOT: Found?!
2848
// CHECK: Not found
49+
2950
print("Not found")
3051

3152
var usage = rusage()

0 commit comments

Comments
 (0)