summaryrefslogtreecommitdiffstats
path: root/test/SemaObjC/transfer-boxed-string-nullability.m
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaObjC/transfer-boxed-string-nullability.m')
-rw-r--r--test/SemaObjC/transfer-boxed-string-nullability.m18
1 files changed, 14 insertions, 4 deletions
diff --git a/test/SemaObjC/transfer-boxed-string-nullability.m b/test/SemaObjC/transfer-boxed-string-nullability.m
index 42604ef4a6..a3b6832be4 100644
--- a/test/SemaObjC/transfer-boxed-string-nullability.m
+++ b/test/SemaObjC/transfer-boxed-string-nullability.m
@@ -16,13 +16,23 @@
void takesNonNull(NSString * _Nonnull ptr);
void testBoxedString() {
+ // No diagnostic emitted as this doesn't need a stringWithUTF8String message
+ // send.
+ takesNonNull(@("hey"));
+ takesNonNull(@(u8"hey"));
+
+ // If the string isn't a valid UTF-8 string, a diagnostic is emitted since the
+ // boxed expression turns into a message send.
+ takesNonNull(@(u8"\xFF")); // expected-warning {{string is ill-formed as UTF-8}}
+ takesNonNull(@(u8"\xC0\x80")); // expected-warning {{string is ill-formed as UTF-8}}
+
const char *str = "hey";
takesNonNull([NSString stringWithUTF8String:str]);
takesNonNull(@(str));
#ifndef NOWARN
- // expected-warning@-3 {{implicit conversion from nullable pointer 'NSString * _Nullable' to non-nullable pointer type 'NSString * _Nonnull'}}
- // expected-warning@-3 {{implicit conversion from nullable pointer 'NSString * _Nullable' to non-nullable pointer type 'NSString * _Nonnull'}}
-#else
- // expected-no-diagnostics
+ // expected-warning@-7 {{implicit conversion from nullable pointer 'NSString * _Nullable' to non-nullable pointer type 'NSString * _Nonnull'}}
+ // expected-warning@-7 {{implicit conversion from nullable pointer 'NSString * _Nullable' to non-nullable pointer type 'NSString * _Nonnull'}}
+ // expected-warning@-5 {{implicit conversion from nullable pointer 'NSString * _Nullable' to non-nullable pointer type 'NSString * _Nonnull'}}
+ // expected-warning@-5 {{implicit conversion from nullable pointer 'NSString * _Nullable' to non-nullable pointer type 'NSString * _Nonnull'}}
#endif
}