[cfe-commits] r111116 - in /cfe/trunk: include/clang/Checker/PathSensitive/ConstraintManager.h include/clang/Checker/PathSensitive/GRState.h lib/Checker/FlatStore.cpp lib/Checker/RegionStore.cpp lib/Checker/SimpleConstraintManager.cpp lib/Checker/SimpleConstraintManager.h lib/Checker/Store.cpp test/Analysis/outofbound.c

Jordy Rose jediknil at belkadan.com
Mon Aug 16 09:19:13 PDT 2010


On Mon, 16 Aug 2010 09:06:54 -0700, Ted Kremenek <kremenek at apple.com>
wrote:
> On Aug 15, 2010, at 6:15 PM, Jordy Rose wrote:
> 
>> +
>> +  operator bool() const {
>> +    return getRegion() != NULL;
>> +  }
>> };
> 
> Hi Jordy,
> 
> I'm really mixed about this.  operator bool() is convenient, but in my
> experience it doesn't lead to better readability in the code.  Why not
just
> have clients call 'getRegion()', where the check becomes explicit? 
Using
> operator bool() also compounds the often abused use of bool.  For me,
bool
> is 'true' and 'false', not "is valid" or "is not valid".  If someone
> doesn't know the correct interpretation of operator bool() in a specific
> context, it is easy to mess things up.
> 
> Ted

I wasn't happy with calling getRegion() to be the way to check validity;
that's what it was before, but it's almost a detail of BindingKey that an
invalid key would have a null region. We really just want to know "is this
key valid" in the same way that we check "is this pointer valid"

But I'm not usually a fan of operator bool() either. I'll change it to
IsValid() when I get the chance this afternoon, then.

(Of course before this there were no null regions or invalid keys -- this
change pushed validation up a level.)



More information about the cfe-commits mailing list