Removed varKind in favor of mutability
This commit is contained in:
+2
-9
@@ -64,7 +64,7 @@ pub enum Statement {
|
||||
|
||||
// let/const/var x = ...
|
||||
VarDecl {
|
||||
kind: VarKind,
|
||||
mutable: bool,
|
||||
name: String,
|
||||
init: Option<Expression>,
|
||||
type_: Option<TypeExpr>,
|
||||
@@ -90,7 +90,7 @@ pub enum Statement {
|
||||
|
||||
// for (...) stmt
|
||||
For {
|
||||
init: (VarKind, String, Option<Expression>),
|
||||
init: (bool, String, Option<Expression>),
|
||||
condition: Option<Expression>,
|
||||
update: Option<Box<Statement>>,
|
||||
body: Box<Statement>,
|
||||
@@ -115,10 +115,3 @@ pub enum Expression {
|
||||
postfixes: Vec<Postfix>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
pub enum VarKind {
|
||||
Let,
|
||||
Const,
|
||||
Var,
|
||||
}
|
||||
|
||||
+2
-9
@@ -188,7 +188,7 @@ impl From<pest::iterators::Pair<'_, Rule>> for Statement {
|
||||
let init = inner.next().map(Expression::from);
|
||||
|
||||
Statement::VarDecl {
|
||||
kind: VarKind::Var,
|
||||
mutable: false,
|
||||
name: name.as_str().to_string(),
|
||||
init,
|
||||
type_,
|
||||
@@ -243,19 +243,12 @@ impl From<pest::iterators::Pair<'_, Rule>> for Statement {
|
||||
Rule::var_decl => {
|
||||
let mut it = p.into_inner();
|
||||
|
||||
let kind = match it.next().unwrap().as_str() {
|
||||
"let" => VarKind::Let,
|
||||
"const" => VarKind::Const,
|
||||
"var" => VarKind::Var,
|
||||
_ => unreachable!(),
|
||||
};
|
||||
|
||||
let name = it.next().unwrap().as_str().to_string();
|
||||
let init_expr = it
|
||||
.next()
|
||||
.map(|e| Expression::from(e.into_inner().next().unwrap()));
|
||||
|
||||
(kind, name, init_expr)
|
||||
(false, name, init_expr)
|
||||
}
|
||||
_ => unimplemented!(
|
||||
"For loop init parsing not implemented yet: {:?}",
|
||||
|
||||
Reference in New Issue
Block a user