blob: c51e96f8a40280c162756706a29837b2362bb9ec [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 xored software, Inc.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.javascript.ast;
import org.eclipse.dltk.ast.ASTVisitor;
import org.eclipse.dltk.javascript.internal.parser.JSLiterals;
public class VariableDeclaration extends JSNode implements ISourceable,
JSDeclaration {
private Identifier identifier;
// TODO (alex) remove unused field in DLTK 6.0
@Deprecated
private int colonPosition = -1;
private int assignPosition = -1;
private Expression initializer;
private int commaPosition = -1;
/**
* @param parent
*/
public VariableDeclaration(IVariableStatement parent) {
super((JSNode) parent);
}
@Override
public String toSourceString(String indentationString) {
final StringBuilder sb = new StringBuilder();
sb.append(identifier != null ? identifier.getName()
: JSLiterals.ERROR_TOKEN);
if (initializer != null) {
sb.append(JSLiterals.ASSIGN);
sb.append(initializer.toSourceString(indentationString));
}
return sb.toString();
}
@Override
public void traverse(ASTVisitor visitor) throws Exception {
if (visitor.visit(this)) {
if (identifier != null) {
identifier.traverse(visitor);
}
if (initializer != null) {
initializer.traverse(visitor);
}
visitor.endvisit(this);
}
}
@Deprecated
public int getColonPosition() {
return colonPosition;
}
@Deprecated
public void setColonPosition(int colonPosition) {
this.colonPosition = colonPosition;
}
public int getAssignPosition() {
return assignPosition;
}
public void setAssignPosition(int assignPosition) {
this.assignPosition = assignPosition;
}
/**
* Returns the comma position after this variable or -1 if this is the last
* variable in statement.
*
* @return
*/
public int getCommaPosition() {
return commaPosition;
}
/**
* Sets the comma position after this variable.
*
* @param commaPosition
*/
public void setCommaPosition(int commaPosition) {
this.commaPosition = commaPosition;
}
public String getVariableName() {
return identifier != null ? identifier.getName() : null;
}
public Identifier getIdentifier() {
return identifier;
}
public void setIdentifier(Identifier name) {
this.identifier = name;
}
public Expression getInitializer() {
return initializer;
}
public void setInitializer(Expression initializer) {
this.initializer = initializer;
}
@Override
public Comment getDocumentation() {
return identifier != null ? identifier.getDocumentation() : null;
}
public IVariableStatement getStatement() {
return (IVariableStatement) getParent();
}
}