On 9/22/2014 4:20 AM, Manu via Digitalmars-d wrote:
On 22 September 2014 13:19, Walter Bright via Digitalmars-d
<[email protected] <mailto:[email protected]>> wrote:

    On 9/21/2014 4:27 AM, Manu via Digitalmars-d wrote:

        It's also extremely hard to unittest; explodes the number of static if 
paths
        exponentially. I'm constantly finding bugs appear a year after writing
        some code
        because I missed some static branch paths when originally authoring.


    If you throw -cov while running unittests, it'll give you a report on which
    code was executed and which wasn't. Very simple and useful.


It is a useful tool, but you can see how going to great lengths to write this
explosion of paths is a massive pain in the first place, let alone additional
overhead to comprehensively test that it works... it should never have been a
problem to start with.

There are two separate issues here - the first is knowing whether or not the code is unittested. -cov solves that issue. The second is having the multiple code paths in the first place.

Have you tried auto ref?

I don't really know what the code you show is supposed to do from a high level. My first impression is you are trying to write it like you'd write C++ code. Perhaps there's a more D idiomatic way of doing it that doesn't lead to the tangle you've got.

BTW, ref (as you know) is part of the type in C++. However, I can vouch for it being a special case everywhere in C++, and is a horrifying quagmire of strange edge cases. That's why it's not part of the type in D.

Reply via email to