diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-01-17 13:53:22 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-01-17 13:53:22 +0100 |
| commit | 29be90bf95f2ea10c435e7b02f8c26626b956417 (patch) | |
| tree | b6186120a443664c0d016730725b27f7c550eb78 /src/parse/mod.rs | |
| parent | cc5f14193c25200e254e64cc594b15e84da280f9 (diff) | |
Assertions with [eq] + better tests 🩺
Diffstat (limited to 'src/parse/mod.rs')
| -rw-r--r-- | src/parse/mod.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/parse/mod.rs b/src/parse/mod.rs index b6836d38..7c92185d 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -117,7 +117,7 @@ fn heading(p: &mut Parser) -> NodeHeading { // Parse the heading contents. let mut contents = vec![]; - while p.check(|t| !matches!(t, Token::Space(n) if n > 0)) { + while p.check(|t| !matches!(t, Token::Space(n) if n >= 1)) { if let Some(node) = p.span_if(|p| node(p, &mut false)) { contents.push(node); } @@ -388,8 +388,8 @@ fn string(p: &mut Parser, token: TokenStr) -> String { /// Parse a let expresion. fn expr_let(p: &mut Parser) -> Option<Expr> { p.push_mode(TokenMode::Code); - p.start_group(Group::Terminated); p.eat_assert(Token::Let); + p.start_group(Group::Expr); let pat = p.span_if(ident); let mut rhs = None; @@ -404,11 +404,11 @@ fn expr_let(p: &mut Parser) -> Option<Expr> { p.diag_expected("identifier"); } - while !p.eof() { - p.diag_unexpected(); + p.pop_mode(); + if !p.eof() { + p.diag_expected("semicolon or line break"); } - p.pop_mode(); p.end_group(); pat.map(|pat| Expr::Let(ExprLet { pat, expr: rhs })) } |
