diff --git a/packages/bugc/src/evmgen/call-contexts.test.ts b/packages/bugc/src/evmgen/call-contexts.test.ts index 43f1b76cb..c05f58708 100644 --- a/packages/bugc/src/evmgen/call-contexts.test.ts +++ b/packages/bugc/src/evmgen/call-contexts.test.ts @@ -126,7 +126,8 @@ code { // Should have data pointer to return value at // TOS (stack slot 0) - expect(ret.data.pointer).toEqual({ + expect(ret.data).toBeDefined(); + expect(ret.data!.pointer).toEqual({ location: "stack", slot: 0, }); diff --git a/packages/format/src/types/program/context.ts b/packages/format/src/types/program/context.ts index 9388fea7b..104f27196 100644 --- a/packages/format/src/types/program/context.ts +++ b/packages/format/src/types/program/context.ts @@ -239,7 +239,7 @@ export namespace Context { export namespace Return { export interface Info extends Function.Identity { - data: Function.PointerRef; + data?: Function.PointerRef; success?: Function.PointerRef; } @@ -247,8 +247,7 @@ export namespace Context { Function.isIdentity(value) && typeof value === "object" && !!value && - "data" in value && - Function.isPointerRef(value.data) && + (!("data" in value) || Function.isPointerRef(value.data)) && (!("success" in value) || Function.isPointerRef(value.success)); } diff --git a/packages/web/spec/program/context/function/return.mdx b/packages/web/spec/program/context/function/return.mdx index e03668a1b..47279cea3 100644 --- a/packages/web/spec/program/context/function/return.mdx +++ b/packages/web/spec/program/context/function/return.mdx @@ -9,8 +9,8 @@ import SchemaViewer from "@site/src/components/SchemaViewer"; A return context marks an instruction associated with a successful function return. It extends the [function identity](/spec/program/context/function) schema with -a pointer to the return data and, for external calls, the -success status. +an optional pointer to the return data and, for external calls, +the success status.