From 2101bb924d24520b7bdfdf4a7b541cac91957423 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sat, 21 Jan 2023 10:04:11 +0100 Subject: [PATCH] Fix tuple-pattern parser This case was originally left out but, tuple parsers are almost always exclusively starting with a NewLineLeftParen token. --- crates/aiken-lang/src/parser.rs | 5 ++- crates/aiken-lang/src/tests/parser.rs | 54 +++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/crates/aiken-lang/src/parser.rs b/crates/aiken-lang/src/parser.rs index 16c90586..312e2295 100644 --- a/crates/aiken-lang/src/parser.rs +++ b/crates/aiken-lang/src/parser.rs @@ -1615,7 +1615,10 @@ pub fn pattern_parser() -> impl Parser True + } + } + "#}; + + assert_definitions( + code, + vec![ast::UntypedDefinition::Fn(Function { + arguments: vec![], + body: expr::UntypedExpr::When { + location: Span::new((), 13..49), + subjects: vec![expr::UntypedExpr::Var { + location: Span::new((), 18..19), + name: "a".to_string(), + }], + clauses: vec![ast::Clause { + location: Span::new((), 29..45), + pattern: vec![ast::Pattern::Tuple { + location: Span::new((), 29..37), + elems: vec![ + ast::Pattern::Var { + location: Span::new((), 30..31), + name: "u".to_string(), + }, + ast::Pattern::Var { + location: Span::new((), 33..36), + name: "dic".to_string(), + }, + ], + }], + alternative_patterns: vec![], + guard: None, + then: expr::UntypedExpr::Var { + location: Span::new((), 41..45), + name: "True".to_string(), + }, + }], + }, + doc: None, + location: Span::new((), 0..8), + name: "foo".to_string(), + public: false, + return_annotation: None, + return_type: (), + end_position: 50, + })], + ); +}