std.unittests [updated] for review
Michel Fortin
michel.fortin at michelf.com
Tue Feb 1 08:14:05 PST 2011
On 2011-02-01 10:34:26 -0500, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> said:
> On 2/1/11 9:21 AM, Don wrote:
>> Jonathan M Davis wrote:
>>> Do you really find
>>>
>>> assertPred!"=="(min(5, 7), 5);
>>>
>>> to be all that harder to understand than
>>>
>>> assert(min(5, 7) == 5);
>>
>> I do. *Much* harder. Factor of two, at least.
>> In absolute terms, not so much, because it was the original assert is
>> very easy to understand. But the relative factor matters enormously.
>> Much as comparing:
>> a.add(b);
>> a += b;
>>
>> And I think this is a very important issue.
>>
>> >I don't see how these functions could be anything but an improvement.
>> > But even if they get into Phobos, you obviously don't have to use them.
>>
>> This is not true. Including them in Phobos gives a legitimacy to that
>> style of programming. It's a role model.
>>
>> Including stuff like this could give D a reputation for lack of
>> readability. My belief is that right now, the #1 risk for Phobos is that
>> it becomes too clever and inaccessible.
>>
>> IMHO, something simple which has any appearance of being complicated,
>> needs a VERY strong justification.
>
> Does this count as a vote against the submission?
To me this is a compelling argument against. That and the fact that it
can't really mimic the true behaviour of assert in some situation.
assertPred won't work correctly for 'in' contracts with inheritance,
where the compiler generate the assertion code differently.
In my view, the correct way to improve assertion error messages is to
improve how the compiler handle assertions (it should output messages
like it does for static asserts).
assertPred might be fine as a stopgap solution, but personally I'd not
make it part of the public API. We can't tell people to use assert()
everywhere and then tell them they should use assertPred!op() if they
want a useful error message except for 'in' contracts of virtual
functions; that'd just be too confusing.
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d
mailing list