pub enum CSharpExpr {
Show 22 variants
Lit(CSharpLit),
Var(String),
BinOp {
op: String,
lhs: Box<CSharpExpr>,
rhs: Box<CSharpExpr>,
},
UnaryOp {
op: String,
operand: Box<CSharpExpr>,
},
Call {
callee: Box<CSharpExpr>,
args: Vec<CSharpExpr>,
},
MethodCall {
receiver: Box<CSharpExpr>,
method: String,
type_args: Vec<CSharpType>,
args: Vec<CSharpExpr>,
},
New {
ty: CSharpType,
args: Vec<CSharpExpr>,
},
Lambda {
params: Vec<(String, Option<CSharpType>)>,
body: Box<CSharpExpr>,
},
Ternary {
cond: Box<CSharpExpr>,
then_expr: Box<CSharpExpr>,
else_expr: Box<CSharpExpr>,
},
Null,
Default(Option<CSharpType>),
NameOf(String),
TypeOf(CSharpType),
Await(Box<CSharpExpr>),
Throw(Box<CSharpExpr>),
Is {
expr: Box<CSharpExpr>,
pattern: String,
},
As {
expr: Box<CSharpExpr>,
ty: CSharpType,
},
Member(Box<CSharpExpr>, String),
Index(Box<CSharpExpr>, Box<CSharpExpr>),
SwitchExpr {
scrutinee: Box<CSharpExpr>,
arms: Vec<CSharpSwitchArm>,
},
Interpolated(Vec<CSharpInterpolationPart>),
CollectionExpr(Vec<CSharpExpr>),
}Expand description
C# expression AST for code generation.
Variants§
Lit(CSharpLit)
A literal value: 42, "hello", true, null
Var(String)
A variable or identifier: x, myVar, MyType
BinOp
Binary operator: lhs + rhs, a == b
UnaryOp
Unary operator: !x, -n, ~flags
Call
Static/free function call: Math.Abs(x), Foo(a, b)
MethodCall
Method call on a receiver: list.Where(pred)
New
Object creation: new Foo(a, b)
Lambda
Lambda / anonymous function: x => x + 1 or (x, y) => x + y
Ternary
Ternary conditional: cond ? then_expr : else_expr
Null
null literal (convenience alias)
Default(Option<CSharpType>)
default(T) or default
NameOf(String)
nameof(x) expression
TypeOf(CSharpType)
typeof(T) expression
Await(Box<CSharpExpr>)
await expr
Throw(Box<CSharpExpr>)
throw new Exception(msg) as expression (C# 7+)
Is
expr is Pattern / expr is Type varName
As
expr as Type
Member(Box<CSharpExpr>, String)
Member access: obj.Field
Index(Box<CSharpExpr>, Box<CSharpExpr>)
Index access: arr[idx]
SwitchExpr
Switch expression: expr switch { arm1, arm2, ... }
Interpolated(Vec<CSharpInterpolationPart>)
String interpolation: $"Hello {name}!"
CollectionExpr(Vec<CSharpExpr>)
Collection expression: [a, b, c] (C# 12)
Trait Implementations§
Source§impl Clone for CSharpExpr
impl Clone for CSharpExpr
Source§fn clone(&self) -> CSharpExpr
fn clone(&self) -> CSharpExpr
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more