diff options
Diffstat (limited to 'src/syntax/ast.rs')
| -rw-r--r-- | src/syntax/ast.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/syntax/ast.rs b/src/syntax/ast.rs index 94114958..4119802e 100644 --- a/src/syntax/ast.rs +++ b/src/syntax/ast.rs @@ -1620,7 +1620,14 @@ pub enum DestructuringKind { impl Pattern { /// The kind of the pattern. pub fn kind(&self) -> PatternKind { - if self.0.children().len() <= 1 { + if self + .0 + .children() + .map(SyntaxNode::kind) + .skip_while(|&kind| kind == SyntaxKind::LeftParen) + .take_while(|&kind| kind != SyntaxKind::RightParen) + .eq([SyntaxKind::Ident]) + { return PatternKind::Ident(self.0.cast_first_match().unwrap_or_default()); } |
