diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-01-18 15:58:36 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-01-18 15:58:36 +0100 |
| commit | 277f2d2176f5e98305870f90b16af3feae1bb3d1 (patch) | |
| tree | a267216f67ebed87cbf83f021bfb01e9b79feae4 /src/syntax/parsing.rs | |
| parent | 70878885f5d169f2c5d9e66d3919ee56d5f9f9ca (diff) | |
ColorToken serialization + function fix 🚧
Diffstat (limited to 'src/syntax/parsing.rs')
| -rw-r--r-- | src/syntax/parsing.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/syntax/parsing.rs b/src/syntax/parsing.rs index 71d6b251..f6d0b629 100644 --- a/src/syntax/parsing.rs +++ b/src/syntax/parsing.rs @@ -104,8 +104,11 @@ impl<'s> Parser<'s> { let name = self.parse_func_name()?; self.skip_whitespace(); - let args = match self.eat() { - Some(Spanned { v: Colon, .. }) => self.parse_func_args(), + let args = match self.peek() { + Some(Spanned { v: Colon, .. }) => { + self.eat(); + self.parse_func_args() + } Some(Spanned { v: RightBracket, .. }) => FuncArgs::new(), other => { self.expected_at("colon or closing bracket", name.span.end); @@ -119,8 +122,9 @@ impl<'s> Parser<'s> { /// Parses the function name if is the next token. Otherwise, it adds an /// error and returns `None`. fn parse_func_name(&mut self) -> Option<Spanned<Ident>> { - match self.eat() { + match self.peek() { Some(Spanned { v: ExprIdent(ident), span }) => { + self.eat(); self.colorization.replace_last(ColorToken::FuncName); return Some(Spanned { v: Ident(ident.to_string()), span }); } @@ -280,7 +284,7 @@ impl<'s> Parser<'s> { None })?; - Some(FuncCall(parser(header, body, self.ctx).unwrap())) + parser(header, body, self.ctx).ok().map(|f| FuncCall(f)) } /// Skip all whitespace/comment tokens. |
