in packages/sqrl/src/js/SqrlJs.ts [325:346]
function exprToJs(expr: Expr, state: JsState): JsExpr {
if (expr.type === "load") {
return loadToJs(expr, state);
} else if (expr.type === "constant") {
return constantToJs(expr, state);
} else if (expr.type === "value") {
return `this.slots[${expr.slot.getIndex()}].value()`;
} else if (expr.type === "iterator") {
return `it0`;
} else if (expr.type === "state") {
return "this";
} else if (expr.type === "if") {
return ifToJs(expr, state);
} else if (expr.type === "call") {
return callToJs(expr, state);
} else if (expr.type === "list") {
return listToJs(expr, state);
} else if (expr.type === "listComprehension") {
return listComprehensionToJs(expr, state);
}
throw new Error("Invalid sqrl expr.");
}