[PATCH] Objective C literals to bool conversion warning

Jordan Rose jordan_rose at apple.com
Tue Jan 28 09:14:22 PST 2014

  Remember, "Objective-C" is always hyphenated. :-)

Comment at: include/clang/Basic/DiagnosticSemaKinds.td:2299-2301
@@ -2298,2 +2298,5 @@
     "suffix with parentheses to turn this into a function call">;
+def warn_impcast_objective_c_literal_to_bool : Warning<
+    "implicit conversion turns Objective C literal into bool: %0 to %1">,
+    InGroup<ObjCLiteralConversion>, DefaultIgnore;
Ideally I'd like something more like "implicit boolean conversion of %select{array literal|dictionary literal|numeric literal|boxed expression}0 always evaluates to true". Failing that, let's go with "Objective-C object literal".

Comment at: lib/Sema/SemaChecking.cpp:5355-5356
@@ +5354,4 @@
+        isa<ObjCDictionaryLiteral>(E) || isa<ObjCBoxedExpr>(E)) {
+      // Warn on Objective C literal to bool conversions.  This covers most of
+      // the Objective C types, except for ObjCBoolLiteral.
+      return DiagnoseImpCast(S, E, T, CC,
There are a lot of "Objective-C types". How about "This covers the literal expressions that evaluate to Objective-C objects"?


More information about the cfe-commits mailing list