.kotlin.kotlin-compiler.1.3.11.source-code.JsSwitch 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 org.jetbrains.kotlin.js.backend.ast;
import org.jetbrains.kotlin.js.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
/**
* A JavaScript switch statement.
*/
public class JsSwitch extends SourceInfoAwareJsNode implements JsStatement {
private final List cases;
private JsExpression expression;
public JsSwitch() {
super();
cases = new ArrayList();
}
public JsSwitch(JsExpression expression, List cases) {
this.expression = expression;
this.cases = cases;
}
public List getCases() {
return cases;
}
public JsExpression getExpression() {
return expression;
}
public void setExpression(JsExpression expression) {
this.expression = expression;
}
@Override
public void accept(JsVisitor v) {
v.visit(this);
}
@Override
public void acceptChildren(JsVisitor visitor) {
visitor.accept(expression);
visitor.acceptWithInsertRemove(cases);
}
@Override
public void traverse(JsVisitorWithContext v, JsContext ctx) {
if (v.visit(this, ctx)) {
expression = v.accept(expression);
v.acceptList(cases);
}
v.endVisit(this, ctx);
}
@NotNull
@Override
public JsSwitch deepCopy() {
JsExpression expressionCopy = AstUtil.deepCopy(expression);
List casesCopy = AstUtil.deepCopy(cases);
return new JsSwitch(expressionCopy, casesCopy).withMetadataFrom(this);
}
}