geam 0.1.0

Experimental Rust-embedded execution runtime for typed Gleam programs
use super::{
    BitArrayListExpr, BoolListExpr, CustomListExpr, ExternalListExpr, FloatListExpr,
    FunctionListExpr, GenericListExpr, IntListExpr, ListListExpr, NilListExpr,
    ParameterListListExpr, StringListExpr, TupleListExpr, UtfCodepointListExpr,
};
use crate::plan::{
    BitArrayListLocalId, BoolListLocalId, CustomListLocalId, CustomType, ExternalListLocalId,
    ExternalType, FloatListLocalId, FunctionListLocalId, FunctionType, GenericListLocalId,
    IntListLocalId, ListListLocalId, NilListLocalId, StringListLocalId, TupleListLocalId,
    TypeParameterId, UtfCodepointListLocalId, ValueType,
};

#[derive(Debug, Clone, PartialEq)]
pub(crate) enum ListLocalExpr {
    Generic {
        local: GenericListLocalId,
        parameter: TypeParameterId,
        value: GenericListExpr,
    },
    ParameterList {
        local: ListListLocalId,
        parameter: TypeParameterId,
        value: ParameterListListExpr,
    },
    Int {
        local: IntListLocalId,
        value: IntListExpr,
    },
    String {
        local: StringListLocalId,
        value: StringListExpr,
    },
    BitArray {
        local: BitArrayListLocalId,
        value: BitArrayListExpr,
    },
    UtfCodepoint {
        local: UtfCodepointListLocalId,
        value: UtfCodepointListExpr,
    },
    Custom {
        local: CustomListLocalId,
        item_type: CustomType,
        value: CustomListExpr,
    },
    External {
        local: ExternalListLocalId,
        item_type: ExternalType,
        value: ExternalListExpr,
    },
    Float {
        local: FloatListLocalId,
        value: FloatListExpr,
    },
    Bool {
        local: BoolListLocalId,
        value: BoolListExpr,
    },
    Nil {
        local: NilListLocalId,
        value: NilListExpr,
    },
    Tuple {
        local: TupleListLocalId,
        item_type: Vec<ValueType>,
        value: TupleListExpr,
    },
    List {
        local: ListListLocalId,
        item_type: Box<ValueType>,
        value: ListListExpr,
    },
    Function {
        local: FunctionListLocalId,
        item_type: FunctionType,
        value: FunctionListExpr,
    },
}