use proc_macro2::Span;
use super::KernelType;
use super::expr::KernelExpr;
#[derive(Debug, Clone)]
#[allow(dead_code)] pub enum KernelStmt {
Let {
name: String,
ty: Option<KernelType>,
value: KernelExpr,
span: Span,
},
Assign {
name: String,
value: KernelExpr,
span: Span,
},
IndexAssign {
array: String,
index: KernelExpr,
value: KernelExpr,
span: Span,
},
If {
condition: KernelExpr,
then_body: Vec<KernelStmt>,
else_body: Option<Vec<KernelStmt>>,
span: Span,
},
For {
var: String,
start: KernelExpr,
end: KernelExpr,
body: Vec<KernelStmt>,
span: Span,
},
While {
condition: KernelExpr,
body: Vec<KernelStmt>,
span: Span,
},
SharedMemDecl {
name: String,
elem_ty: KernelType,
count: usize,
span: Span,
},
Expr(KernelExpr, Span),
}