Fixed block statements

This commit is contained in:
2026-05-22 03:00:43 +02:00
parent b7cfa9fbe6
commit d33763be2e
4 changed files with 23 additions and 7 deletions
+7
View File
@@ -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 {
+1 -1
View File
@@ -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}");
}
+2 -2
View File
@@ -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)
}
}
}
+10 -1
View File
@@ -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,
}
}
}