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
Synthesised class methods are `async` and an associated cross-method
call lowers to `(await this.m(...))`. But the expression-position IIFE
wrappers (block / try / match / let / return) were always plain
`(() => { ... })()` — so a contained `await` produced
`SyntaxError: Unexpected reserved word` (hit by ubicity's
`loadAllExperiences`: a try whose body `await this.ensureDirectories()`).
Add `ctx.in_async` (set while emitting a synthesised `async` method
body) and an `iife` helper: in async context the wrapper is
`(await (async () => { ... })())`, otherwise the plain form. Applied to
gen_block_expr / gen_try / gen_match / ExprLet / ExprReturn /
ExprUnsafe. Free functions, constructors and module top-level stay
non-async (they never emit an awaited associated call).
Verified: affinescript `dune build` clean, `dune runtest` 214 tests /
same 2 pre-existing E2E Node-CJS vscode failures (zero regressions),
5 Deno-ESM harnesses green; the regenerated ubicity src/storage.js now
parses and `deno task test` is **44 passed / 0 failed** (the full suite,
incl. the .test.js variants that import the migrated storage.js via
mapper/privacy/export).
Refs #122 (follow-up to #123/#125; completes the ubicity#30 consumer).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
0 commit comments