Skip to main content

lower_store_field_shape_ir

Function lower_store_field_shape_ir 

Source
pub fn lower_store_field_shape_ir(
    f: &StoreField,
    program: &CheckedProgram,
) -> StoreFieldIr
Expand description

A store field’s storage shape — its Cell/Map/Set/Cache/Log kind and @indexed keys (via store_field_kind_and_indexed), with init always None. This is the entry point emit_agent’s own state section actually needs; a Cell field’s zero/initial-value expression is rendered by the emitter from the AST, never lowered here. (An init-lowering sibling existed until Slice D1 of #1542; it lowered the initialiser through the deleted expression lowerer and had no caller.)

The field’s own type reference falls back to Ty::Unit on a resolve miss rather than panicking — no checker pass validates a store field’s type reference, only its shape and annotation legality, so store x: Cell[Bogus] certifies today and this reader must not turn that into an ICE (store_field_falls_back_to_unit_on_an_unresolvable_type_like_the_checker_does pins it).