diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-07-18 18:02:38 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-07-18 18:02:38 +0200 |
| commit | 38a24247422ed433a9743e7eacf5037ccf877fa0 (patch) | |
| tree | 9edbd3cfb1ddd9d303a97c4d8deae98e997390ea /src/syntax/parsing.rs | |
| parent | 332f83ed2dd5a050d1af145fc285003a75f39617 (diff) | |
Remove duplicate spans for func args ❌
Diffstat (limited to 'src/syntax/parsing.rs')
| -rw-r--r-- | src/syntax/parsing.rs | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/syntax/parsing.rs b/src/syntax/parsing.rs index 07dfec7c..9636df21 100644 --- a/src/syntax/parsing.rs +++ b/src/syntax/parsing.rs @@ -190,10 +190,8 @@ impl<'s> FuncParser<'s> { if let Some(ident) = p.parse_ident() { // This could still be a named tuple if let Some(Token::LeftParen) = p.peekv() { - let n_tuple = p.parse_named_tuple(ident) - .map(|t| Expr::NamedTuple(t)); - let span = n_tuple.span; - return Ok(Spanned::new(FuncArg::Pos(n_tuple), span)); + let tuple = p.parse_named_tuple(ident); + return Ok(tuple.map(|t| FuncArg::Pos(Expr::NamedTuple(t)))); } p.skip_whitespace(); @@ -210,22 +208,18 @@ impl<'s> FuncParser<'s> { // Add a keyword argument. let span = Span::merge(ident.span, value.span); - Ok(Spanned::new( - FuncArg::Key(Spanned::new(Pair { key: ident, value }, span)), - span, - )) + let pair = Pair { key: ident, value }; + Ok(Spanned::new(FuncArg::Key(pair), span)) } else { // Add a positional argument because there was no equals // sign after the identifier that could have been a key. - let ident = ident.map(|id| Expr::Ident(id)); - let span = ident.span; - Ok(Spanned::new(FuncArg::Pos(ident), span)) + Ok(ident.map(|id| FuncArg::Pos(Expr::Ident(id)))) } } else { // Add a positional argument because we haven't got an // identifier that could be an argument key. - p.parse_expr().map(|expr| Spanned { span: expr.span, v: FuncArg::Pos(expr) }) - .ok_or(("argument", None)) + let value = p.parse_expr().ok_or(("argument", None))?; + Ok(value.map(|expr| FuncArg::Pos(expr))) } }).v } |
