diff --git a/tools/push3-transpiler/src/transpiler.ts b/tools/push3-transpiler/src/transpiler.ts index 4f13c17..9924769 100644 --- a/tools/push3-transpiler/src/transpiler.ts +++ b/tools/push3-transpiler/src/transpiler.ts @@ -391,10 +391,15 @@ export function transpile(program: Node): TranspileResult { processItems(program.items, state); // Pop 4 outputs: top → ci, then anchorShare, anchorWidth, discoveryDepth. - const ciVar = state.dStack.pop() ?? '0'; - const anchorShareVar = state.dStack.pop() ?? '0'; - const anchorWidthVar = state.dStack.pop() ?? '0'; - const discoveryDepthVar = state.dStack.pop() ?? '0'; + if (state.dStack.length < 4) { + throw new Error( + `Program must leave exactly 4 values on the DYADIC stack; found ${state.dStack.length}`, + ); + } + const ciVar = state.dStack.pop()!; + const anchorShareVar = state.dStack.pop()!; + const anchorWidthVar = state.dStack.pop()!; + const discoveryDepthVar = state.dStack.pop()!; return { functionBody: state.lines, ciVar, anchorShareVar, anchorWidthVar, discoveryDepthVar }; }