Open HeatherSoron opened 4 years ago
If anyone wants a pointer on where this is in the codebase, the function reduceBindingIdentifier
in sweet-js/core/token-expander.js is what adds the _14
.
However, I suspect there's a parsing error earlier in the compilation process, because after doing some research, I discovered that "hygienic macros" seem to be distinguished by the user not having to explicitly call gensym
-like functions (this detail isn't in the Sweet.js documentation itself, but is mentioned by other resources online).
Any updates on how to solve this?
I've recently came across this problem as well.
Variable binding in a 2-layer macro (i.e., a macro that calls another macro) is broken, in several cases I've tested.
Here's a fairly simple one (simpler than what I was using, but still clearly demonstrates the problem):
This should result in the value "42" being printed twice to stdout, but will actually result in a ReferenceError on the second console.log. The reason for this, is that Sweet.js expands it to the following code:
That
deep bar
appears to be misbehaving, as the identifierbar
is not picked up later on, during theconsole.log(bar)
call.