Fixed block statements
This commit is contained in:
@@ -100,12 +100,19 @@ impl GenRust for Expression {
|
||||
}
|
||||
}
|
||||
|
||||
if let Expression::Statement(stmt) = self {
|
||||
if !stmt.is_block() && ensure_semicolon {
|
||||
ctx.expr_ensure_semicolon = true;
|
||||
cg.add(";");
|
||||
}
|
||||
} else {
|
||||
if ensure_semicolon {
|
||||
ctx.expr_ensure_semicolon = true;
|
||||
cg.add(";");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl GetRust for Prefix {
|
||||
fn get_rust(&self) -> String {
|
||||
|
||||
@@ -97,7 +97,7 @@ pub class Application {
|
||||
println!("{x}");
|
||||
}
|
||||
|
||||
for (usize i = 0; i < 10; i++) {
|
||||
for (var mut i = 0; i < 10; i++) {
|
||||
println!("{i}");
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ pub enum LogLevel {
|
||||
|
||||
impl fmt::Display for LogLevel {
|
||||
fmt::Result fmt(self*, Formatter<'_> mut* f) {
|
||||
return match (self) {
|
||||
match (self) {
|
||||
LogLevel::Info => write!(f, "[INFO]");
|
||||
|
||||
LogLevel::Warning => write!(f, "[WARN]");
|
||||
@@ -66,7 +66,7 @@ pub class Logger {
|
||||
|
||||
impl fmt::Display {
|
||||
fmt::Result fmt(self*, Formatter<'_> mut* f) {
|
||||
return write!(f, "logger ({})", self.prefix);
|
||||
write!(f, "logger ({})", self.prefix)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,6 @@ pub struct Block(
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
pub enum Statement {
|
||||
Block(Block),
|
||||
VarDecl(VarDeclStmt),
|
||||
If {
|
||||
initial: StatementBranch,
|
||||
else_if: Vec<StatementBranch>,
|
||||
@@ -32,6 +31,7 @@ pub enum Statement {
|
||||
},
|
||||
Match(Expression, Vec<(Vec<Pattern>, Expression)>),
|
||||
|
||||
VarDecl(VarDeclStmt),
|
||||
Return(Option<Expression>),
|
||||
Break,
|
||||
Continue,
|
||||
@@ -55,3 +55,12 @@ pub struct StatementBranch {
|
||||
pub condition: Expression,
|
||||
pub body: Box<Statement>,
|
||||
}
|
||||
|
||||
impl Statement {
|
||||
pub fn is_block(&self) -> bool {
|
||||
match self {
|
||||
Self::VarDecl(_) | Self::Return(_) | Self::Break | Self::Continue => false,
|
||||
_ => true,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user