org.mozilla.javascript.ast.ThrowStatement Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.apache.servicemix.bundles.rhino
Show all versions of org.apache.servicemix.bundles.rhino
This OSGi bundle wraps rhino and rhino-engine ${pkgVersion} jar files.
The newest version!
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.javascript.ast;
import org.mozilla.javascript.Token;
/**
* Throw statement. Node type is {@link Token#THROW}.
*
* ThrowStatement :
* throw [no LineTerminator here] Expression ;
*/
public class ThrowStatement extends AstNode {
private AstNode expression;
{
type = Token.THROW;
}
public ThrowStatement() {}
public ThrowStatement(int pos) {
super(pos);
}
public ThrowStatement(int pos, int len) {
super(pos, len);
}
public ThrowStatement(AstNode expr) {
setExpression(expr);
}
public ThrowStatement(int pos, AstNode expr) {
super(pos, expr.getLength());
setExpression(expr);
}
public ThrowStatement(int pos, int len, AstNode expr) {
super(pos, len);
setExpression(expr);
}
/** Returns the expression being thrown */
public AstNode getExpression() {
return expression;
}
/**
* Sets the expression being thrown, and sets its parent to this node.
*
* @throws IllegalArgumentException} if expression is {@code null}
*/
public void setExpression(AstNode expression) {
assertNotNull(expression);
this.expression = expression;
expression.setParent(this);
}
@Override
public String toSource(int depth) {
StringBuilder sb = new StringBuilder();
sb.append(makeIndent(depth));
sb.append("throw");
sb.append(" ");
sb.append(expression.toSource(0));
sb.append(";\n");
return sb.toString();
}
/** Visits this node, then the thrown expression. */
@Override
public void visit(NodeVisitor v) {
if (v.visit(this)) {
expression.visit(v);
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy