diff --git a/runtime/index.js b/runtime/index.js index 1e24999..6d438b7 100644 --- a/runtime/index.js +++ b/runtime/index.js @@ -18,8 +18,9 @@ function uid() { function safeEval(code, inputs, __setEcho__) { const create = (code) => { + const resultVar = `__recho_v_${uid()}`; // Ensure the current echo function is bound for the executing cell. - const body = `__setEcho__(echo); const __foo__ = ${code}; const v = __foo__(${inputs.join(",")}); __setEcho__(null); return v;`; + const body = `__setEcho__(echo); const __foo__ = ${code}; const ${resultVar} = __foo__(${inputs.join(",")}); __setEcho__(null); return ${resultVar};`; const fn = new Function("__setEcho__", ...inputs, body); return (...args) => fn(__setEcho__, ...args); }; diff --git a/test/js/index-tests.js b/test/js/index-tests.js index b79a48a..1a02395 100644 --- a/test/js/index-tests.js +++ b/test/js/index-tests.js @@ -19,3 +19,4 @@ export {echoInRecursiveFunction} from "./echo-in-recursive-function.js"; export {echoInBracket} from "./echo-in-bracket.js"; export {echoAsParams} from "./echo-as-params.js"; export {echoKey} from "./echo-key.js"; +export {vCollision} from "./v-collision.js"; diff --git a/test/js/index.js b/test/js/index.js index 447f888..6944d41 100644 --- a/test/js/index.js +++ b/test/js/index.js @@ -32,3 +32,4 @@ export {echoInBlock} from "./echo-in-block.js"; export {echoInAsyncCallback} from "./echo-in-async-callback.js"; export {echoInBracket} from "./echo-in-bracket.js"; export {echoAsParams} from "./echo-as-params.js"; +export {vCollision} from "./v-collision.js"; diff --git a/test/js/v-collision.js b/test/js/v-collision.js new file mode 100644 index 0000000..273ce72 --- /dev/null +++ b/test/js/v-collision.js @@ -0,0 +1,4 @@ +export const vCollision = `const v = 123; + +echo(v); +`; diff --git a/test/output/vCollision.js b/test/output/vCollision.js new file mode 100644 index 0000000..37ada27 --- /dev/null +++ b/test/output/vCollision.js @@ -0,0 +1,4 @@ +const v = 123; + +//➜ 123 +echo(v);