On Mon, Jun 17, 2013 at 12:36 AM, Stefan Karpinski <notifications@github.com
> wrote:

> > +# Usage:
> > +#     @ASSERT <condition>
> > +# or  @ASSERT <condition>, <expr> ....
> > +# or  @ASSERT (<condition>, <expr> ....)  # a space is required after "@ASSERT"
>
> Macro invocations work fine without a space before the parens. It gets
> parsed differently – with the space, the expression passed to the macro is
> a tuple, without the space, multiple arguments are passed to the macro. In
> this case, since the @ASSERT(cond,expr) is the same as @ASSERT cond expr.
> Perhaps the confusion stems from the fact that if you write @ASSERT cond,
> expr the macro is invoked with a single argument that is a tuple
> expression.
>
In this particular case, I'm happy to say there was no confusion on my
part.  That is, the @ASSERT macro as it has been specified and implemented
does not accept @ASSERT(<condition>, <expr>, ...) [i.e., without the
space].

One could of course make the case that the specification and implementation
should be more forgiving, but there is at least the risk that a more
elaborate specification might jeopardize the principle of minimal run-time
resource costs when assertions are turned OFF.

Thanks.