001    // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
002    // for details. All rights reserved. Use of this source code is governed by a
003    // BSD-style license that can be found in the LICENSE file.
004    
005    package com.google.dart.compiler.backend.js.ast;
006    
007    import com.google.dart.compiler.util.AstUtil;
008    import org.jetbrains.annotations.NotNull;
009    
010    public final class JsPostfixOperation extends JsUnaryOperation {
011      public JsPostfixOperation(JsUnaryOperator op, JsExpression arg) {
012        super(op, arg);
013      }
014    
015      @Override
016      public void accept(JsVisitor v) {
017        v.visitPostfixOperation(this);
018      }
019    
020        @Override
021        public void traverse(JsVisitorWithContext v, JsContext ctx) {
022            if (v.visit(this, ctx)) {
023                super.traverse(v, ctx);
024            }
025            v.endVisit(this, ctx);
026        }
027    
028        @NotNull
029        @Override
030        public JsPostfixOperation deepCopy() {
031            return new JsPostfixOperation(getOperator(), AstUtil.deepCopy(getArg())).withMetadataFrom(this);
032        }
033    }