[LLVMdev] LLD: Returning true on success
Sean Silva
chisophugis at gmail.com
Tue Sep 24 16:07:36 PDT 2013
On Tue, Sep 24, 2013 at 4:17 PM, Nick Kledzik <kledzik at apple.com> wrote:
>
> On Sep 24, 2013, at 12: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.
>
>
> StringRef::getAsInteger() is an example documented to return true if there
> was an error parsing the string.
>
I think it makes a lot of sense in this case. The idea is that you increase
indentation in the "error" case. Consider parsing 2 numbers and returning
their sum:
if (S1.getAsInteger(16, Result1)) {
// report failure
}
if (S2.getAsInteger(16, Result2)) {
// report failure
}
return Result1 + Result2;
vs.
if (S1.getAsIntegerTrueOnSuccess(16, Result1)) {
if (S2.getAsIntegerTrueOnSuccess(16, Result2)) {
return Result1 + Result2;
} else {
// report failure
}
} else {
// report failure
}
Of course, in the latter case you would just use ! to avoid gaining
indentation, but still, I think that if most uses of an API will require
immediately negating the return value, then maybe the sense should be
inverted.
>
> Mapping success/error onto a bool will always be ambiguous. Is there some
> better pattern?
>
Maybe something like:
enum {
Success,
Failure
};
or
enum {
Failure,
Success
};
-- Sean Silva
>
> -Nick
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130924/f98b5742/attachment.html>
More information about the llvm-dev
mailing list