Skip to content

Add aggregate zero initializer - #7

Merged
miselin merged 3 commits into
mainfrom
agent/zero-initializer
Jul 28, 2026
Merged

Add aggregate zero initializer#7
miselin merged 3 commits into
mainfrom
agent/zero-initializer

Conversation

@miselin

@miselin miselin commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • add zero as a contextually typed aggregate expression
  • support arrays, structs, vectors, and matrices in local, return, and global initializer contexts
  • lower aggregate zero values directly to LLVM zero constants
  • document the distinction between an external variable declaration and a zero-filled definition

Why

The DOOM port exposed a language-level gap after initializerless pub state declarations were corrected to remain external declarations: Haven had no concise way to request an owned, recursively zero-filled aggregate definition.

This change keeps those meanings explicit:

pub state i32[4] supplied_elsewhere;
pub state i32[4] owned_here = zero;

zero has its own CST, surface AST, and core AST form rather than overloading an empty brace initializer. It requires an expected aggregate type and rejects scalar, enum, and untyped uses.

Impact

This is additive syntax, with zero becoming a reserved Haven keyword. C imports rename conflicting identifiers through the existing keyword handling.

Validation

  • dune build
  • dune runtest
  • parser coverage for zero
  • typing coverage for valid aggregate targets and invalid scalar, enum, and untyped targets
  • LLVM coverage for global arrays, structs with pointer fields, and local arrays

@miselin miselin added enhancement New feature or request ai-generated This PR/code was majority generated by AI and may require deeper review. labels Jul 27, 2026
@miselin
miselin marked this pull request as ready for review July 27, 2026 19:06
@miselin
miselin merged commit cae5799 into main Jul 28, 2026
6 checks passed
@miselin
miselin deleted the agent/zero-initializer branch July 28, 2026 05:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-generated This PR/code was majority generated by AI and may require deeper review. enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant