Current state
Core empty structural behavior is implemented and accepted:
let marker: struct {} = .{};
Anonymous struct {} types and .{} values parse, typecheck, lower through HIR/MIR/LLVM, link, and run. Dedicated x_test/runtime_empty_struct coverage exercises locals, parameters, returns, aggregate fields, fixed arrays, and references. Named empty structs are also covered by x_test/runtime_interface_nested.
Empty structural types remain structural values, not nominal namespaces. Empty enum payload schemas remain distinct from payloadless enum cases.
Remaining scope
- Add explicit backend layout and ABI assertions for 32-bit and 64-bit targets.
- Verify constants, statics, owned pointers, dynamic arrays/slices, and address identity where applicable.
- Prove ownership and cleanup plans add no phantom drop work.
- Reject or explicitly define recursive anonymous by-value shapes before lowering.
- Preserve stable type text, fingerprints, interning, hover, and diagnostics while extending this matrix.
Validation already completed
GOCACHE=/tmp/peeper-go-cache CCACHE_DISABLE=1 scripts/build.sh
GOCACHE=/tmp/peeper-go-cache CCACHE_DISABLE=1 PEEPER_BIN="$PWD/build/bin/peeper" go test -count=1 ./x_test
This issue now tracks edge coverage only; it no longer claims core empty structs are unsupported.
Current state
Core empty structural behavior is implemented and accepted:
Anonymous
struct {}types and.{}values parse, typecheck, lower through HIR/MIR/LLVM, link, and run. Dedicatedx_test/runtime_empty_structcoverage exercises locals, parameters, returns, aggregate fields, fixed arrays, and references. Named empty structs are also covered byx_test/runtime_interface_nested.Empty structural types remain structural values, not nominal namespaces. Empty enum payload schemas remain distinct from payloadless enum cases.
Remaining scope
Validation already completed
GOCACHE=/tmp/peeper-go-cache CCACHE_DISABLE=1 scripts/build.shGOCACHE=/tmp/peeper-go-cache CCACHE_DISABLE=1 PEEPER_BIN="$PWD/build/bin/peeper" go test -count=1 ./x_testThis issue now tracks edge coverage only; it no longer claims core empty structs are unsupported.