pub enum JsExpr {
Show 15 variants
Lit(JsLit),
Var(String),
Call(Box<JsExpr>, Vec<JsExpr>),
Method(Box<JsExpr>, String, Vec<JsExpr>),
Field(Box<JsExpr>, String),
Index(Box<JsExpr>, Box<JsExpr>),
Arrow(Vec<String>, Box<JsStmt>),
Ternary(Box<JsExpr>, Box<JsExpr>, Box<JsExpr>),
BinOp(String, Box<JsExpr>, Box<JsExpr>),
UnOp(String, Box<JsExpr>),
Await(Box<JsExpr>),
New(String, Vec<JsExpr>),
Spread(Box<JsExpr>),
Object(Vec<(String, JsExpr)>),
Array(Vec<JsExpr>),
}Expand description
JavaScript expression for code generation.
Variants§
Lit(JsLit)
A literal value: 42n, "hello", true, etc.
Var(String)
A variable identifier: x, _t0, Nat_add
Call(Box<JsExpr>, Vec<JsExpr>)
A function call: f(a, b, c)
Method(Box<JsExpr>, String, Vec<JsExpr>)
A method call: obj.method(a, b)
Field(Box<JsExpr>, String)
Property access: obj.field
Index(Box<JsExpr>, Box<JsExpr>)
Array index: arr[i]
Arrow(Vec<String>, Box<JsStmt>)
Arrow function: (x, y) => { stmts }
Ternary(Box<JsExpr>, Box<JsExpr>, Box<JsExpr>)
Ternary expression: cond ? then_expr : else_expr
BinOp(String, Box<JsExpr>, Box<JsExpr>)
Binary operator: lhs + rhs, a === b, etc.
UnOp(String, Box<JsExpr>)
Unary operator: !x, -n, typeof x
Await(Box<JsExpr>)
Await expression: await promise
New(String, Vec<JsExpr>)
Constructor call: new MyClass(a, b)
Spread(Box<JsExpr>)
Spread expression: ...arr
Object(Vec<(String, JsExpr)>)
Object literal: { key: val, ... }
Array(Vec<JsExpr>)
Array literal: [a, b, c]
Trait Implementations§
impl StructuralPartialEq for JsExpr
Auto Trait Implementations§
impl Freeze for JsExpr
impl RefUnwindSafe for JsExpr
impl Send for JsExpr
impl Sync for JsExpr
impl Unpin for JsExpr
impl UnsafeUnpin for JsExpr
impl UnwindSafe for JsExpr
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more