Let-defined punctuator macros parse inconsistently
Created by: dfreeman
Really happy to see a fix for #125 (closed) has gone in, but now that the let-defined punctuator macro definitions will parse, it looks like there are still some cases where their application is a problem.
As defined here, ^
behaves as the identity in all three cases:
macro ^ { rule { $x } => { $x } }
var a1 = ^ 1; // => 1
var a2 = (^ 1); // => 1
var a3 = { key: ^ 1 }; // => { key: 1 }
Defined with let
, however, an error is thrown for the second two cases:
let ^ = macro { rule { $x } => { $x } }
var a1 = ^ 1; // => 1
var a2 = (^ 1); // => Error: Line 4: Unexpected token ^
var a3 = { key: ^ 1 }; // => Error: Line 5: Unexpected token ^
If the macro is given a regular JS identifier for a name, everything works as expected regardless of whether let
is used.