Add underscore expressions for destructuring assignments
Co-authored-by: varkor <github@varkor.com>
This commit is contained in:
parent
a38f8fb674
commit
8cf3564310
27 changed files with 243 additions and 45 deletions
|
@ -1192,6 +1192,7 @@ impl Expr {
|
|||
ExprKind::Field(..) => ExprPrecedence::Field,
|
||||
ExprKind::Index(..) => ExprPrecedence::Index,
|
||||
ExprKind::Range(..) => ExprPrecedence::Range,
|
||||
ExprKind::Underscore => ExprPrecedence::Path,
|
||||
ExprKind::Path(..) => ExprPrecedence::Path,
|
||||
ExprKind::AddrOf(..) => ExprPrecedence::AddrOf,
|
||||
ExprKind::Break(..) => ExprPrecedence::Break,
|
||||
|
@ -1324,6 +1325,8 @@ pub enum ExprKind {
|
|||
Index(P<Expr>, P<Expr>),
|
||||
/// A range (e.g., `1..2`, `1..`, `..2`, `1..=2`, `..=2`; and `..` in destructuring assingment).
|
||||
Range(Option<P<Expr>>, Option<P<Expr>>, RangeLimits),
|
||||
/// An underscore, used in destructuring assignment to ignore a value.
|
||||
Underscore,
|
||||
|
||||
/// Variable reference, possibly containing `::` and/or type
|
||||
/// parameters (e.g., `foo::bar::<baz>`).
|
||||
|
|
|
@ -1232,6 +1232,7 @@ pub fn noop_visit_expr<T: MutVisitor>(
|
|||
visit_opt(e1, |e1| vis.visit_expr(e1));
|
||||
visit_opt(e2, |e2| vis.visit_expr(e2));
|
||||
}
|
||||
ExprKind::Underscore => {}
|
||||
ExprKind::Path(qself, path) => {
|
||||
vis.visit_qself(qself);
|
||||
vis.visit_path(path);
|
||||
|
|
|
@ -806,6 +806,7 @@ pub fn walk_expr<'a, V: Visitor<'a>>(visitor: &mut V, expression: &'a Expr) {
|
|||
walk_list!(visitor, visit_expr, start);
|
||||
walk_list!(visitor, visit_expr, end);
|
||||
}
|
||||
ExprKind::Underscore => {}
|
||||
ExprKind::Path(ref maybe_qself, ref path) => {
|
||||
if let Some(ref qself) = *maybe_qself {
|
||||
visitor.visit_ty(&qself.ty);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue