org.jetbrains.kotlin.js.backend.ast.JsExpression 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.annotations.NotNull;
import java.util.List;
public abstract class JsExpression extends SourceInfoAwareJsNode {
/**
* Determines whether or not this expression is a leaf, such as a
* {@link JsNameRef}, {@link JsBooleanLiteral}, and so on. Leaf expressions
* never need to be parenthesized.
*/
public boolean isLeaf() {
// Conservatively say that it isn't a leaf.
// Individual subclasses can speak for themselves if they are a leaf.
return false;
}
@NotNull
public JsStatement makeStmt() {
return new JsExpressionStatement(this);
}
public abstract static class JsExpressionHasArguments extends JsExpression implements HasArguments {
protected final List arguments;
protected JsExpressionHasArguments(List arguments) {
this.arguments = arguments;
}
@Override
public List getArguments() {
return arguments;
}
}
@Override
public JsExpression source(Object info) {
setSource(info);
return this;
}
@NotNull
@Override
public abstract JsExpression deepCopy();
}