initializers.l0

initializers.l0

Module: backend.initializers

Source: compiler/stage2_l0/src/backend/initializers.l0 Language: Dea/L0

Imports / Includes

  • backend.state
  • types
  • symbols
  • signatures
  • c_emitter.values
  • backend.lowering
  • c_emitter.names
  • c_emitter.state
  • c_emitter.types
  • ast
  • std.vector

Symbols

Function be_emit_bare_variant_static_initializer

1
func be_emit_bare_variant_static_initializer(self: Backend*, expr_id: ExprId, expected_type: Type*) -> string

Emit a bare zero-field enum variant as a static initializer.

Parameters:

  • self: Backend state to inspect.
  • expr_id: Var-ref expression id.
  • expected_type: Resolved binding type.

Returns: Static enum initializer, or an ICE string when invariants are broken.

Function be_is_static_let_initializer

1
func be_is_static_let_initializer(self: Backend*, expr_id: ExprId) -> bool

Check whether an expression belongs to the supported static-initializer subset.

Parameters:

  • self: Backend state to inspect.
  • expr_id: Expression id to inspect.

Returns: true when the expression can be emitted at C file scope.

Function be_static_variant_symbol

1
func be_static_variant_symbol(self: Backend*, expr_id: ExprId) -> Symbol*?

Resolve the enum-variant symbol named by one static constructor expression.

Parameters:

  • self: Backend state to inspect.
  • expr_id: Bare or called variant constructor expression.

Returns: Resolved variant symbol, or null when the expression is not a variant constructor.

Function be_emit_static_ord_initializer

1
func be_emit_static_ord_initializer(self: Backend*, expr_id: ExprId) -> string

Emit a file-scope ord initializer as a direct C enum-tag constant.

Parameters:

  • self: Backend state to inspect.
  • expr_id: Static ord call expression.

Returns: C99 constant expression for the resolved variant tag.

Function be_emit_let_initializer

1
func be_emit_let_initializer(self: Backend*, expr_id: ExprId, expected_type: Type*) -> string

Emit a constant initializer for a top-level let .

Parameters:

  • self: Backend state to inspect.
  • expr_id: Expression id to lower.
  • expected_type: Resolved let type.

Returns: Constant initializer expression.

Function be_emit_const_constructor

1
func be_emit_const_constructor(self: Backend*, expr_id: ExprId, expected_type: Type*) -> string

Emit a constant constructor initializer for a top-level let .

Parameters:

  • self: Backend state to inspect.
  • expr_id: Call expression id.
  • expected_type: Expected constructed type.

Returns: Constant initializer expression.