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

#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.