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