[FIX] compiler: never add _ prefix to non variable token

This commit is contained in:
Bruno Boi
2022-01-27 14:36:31 +01:00
committed by Géry Debongnie
parent 6f0a4b1c92
commit 4b88787a72
2 changed files with 4 additions and 1 deletions
+1 -1
View File
@@ -329,7 +329,7 @@ export function compileExprToArray(expr: string): Token[] {
// Mark all variables that have been used locally. // Mark all variables that have been used locally.
// This assumes the expression has only one scope (incorrect but "good enough for now") // This assumes the expression has only one scope (incorrect but "good enough for now")
for (const token of tokens) { for (const token of tokens) {
if (token.type === "SYMBOL" && localVars.has(token.value)) { if (token.type === "SYMBOL" && token.varName && localVars.has(token.value)) {
token.originalValue = token.value; token.originalValue = token.value;
token.value = `_${token.value}`; token.value = `_${token.value}`;
token.isLocal = true; token.isLocal = true;
@@ -171,6 +171,9 @@ describe("expression evaluation", () => {
); );
expect(compileExpr("(ev => ev)(e)")).toBe("(_ev=>_ev)(ctx['e'])"); expect(compileExpr("(ev => ev)(e)")).toBe("(_ev=>_ev)(ctx['e'])");
expect(compileExpr("(v1) => myFunc(v1)")).toBe("(_v1)=>ctx['myFunc'](_v1)"); expect(compileExpr("(v1) => myFunc(v1)")).toBe("(_v1)=>ctx['myFunc'](_v1)");
expect(compileExpr("list.data.map((data) => data)")).toBe(
"ctx['list'].data.map((_data)=>_data)"
);
}); });
test.skip("arrow functions: not yet supported", () => { test.skip("arrow functions: not yet supported", () => {
// e is added to localvars in inline_expression but not removed after the arrow func body // e is added to localvars in inline_expression but not removed after the arrow func body