fn handle_super_assignment(&mut self, e: &mut Expr) -> bool {
        if let Expr::Assign(AssignExpr {
            left,
            op: op!("="),
            right,
            span,
        }) = e
        {
            let left = left.take().normalize_expr();
            match left {
                PatOrExpr::Expr(mut left_expr) => match *left_expr {
                    Expr::Member(MemberExpr {
                        obj: ExprOrSuper::Super(..),
                        ..
                    }) => {
                        right.visit_mut_children_with(self);
                        self.handle_super_access(&mut left_expr, Some(right.take()));
                        *e = *left_expr;
                        true
                    }
                    _ => {
                        *e = Expr::Assign(AssignExpr {
                            span: *span,
                            left: PatOrExpr::Expr(left_expr),
                            op: op!("="),
                            right: right.take(),
                        });
                        false
                    }
                },
                _ => {
                    *e = Expr::Assign(AssignExpr {
                        span: *span,
                        left,
                        op: op!("="),
                        right: right.take(),
                    });
                    false
                }
            }
        } else {
            false
        }
    }
/// `true` means it's processed and children are folded.
`true` means it's processed and children are folded.
` true ` means it ' s processed and children are folded .
fn handle_super_assignment(&mut self, e: &mut Expr) -> bool {
        if let Expr::Assign(AssignExpr {
            left,
            op: op!("="),
            right,
            span,
        }) = e
        {
            let left = left.take().normalize_expr();
            match left {
                PatOrExpr::Expr(mut left_expr) => match *left_expr {
                    Expr::Member(MemberExpr {
                        obj: ExprOrSuper::Super(..),
                        ..
                    }) => {
                        right.visit_mut_children_with(self);
                        self.handle_super_access(&mut left_expr, Some(right.take()));
                        *e = *left_expr;
                        true
                    }
                    _ => {
                        *e = Expr::Assign(AssignExpr {
                            span: *span,
                            left: PatOrExpr::Expr(left_expr),
                            op: op!("="),
                            right: right.take(),
                        });
                        false
                    }
                },
                _ => {
                    *e = Expr::Assign(AssignExpr {
                        span: *span,
                        left,
                        op: op!("="),
                        right: right.take(),
                    });
                    false
                }
            }
        } else {
            false
        }
    }
fn handle_super_assignment ( & mut self , e : & mut Expr ) -> bool { if let Expr :: Assign ( AssignExpr { left , op : op ! ( " " ) , right , span , } ) = e { let left = left . take ( ) . normalize_expr ( ) ; match left { PatOrExpr :: Expr ( mut left_expr ) => match * left_expr { Expr :: Member ( MemberExpr { obj : ExprOrSuper :: Super ( .. ) , .. } ) => { right . visit_mut_children_with ( self ) ; self . handle_super_access ( & mut left_expr , Some ( right . take ( ) ) ) ; * e = * left_expr ; true } _ => { * e = Expr :: Assign ( AssignExpr { span : * span , left : PatOrExpr :: Expr ( left_expr ) , op : op ! ( " " ) , right : right . take ( ) , } ) ; false } } , _ => { * e = Expr :: Assign ( AssignExpr { span : * span , left , op : op ! ( " " ) , right : right . take ( ) , } ) ; false } } } else { false } }
`true` means it's processed and children are folded.
` true ` means it ' s processed and children are folded .
&mut self
e
&mut Expr