You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@asta12 discovered a bug where the AST ends up with multiple instances of the same symbol. This leads to problems in the lambda lifting because it assumes all bindings have unique identifiers. My hypothesis is that we have not discovered this earlier because passes in the main compiler do not require identifiers to be unique. The reason is that the pattern lowering duplicates code without resymbolizing it.
I have not found a smaller example than stdlib/json.mc. When compiled as mi compile --debug-shallow --test --exit-before stdlib/json.mc, the output (it's a lot, I typically redirect it to a file) contains multiple bindings of identifier matchBody105 with identical bodies (i.e., because they use the same symbols). If the output is printed earlier (e.g., by inserting a print just before the pattern lowering in the compiler), the output does not contain bindings with identical symbols.
The text was updated successfully, but these errors were encountered:
@asta12 discovered a bug where the AST ends up with multiple instances of the same symbol. This leads to problems in the lambda lifting because it assumes all bindings have unique identifiers. My hypothesis is that we have not discovered this earlier because passes in the main compiler do not require identifiers to be unique. The reason is that the pattern lowering duplicates code without resymbolizing it.
I have not found a smaller example than
stdlib/json.mc
. When compiled asmi compile --debug-shallow --test --exit-before stdlib/json.mc
, the output (it's a lot, I typically redirect it to a file) contains multiple bindings of identifiermatchBody105
with identical bodies (i.e., because they use the same symbols). If the output is printed earlier (e.g., by inserting a print just before the pattern lowering in the compiler), the output does not contain bindings with identical symbols.The text was updated successfully, but these errors were encountered: