]> granicus.if.org Git - clang/commitdiff
Add test case for -Wdeprecated-objc-pointer-introspection, and
authorTed Kremenek <kremenek@apple.com>
Wed, 24 Apr 2013 06:52:20 +0000 (06:52 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 24 Apr 2013 06:52:20 +0000 (06:52 +0000)
tweak warning to suggest that it is just a bad thing to do.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180175 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
test/SemaObjC/deprecated-objc-introspection.m

index 0f73c7b41656f4c29c30dff338d7d64015ef091a..6ba65c0a23c4addb0ebcec3967ba3461c58f9d92 100644 (file)
@@ -644,7 +644,7 @@ def warn_objc_isa_assign : Warning<
   "object_setClass()">, InGroup<DeprecatedObjCIsaUsage>;
 def warn_objc_pointer_masking : Warning<
   "bitmasking for introspection of Objective-C object pointers is strongly "
-  "discouraged in favor of using runtime APIs">,
+  "discouraged">,
   InGroup<DiagGroup<"deprecated-objc-pointer-introspection">>;
 def warn_objc_property_default_assign_on_object : Warning<
   "default property attribute 'assign' not appropriate for non-GC object">,
index 6d67641a814c5908f24f743fe0c81f45ebf0255c..faaef254d5962bf41894f335906ffda173eb4714 100644 (file)
@@ -87,3 +87,11 @@ static void func() {
 }
 @end
 
+// Test for introspection of Objective-C pointers via bitmasking.
+
+void testBitmasking(NSObject *p) {
+  (void) (((NSUInteger) p) & 0x1); // expected-warning {{bitmasking for introspection of Objective-C object pointers is strongly discouraged}}
+  (void) (0x1 & ((NSUInteger) p)); // expected-warning {{bitmasking for introspection of Objective-C object pointers is strongly discouraged}}
+  (void) (((NSUInteger) p) ^ 0x1); // no-warning
+  (void) (0x1 ^ ((NSUInteger) p)); // no-warning
+}
\ No newline at end of file