[LLVMdev] LLD: Returning true on success

Chandler Carruth
Tue, 24 Sep 2013 20:21:48 -0000

On Tue, Sep 24, 2013 at 2:40 PM, Michael Spencer <bigcheesegs at
gmail.com>wrote:

> On Tue, Sep 24, 2013 at 12:33 PM, Rui Ueyama <ruiu at google.com>
wrote:
>
>> Hi LLD developers,
>>
>> I'm about to make a change to invert the return value of
Driver::parse()
>> to return true on success. Currently it returns false on success.
>>
>> In many other functions, we return true to indicate success and false
to
>> indicate failure. The inconsistency is confusing, and fixing it should
>> improve code readability.
>>
>>
> Note that some places in LLVM use false to indicate success, not sure how
> widespread this is. Personally I think that { if (doSomething()) } means if
> doSomething succeeded, and thus agree with you. However, I think this is
> something that needs to be consistent across all of LLVM and should be in
> the coding standard.
>

Yes, this comes up again and again.

Chris has argued for true-on-error before as it fits with the classical
pattern of integer or enum error codes, but recently has indicated a
willingness to shift this stance.

What makes sense to me is to give 3 possible choices:

1) bool return, true indicates success.

2) an enum with a success enumerator which == 0, and non-success error
codes != 0.

3) an error class with an operator bool where true indicates the class does
contain an error.


It is only #3 and #1 that then are in any real contradiction at that point,
and it seems easy to understand and explain due to the object being an
error object.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20130924/83d1de07/attachment.html>