On 2013-02-26 20:53, Walter Bright wrote:
On 2/25/2013 11:56 PM, foobar wrote:
DDoc isn't part of the language but rather part of the compiler,
nevertheless it
has its downsides.  [...]
unittest is worse,

[SNIP]

I'm going to use the big "if".

If the D compiler was built properly as a library, preferably in D. We could build all these features as separate tools (Ddoc, unit test) with the help of the compiler. These tools would then be included in the D distribution. Actually, the unit test support doesn't need the compiler as a library.

The build in unit tests support doesn't give much. It's easily implemented as a library with a simple tool to drive it. Example:

void unitTest (void delegate () dg);

static this ()
{
    unitTest({
        assert(true);
    });
}

It's then easy to add support for named unit tests:

void unitTest (string name, void delegate () dg);

static this ()
{
    unitTest("foo", {
        assert(true);
    });
}

If we then add some syntax sugar and allow a delegate to be passed after the parameter list we could have this:

static this ()
{
    unitTest("foo") {
        assert(true);
    }
}

If we then could support having arbitrary code at top level we would have this:

unitTest("foo") {
    assert(true);
}

Which is basically the same syntax as we have now but it's implemented as a library function. It can easily be extended with other similar functions doing slightly different things.

--
/Jacob Carlborg

Reply via email to