It is possibe to use reserved keywords as args. It is also possible to specifiy other literals (numbers, strings) as args, but these are ignored in the arg list and used literally in the body, without warning.
#define a(b not) [b + not] print a(1 2) ; prints 3
#define a(b 5) [b + 5] print a(1 2) ; prints 6, not 3
#define a(b "c") [b + "c"] print a(1 2) ; error in code-generation (adding an integer to a string)
Good catch, again!
FIX: issue #288 (Formal args of parametrized macros are not constrain…
…ed to (non key-)words)
A proper loader error is now raised.
FIX: additional fix for issue #288 (Formal args of parametrized macro…
…s are not constrained to (non key-)words)