pub fn lower_store_field_shape_ir(
f: &StoreField,
program: &CheckedProgram,
) -> StoreFieldIrExpand description
#1187’s Agent state-field slice: lower_store_field_ir’s shape-only
sibling — same kind/indexed (via store_field_kind_and_indexed),
init always None. This is the entry point emit_agent’s own state
section actually needs: a field’s storage shape (its Cell/Map/
Set/Cache/Log kind and @indexed keys), never its Cell zero/
initial value expression. Deliberately never lowers init, unlike
lower_store_field_ir — a Cell field’s initializer can be an
is-expression (= x is SomeVariant), which still hits ExprKind::Is’s
own todo!() a few hundred lines below (1029_agent_static_init_hoist’s
store active: Cell[Bool] = if true { 5 is PositiveInt } else { false }
hits exactly this on lower_store_field_ir’s own init arm). The
sibling = None shape (223_store_cell_agent’s own store paymentRef: Cell[Option[AuthId]] = None) no longer needs this workaround as of
#1225’s own ADR — lower_store_field_ir lowers it directly now
(store_field_cell_option_init_none_lowers_without_panicking). This
function’s callers never need init at all regardless, so neither gap
is a risk for them.