diff --git a/src/parser.rs b/src/parser.rs index 3d54860..2655fd5 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -846,6 +846,7 @@ impl Parser { /// Parse function parameters fn parse_params(&mut self) -> Result, ParseError> { let mut params = Vec::new(); + self.skip_newlines(); while !self.check(TokenKind::RParen) { let start = self.current_span(); @@ -855,9 +856,11 @@ impl Parser { let span = start.merge(self.previous_span()); params.push(Parameter { name, typ, span }); + self.skip_newlines(); if !self.check(TokenKind::RParen) { self.expect(TokenKind::Comma)?; + self.skip_newlines(); } } @@ -1937,11 +1940,14 @@ impl Parser { if self.check(TokenKind::LParen) { self.advance(); + self.skip_newlines(); let mut fields = Vec::new(); while !self.check(TokenKind::RParen) { fields.push(self.parse_pattern()?); + self.skip_newlines(); if !self.check(TokenKind::RParen) { self.expect(TokenKind::Comma)?; + self.skip_newlines(); } } self.expect(TokenKind::RParen)?; @@ -1960,12 +1966,15 @@ impl Parser { fn parse_tuple_pattern(&mut self) -> Result { let start = self.current_span(); self.expect(TokenKind::LParen)?; + self.skip_newlines(); let mut elements = Vec::new(); while !self.check(TokenKind::RParen) { elements.push(self.parse_pattern()?); + self.skip_newlines(); if !self.check(TokenKind::RParen) { self.expect(TokenKind::Comma)?; + self.skip_newlines(); } } @@ -2095,6 +2104,7 @@ impl Parser { fn parse_lambda_params(&mut self) -> Result, ParseError> { let mut params = Vec::new(); + self.skip_newlines(); while !self.check(TokenKind::RParen) { let start = self.current_span(); @@ -2110,9 +2120,11 @@ impl Parser { let span = start.merge(self.previous_span()); params.push(Parameter { name, typ, span }); + self.skip_newlines(); if !self.check(TokenKind::RParen) { self.expect(TokenKind::Comma)?; + self.skip_newlines(); } } @@ -2200,6 +2212,7 @@ impl Parser { fn parse_tuple_or_paren_expr(&mut self) -> Result { let start = self.current_span(); self.expect(TokenKind::LParen)?; + self.skip_newlines(); if self.check(TokenKind::RParen) { self.advance(); @@ -2210,16 +2223,19 @@ impl Parser { } let first = self.parse_expr()?; + self.skip_newlines(); if self.check(TokenKind::Comma) { // Tuple let mut elements = vec![first]; while self.check(TokenKind::Comma) { self.advance(); + self.skip_newlines(); if self.check(TokenKind::RParen) { break; } elements.push(self.parse_expr()?); + self.skip_newlines(); } self.expect(TokenKind::RParen)?; let span = start.merge(self.previous_span());