Try removing the semi-colon on the last line of the closure, for some reason the sweetjs compiler has trouble with $last and semi-colons.
macro -> {
rule infix { () | { $body ... $last:expr } } => {
function() {
$($body) ...
return $last
}
}
}
var fn = () -> {
var a = 1
a + 2
};