[][src]Trait weld::ast::NewExpr

pub trait NewExpr {
    fn new(kind: ExprKind) -> Result<Expr, WeldCompileError>;
fn new_with_type(kind: ExprKind, ty: Type) -> Result<Expr, WeldCompileError>;
fn new_literal(kind: LiteralKind) -> Result<Expr, WeldCompileError>;
fn new_ident(symbol: Symbol, ty: Type) -> Result<Expr, WeldCompileError>;
fn new_bin_op(
        kind: BinOpKind,
        left: Expr,
        right: Expr
    ) -> Result<Expr, WeldCompileError>;
fn new_unary_op(
        kind: UnaryOpKind,
        value: Expr
    ) -> Result<Expr, WeldCompileError>;
fn new_cast(kind: ScalarKind, expr: Expr) -> Result<Expr, WeldCompileError>;
fn new_negate(expr: Expr) -> Result<Expr, WeldCompileError>;
fn new_not(expr: Expr) -> Result<Expr, WeldCompileError>;
fn new_broadcast(expr: Expr) -> Result<Expr, WeldCompileError>;
fn new_to_vec(expr: Expr) -> Result<Expr, WeldCompileError>;
fn new_make_struct(exprs: Vec<Expr>) -> Result<Expr, WeldCompileError>;
fn new_make_vector(exprs: Vec<Expr>) -> Result<Expr, WeldCompileError>;
fn new_make_vector_typed(
        exprs: Vec<Expr>,
        ty: Type
    ) -> Result<Expr, WeldCompileError>;
fn new_get_field(expr: Expr, index: u32) -> Result<Expr, WeldCompileError>;
fn new_length(expr: Expr) -> Result<Expr, WeldCompileError>;
fn new_lookup(data: Expr, index: Expr) -> Result<Expr, WeldCompileError>;
fn new_opt_lookup(data: Expr, index: Expr) -> Result<Expr, WeldCompileError>;
fn new_key_exists(data: Expr, key: Expr) -> Result<Expr, WeldCompileError>;
fn new_slice(
        data: Expr,
        index: Expr,
        size: Expr
    ) -> Result<Expr, WeldCompileError>;
fn new_sort(data: Expr, cmpfunc: Expr) -> Result<Expr, WeldCompileError>;
fn new_let(
        name: Symbol,
        value: Expr,
        body: Expr
    ) -> Result<Expr, WeldCompileError>;
fn new_if(
        cond: Expr,
        on_true: Expr,
        on_false: Expr
    ) -> Result<Expr, WeldCompileError>;
fn new_select(
        cond: Expr,
        on_true: Expr,
        on_false: Expr
    ) -> Result<Expr, WeldCompileError>;
fn new_lambda(
        params: Vec<Parameter>,
        body: Expr
    ) -> Result<Expr, WeldCompileError>;
fn new_apply(
        func: Expr,
        params: Vec<Expr>
    ) -> Result<Expr, WeldCompileError>;
fn new_cudf(
        sym_name: String,
        args: Vec<Expr>,
        return_ty: Type
    ) -> Result<Expr, WeldCompileError>;
fn new_new_builder(
        kind: BuilderKind,
        expr: Option<Expr>
    ) -> Result<Expr, WeldCompileError>;
fn new_for(
        iters: Vec<Iter>,
        builder: Expr,
        func: Expr
    ) -> Result<Expr, WeldCompileError>;
fn new_merge(builder: Expr, value: Expr) -> Result<Expr, WeldCompileError>;
fn new_result(builder: Expr) -> Result<Expr, WeldCompileError>;
fn new_serialize(value: Expr) -> Result<Expr, WeldCompileError>;
fn new_deserialize(value: Expr, ty: Type) -> Result<Expr, WeldCompileError>; }

A trait for initializing expressions with type inference.

This trait provides constructors with type checking to expression variants. The type of each expression is inferred locally based on its immediate children. Each function returns an error if a type error is detected.

The new and new_with_type functions take ExprKind values directly and perform type checking and inference on the built expression.

This trait is re-exported as part of the ast module and should not need to be imported directly.

Required methods

fn new(kind: ExprKind) -> Result<Expr, WeldCompileError>

Creates a new expression with the given kind.

Returns an error if types in the kind mismatch.

fn new_with_type(kind: ExprKind, ty: Type) -> Result<Expr, WeldCompileError>

Creates new expression with the given kind and type.

Returns an error if types in the kind mismatch.

fn new_literal(kind: LiteralKind) -> Result<Expr, WeldCompileError>

Creates a new literal expression.

fn new_ident(symbol: Symbol, ty: Type) -> Result<Expr, WeldCompileError>

Creates a new typed identifier expression.

fn new_bin_op(
    kind: BinOpKind,
    left: Expr,
    right: Expr
) -> Result<Expr, WeldCompileError>

Creates a new binary operator expression.

fn new_unary_op(
    kind: UnaryOpKind,
    value: Expr
) -> Result<Expr, WeldCompileError>

Creates a new unary operator expression.

fn new_cast(kind: ScalarKind, expr: Expr) -> Result<Expr, WeldCompileError>

Creates a new cast operator expression.

fn new_negate(expr: Expr) -> Result<Expr, WeldCompileError>

Creates a new negation operator expression.

fn new_not(expr: Expr) -> Result<Expr, WeldCompileError>

Creates a new not operator expression.

fn new_broadcast(expr: Expr) -> Result<Expr, WeldCompileError>

Creates a new scalar to SIMD broadcast expression.

fn new_to_vec(expr: Expr) -> Result<Expr, WeldCompileError>

Creates a new dictionary to vector expression.

fn new_make_struct(exprs: Vec<Expr>) -> Result<Expr, WeldCompileError>

Creates a new struct literal expression.

fn new_make_vector(exprs: Vec<Expr>) -> Result<Expr, WeldCompileError>

Creates a new vector literal expression.

fn new_make_vector_typed(
    exprs: Vec<Expr>,
    ty: Type
) -> Result<Expr, WeldCompileError>

Creates a new typed vector literal expression.

This version can be used if exprs is empty and the type cannot be inferred with new_make_vector.

fn new_get_field(expr: Expr, index: u32) -> Result<Expr, WeldCompileError>

Creates a new field access expression on struct.

fn new_length(expr: Expr) -> Result<Expr, WeldCompileError>

Creates a new vector length expression.

fn new_lookup(data: Expr, index: Expr) -> Result<Expr, WeldCompileError>

Creates a new vector or dictionary lookup expression.

fn new_opt_lookup(data: Expr, index: Expr) -> Result<Expr, WeldCompileError>

Creates a new dictionary optional lookup expression.

fn new_key_exists(data: Expr, key: Expr) -> Result<Expr, WeldCompileError>

Creates a new dictionary key exists expression.

fn new_slice(
    data: Expr,
    index: Expr,
    size: Expr
) -> Result<Expr, WeldCompileError>

Creates a new vector slicing expression.

fn new_sort(data: Expr, cmpfunc: Expr) -> Result<Expr, WeldCompileError>

Creates a new vector sort expression.

fn new_let(
    name: Symbol,
    value: Expr,
    body: Expr
) -> Result<Expr, WeldCompileError>

Creates a new let expression.

fn new_if(
    cond: Expr,
    on_true: Expr,
    on_false: Expr
) -> Result<Expr, WeldCompileError>

Creates a new if expression.

fn new_select(
    cond: Expr,
    on_true: Expr,
    on_false: Expr
) -> Result<Expr, WeldCompileError>

Creates a new select expression.

fn new_lambda(
    params: Vec<Parameter>,
    body: Expr
) -> Result<Expr, WeldCompileError>

Creates a new lambda expression.

fn new_apply(func: Expr, params: Vec<Expr>) -> Result<Expr, WeldCompileError>

Creates a new apply expression.

fn new_cudf(
    sym_name: String,
    args: Vec<Expr>,
    return_ty: Type
) -> Result<Expr, WeldCompileError>

Creates a new CUDF expression.

fn new_new_builder(
    kind: BuilderKind,
    expr: Option<Expr>
) -> Result<Expr, WeldCompileError>

Creates a builder initialization expression.

fn new_for(
    iters: Vec<Iter>,
    builder: Expr,
    func: Expr
) -> Result<Expr, WeldCompileError>

Creates a new parallel for loop expression.

fn new_merge(builder: Expr, value: Expr) -> Result<Expr, WeldCompileError>

Creates a new merge expression.

fn new_result(builder: Expr) -> Result<Expr, WeldCompileError>

Creates a new result expression.

fn new_serialize(value: Expr) -> Result<Expr, WeldCompileError>

Creates a new serialize expression.

fn new_deserialize(value: Expr, ty: Type) -> Result<Expr, WeldCompileError>

Creates a new deserialize expression.

Loading content...

Implementors

impl NewExpr for Expr[src]

Loading content...