diff --git a/crates/lang/src/format.rs b/crates/lang/src/format.rs index 993796fd..ee873131 100644 --- a/crates/lang/src/format.rs +++ b/crates/lang/src/format.rs @@ -1270,6 +1270,12 @@ impl<'comments> Formatter<'comments> { } fn pattern_call_arg<'a>(&mut self, arg: &'a CallArg) -> Document<'a> { + if let (UntypedPattern::Var { name, .. }, Some(label)) = (&arg.value, &arg.label) { + if name == label { + return self.pattern(&arg.value); + } + } + arg.label .as_ref() .map(|s| s.to_doc().append(": ")) diff --git a/crates/lang/src/parser.rs b/crates/lang/src/parser.rs index 64c336ec..11c3bc76 100644 --- a/crates/lang/src/parser.rs +++ b/crates/lang/src/parser.rs @@ -913,12 +913,6 @@ pub fn pub_parser() -> impl Parser { pub fn pattern_parser() -> impl Parser { recursive(|r| { - let no_label = r.clone().map_with_span(|pattern, span| ast::CallArg { - location: span, - value: pattern, - label: None, - }); - let record_constructor_pattern_arg_parser = choice(( select! {Token::Name {name} => name} .then_ignore(just(Token::Colon)) @@ -928,7 +922,19 @@ pub fn pattern_parser() -> impl Parser impl Parser Bool { let x = datum.rdmr when x is { - sample.Buy { fin: fin, .. } -> fin > 0 - sample.Sell { find: fin, .. } -> fin > 0 + sample.Buy { fin, .. } -> fin > 0 + sample.Sell { find, .. } -> find > 0 sample.Hold(some) -> some > 0 } }