Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 5 Nov 2026. What's built · Install 0.3.0
jadpo
ReferenceErrors

ErrorsValues and types · rule

type.missing_field

On this page

An object value is built without one of the fields its type declares.

Area 2, Values and types; not declinable; the next step is usually the agent's.

Why Jadpo refuses it

An object value is written with its type name and every field, so a value always has what its type promises and nothing reads a field that was never set. A field that may hold nothing is declared T? and still given, as none, so leaving it empty is a choice you can see.

What it looks like

main.jadpo:

example
type Receipt = Output {    email: Email}function incomplete_receipt() -> Receipt {    return Receipt {}}
jadpo checkcheck failed: 1 error, 1 file

error Receipt is missing email

--> main.jadpo:6:12

  |6 |     return Receipt {}  |            ^^^^^^^ fields missing
reason
Every field of Receipt is given when a value is built; a field that may be absent is declared T? and given as none.
next
Add email: ... to the block (agent)
rule
type.missing_field
help
https://jadpo.dev/docs/errors/type.missing_field

(agent) at the end of the next: line means your coding agent can make the fix itself.

How to fix it

If the value has the field, give it in the block:

example
function incomplete_receipt(email: Email) -> Receipt {    return Receipt {        email: email    }}

Every Receipt now carries the email it is sent to.

If a receipt may have no email, declare the field Email? and give it as none:

example
type Receipt = Output {    email: Email?}function incomplete_receipt() -> Receipt {    return Receipt {        email: none    }}

Code that reads email now handles both cases, usually with match.

Markdown for agents: /docs/errors/type.missing_field.md.Built from Jadpo main at aee2e8f.