summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@apple.com>2017-08-11 00:06:49 +0000
committerAkira Hatanaka <ahatanaka@apple.com>2017-08-11 00:06:49 +0000
commit8d7bdf6dffb56c31bb671be4476c9fb057eaf26d (patch)
tree31fc7b8a3223f44f877e9c749cd80814536e524e /clang/test
parent6315d2d21d70f18d11d00015d1432f5964edafdb (diff)
downloadbcm5719-llvm-8d7bdf6dffb56c31bb671be4476c9fb057eaf26d.tar.gz
bcm5719-llvm-8d7bdf6dffb56c31bb671be4476c9fb057eaf26d.zip
[Sema][ObjC] Fix spurious -Wcast-qual warnings.
We do not meaningfully track object const-ness of Objective-C object types. Silence the -Wcast-qual warning that is issued when casting to or from Objective-C object types results in losing const qualification. rdar://problem/33807915 llvm-svn: 310672
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/SemaObjC/illegal-nonarc-bridged-cast.m17
1 files changed, 15 insertions, 2 deletions
diff --git a/clang/test/SemaObjC/illegal-nonarc-bridged-cast.m b/clang/test/SemaObjC/illegal-nonarc-bridged-cast.m
index f3406ef983c..23c7b96e370 100644
--- a/clang/test/SemaObjC/illegal-nonarc-bridged-cast.m
+++ b/clang/test/SemaObjC/illegal-nonarc-bridged-cast.m
@@ -1,8 +1,9 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fblocks -verify %s
+// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fblocks -Wcast-qual -verify %s
// rdar://10597832
typedef const void *CFTypeRef;
typedef const struct __CFString *CFStringRef;
+@class NSString;
@interface NSString
@end
@@ -18,7 +19,7 @@ NSString *CreateNSString();
void from_cf() {
id obj1 = (__bridge_transfer id)CFCreateSomething(); // expected-warning {{'__bridge_transfer' casts have no effect when not using ARC}}
id obj2 = (__bridge_transfer NSString*)CFCreateString(); // expected-warning {{'__bridge_transfer' casts have no effect when not using ARC}}
- (__bridge int*)CFCreateSomething(); // expected-warning {{expression result unused}}
+ (__bridge int*)CFCreateSomething(); // expected-warning {{expression result unused}} expected-warning {{cast from 'const void *' to 'int *' drops const qualifier}}
id obj3 = (__bridge id)CFGetSomething();
id obj4 = (__bridge NSString*)CFGetString();
}
@@ -41,3 +42,15 @@ void to_cf_ignored(id obj) {
CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething(); // no-warning
CFTypeRef cf3 = (__bridge CFTypeRef)CreateSomething(); // no-warning
}
+
+// Check that clang doesn't warn about dropping const from Objective-C object
+// types.
+void test_wcast_qual() {
+ CFStringRef c;
+ NSString *n0 = (NSString *)c;
+ NSString **n1 = (NSString **)&c;
+ const NSString *n2;
+ const NSString **n3;
+ void *p0 = (void *)n2;
+ void **p1 = (void **)n3;
+}
OpenPOWER on IntegriCloud