summaryrefslogtreecommitdiff
path: root/src/syntax
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-04-26 13:46:42 +0200
committerLaurenz <laurmaedje@gmail.com>2023-04-26 15:37:21 +0200
commit3680c854a21db665d64cdb8f31aa0f9a1af16ceb (patch)
tree39dfa33059293251f1e2890f9b3d0e3dc178ed03 /src/syntax
parent59957746e91c1322a8ca6d228bcaa0f31941ee1b (diff)
Touch up docs
Diffstat (limited to 'src/syntax')
-rw-r--r--src/syntax/parser.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/syntax/parser.rs b/src/syntax/parser.rs
index ab73479e..1198774b 100644
--- a/src/syntax/parser.rs
+++ b/src/syntax/parser.rs
@@ -850,12 +850,19 @@ fn item(p: &mut Parser, keyed: bool) -> SyntaxKind {
return SyntaxKind::Spread;
}
- if !p.eat_if(SyntaxKind::Underscore) {
- code_expr_or_pattern(p);
- } else {
- return SyntaxKind::Underscore;
+ if p.at(SyntaxKind::Underscore) {
+ // This is a temporary workaround to fix `v.map(_ => {})`.
+ let mut lexer = p.lexer.clone();
+ let next =
+ std::iter::from_fn(|| Some(lexer.next())).find(|kind| !kind.is_trivia());
+ if next != Some(SyntaxKind::Arrow) {
+ p.eat();
+ return SyntaxKind::Underscore;
+ }
}
+ code_expr_or_pattern(p);
+
if !p.eat_if(SyntaxKind::Colon) {
return SyntaxKind::Int;
}