I'm not sold on the concept. The whole point of this module seems to offer a way to replace the built-in assertion mechanism with a customized one, with the sole purpose of giving better error messages. So we're basically encouraging the use of:

        assertPredicate!"a > b"(a, b, "message");

instead of:

        assert(a > b, "message");

It looks like an uglification of the language to me.

I agree that getting better error messages is important (very important in fact), but keeping the code clean is important too. If the built-in assert doesn't give us good enough error messages, perhaps it's the built-in assert that should be improved. The compiler could give the values on both side of the operator to the assertion handler, which would in turn print values and operator as part of the error message.

So to me this module is a temporary fix until the compiler is capable of giving the necessary information to the assertion handler. I sure hope it won't be needed for too long.

(Note: this criticism doesn't apply to those assertions dealing with exceptions.)

--
Michel Fortin
michel.for...@michelf.com
http://michelf.com/

Reply via email to