From 4112dcac3b30312b7f96dfcc9d43eee1a640d6d4 Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Thu, 21 May 2026 14:38:37 +0200 Subject: [PATCH] Improved match statements --- mist-test/src/logger.mist | 15 +++++---------- parser/src/ast/statement.rs | 2 +- parser/src/grammar.pest | 2 +- parser/src/parser/common/statement.rs | 2 +- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/mist-test/src/logger.mist b/mist-test/src/logger.mist index ab194cd..ca23341 100644 --- a/mist-test/src/logger.mist +++ b/mist-test/src/logger.mist @@ -13,18 +13,13 @@ pub enum LogLevel { impl fmt::Display for LogLevel { fmt::Result fmt(self*, Formatter<'_> mut* f) { - match (self) { - LogLevel::Info => { - return write!(f, "[INFO]"); - } + return match (self) { + LogLevel::Info => write!(f, "[INFO]"); - LogLevel::Warning => { - return write!(f, "[WARN]"); - } + LogLevel::Warning => write!(f, "[WARN]"); - LogLevel::Error => { - return write!(f, "[ERROR]"); - } + LogLevel::Error => write!(f, "[ERROR]"); + } } } diff --git a/parser/src/ast/statement.rs b/parser/src/ast/statement.rs index 89a2d44..a95429c 100644 --- a/parser/src/ast/statement.rs +++ b/parser/src/ast/statement.rs @@ -30,7 +30,7 @@ pub enum Statement { iterator: Expression, body: Box, }, - Match(Expression, Vec<(Vec, Block)>), + Match(Expression, Vec<(Vec, Expression)>), Return(Option), Break, diff --git a/parser/src/grammar.pest b/parser/src/grammar.pest index 3b08ce8..8e03ebc 100644 --- a/parser/src/grammar.pest +++ b/parser/src/grammar.pest @@ -419,7 +419,7 @@ for_stmt = { pattern_list = { pattern ~ ("|" ~ pattern)* } match_item = { - pattern_list ~ "=>" ~ block + pattern_list ~ "=>" ~ statement } match_stmt = { diff --git a/parser/src/parser/common/statement.rs b/parser/src/parser/common/statement.rs index 516d32d..6c8bfa2 100644 --- a/parser/src/parser/common/statement.rs +++ b/parser/src/parser/common/statement.rs @@ -95,7 +95,7 @@ impl<'a> TryFrom> for Statement { let mut match_inner = match_itms.into_inner(); Ok(( collect_recovered(match_inner.next().unwrap().into_inner()).get()?, - Block::try_from(match_inner.next().unwrap()).get()?, + Expression::try_from(match_inner.next().unwrap()).get()?, )) }) .collect::>>(),