[LLVMdev] LLD: Returning true on success

Chandler Carruth chandlerc at google.com
Tue Sep 24 13:21:48 PDT 2013

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>

More information about the llvm-dev mailing list