com.google.dart.compiler.backend.js.ast.JsArrayAccess Maven / Gradle / Ivy
// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.google.dart.compiler.backend.js.ast;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
/**
* Represents a javascript expression for array access.
*/
public final class JsArrayAccess extends JsExpressionImpl {
private JsExpression arrayExpression;
private JsExpression indexExpression;
public JsArrayAccess() {
super();
}
public JsArrayAccess(JsExpression arrayExpression, JsExpression indexExpression) {
this.arrayExpression = arrayExpression;
this.indexExpression = indexExpression;
}
public JsExpression getArrayExpression() {
return arrayExpression;
}
public JsExpression getIndexExpression() {
return indexExpression;
}
public void setArrayExpression(JsExpression arrayExpression) {
this.arrayExpression = arrayExpression;
}
public void setIndexExpression(JsExpression indexExpression) {
this.indexExpression = indexExpression;
}
@Override
public void accept(JsVisitor v) {
v.visitArrayAccess(this);
}
@Override
public void acceptChildren(JsVisitor visitor) {
visitor.accept(arrayExpression);
visitor.accept(indexExpression);
}
@Override
public void traverse(JsVisitorWithContext v, JsContext ctx) {
if (v.visit(this, ctx)) {
arrayExpression = v.accept(arrayExpression);
indexExpression = v.accept(indexExpression);
}
v.endVisit(this, ctx);
}
@NotNull
@Override
public JsArrayAccess deepCopy() {
JsExpression arrayCopy = AstUtil.deepCopy(arrayExpression);
JsExpression indexCopy = AstUtil.deepCopy(indexExpression);
return new JsArrayAccess(arrayCopy, indexCopy).withMetadataFrom(this);
}
}