diff --git a/implementations/javascript/packages/core/src/pexpr.ts b/implementations/javascript/packages/core/src/pexpr.ts index c3a6aff..e5be35e 100644 --- a/implementations/javascript/packages/core/src/pexpr.ts +++ b/implementations/javascript/packages/core/src/pexpr.ts @@ -282,7 +282,7 @@ export class Reader extends ReaderBase { export interface AsPreservesOptions { onGroup?: (g: Positioned) => Value; - onEmbedded?: (v: Value) => Value; + onEmbedded?: (e: Positioned, walk: (p: Positioned) => Value) => Value; error?: (tag: string, position: Position) => Value; } @@ -302,9 +302,8 @@ export function asPreserves( if (p.item instanceof Punct) { return error('invalid-punctuation', p.position); } else if (p.item instanceof Embedded) { - const e = walk({ position: p.position, item: p.item.expr }); if (options.onEmbedded) { - return options.onEmbedded(e); + return options.onEmbedded({ position: p.position, item: p.item.expr }, walk); } else { return error('unexpected-embedded', p.position); }