From 4def6db820fc766492ebfbab5dcf20f0327c1291 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Tue, 16 Jun 2026 16:19:28 +0200 Subject: [PATCH] Moved ovveride to after params --- crates/parser/src/grammar.pest | 2 +- crates/parser/src/parser/items/function.rs | 3 ++- mist-test/src/items/class_test.mist | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/parser/src/grammar.pest b/crates/parser/src/grammar.pest index 5af7c30..561c979 100644 --- a/crates/parser/src/grammar.pest +++ b/crates/parser/src/grammar.pest @@ -333,7 +333,7 @@ trait_decl = { override_kw = { "override" ~ ("(" ~ expr_path ~ ")")? } function_decl = { - visibility? ~ override_kw? ~ "fn" ~ ("void" | type_expr) ~ identifier ~ generics_decl? ~ "(" ~ method_args ~ ")" ~ (block | semicolon) + visibility? ~ "fn" ~ ("void" | type_expr) ~ identifier ~ generics_decl? ~ "(" ~ method_args ~ ")" ~ override_kw? ~ (block | semicolon) } // ====================================================== diff --git a/crates/parser/src/parser/items/function.rs b/crates/parser/src/parser/items/function.rs index ef37078..10b519e 100644 --- a/crates/parser/src/parser/items/function.rs +++ b/crates/parser/src/parser/items/function.rs @@ -13,7 +13,6 @@ impl<'a> TryFrom> for FunctionDecl { ast_ensure!(pair, Rule::function_decl => { let mut inner = pair.into_inner(); let visibility = Visibility::try_from(&mut inner); - let is_override = consume_rule(&mut inner, Rule::override_kw).map(Override::try_from).transpose(); let return_type = consume_rule(&mut inner, Rule::type_expr) .map(TypeExpr::try_from) @@ -64,6 +63,8 @@ impl<'a> TryFrom> for FunctionDecl { }) .unwrap_or_else(|| Ok(ParamList(self_param.into_iter().collect()))); + let is_override = consume_rule(&mut inner, Rule::override_kw).map(Override::try_from).transpose(); + let body = inner.next().map(Block::try_from).transpose(); ast_expr!(Self { diff --git a/mist-test/src/items/class_test.mist b/mist-test/src/items/class_test.mist index 3cb41b9..3d7ab57 100644 --- a/mist-test/src/items/class_test.mist +++ b/mist-test/src/items/class_test.mist @@ -34,7 +34,7 @@ pub class Dog : Mammal { super = Super::new(); } - pub override(Animal) fn String speak(*self) { + pub fn String speak(*self) override(Animal) { "Woof!".to_string() }