[LLVMbugs] [Bug 9194] New: clang should warn upon '== YES' with Obj-C BOOL
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Thu Feb 10 13:01:16 PST 2011
http://llvm.org/bugs/show_bug.cgi?id=9194
Summary: clang should warn upon '== YES' with Obj-C BOOL
Product: new-bugs
Version: trunk
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P
Component: new bugs
AssignedTo: unassignedbugs at nondot.org
ReportedBy: sean at rogue-research.com
CC: llvmbugs at cs.uiuc.edu
Since Objective-C predates C99, it defines it's own BOOL type instead of using
the standard bool. Unfortunately, Obj-C BOOL is in fact a 'signed char' and so
has 256 possible values instead of just 2.
It also defines NO=0 and YES=1. But what about the other 254 values? As per C
rules, they are all treated as true. As such, testing == NO is safe, but
testing == YES is not (since YES is not the only true value).
rdar://problem/6510042 suggests that Obj-C adopt the C99 bool, but until
then...
it would be nice if clang warned for any test of a BOOL variable with == YES
ex:
BOOL isOK = someBitField & someFlag; // isOK becomes, let's say, 66.
if (isOK == YES)
fail!
vs
bool isOK = someBitField & someFlag; // isOK becomes either 0 or 1
if (isOK == true)
success!
I would be happy with either the compiler or static analzyer warning about
this.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list