package com.github.sommeri.less4j.core.ast;
import java.util.List;
import com.github.sommeri.less4j.core.ast.annotations.NotAstProperty;
import com.github.sommeri.less4j.core.compiler.scopes.IScope;
import com.github.sommeri.less4j.core.parser.HiddenTokenAwareTree;
import com.github.sommeri.less4j.utils.ArraysUtils;
public class NamedExpression extends IdentifierExpression {
private Expression expression;
private String name;
public NamedExpression(HiddenTokenAwareTree underlyingStructure, String name, Expression expression) {
super(underlyingStructure);
this.name = name;
this.expression = expression;
}
public NamedExpression(HiddenTokenAwareTree underlyingStructure) {
super(underlyingStructure);
}
public NamedExpression(HiddenTokenAwareTree underlyingStructure, String name, Expression evaluate, IScope scope) {
this(underlyingStructure, name, evaluate);
setScope(scope);
}
public Expression getExpression() {
return expression;
}
public void setExpression(Expression expression) {
this.expression = expression;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
@NotAstProperty
public List<ASTCssNode> getChilds() {
List<ASTCssNode> result = ArraysUtils.asNonNullList((ASTCssNode)expression);
result.addAll(super.getChilds());
return result;
}
@Override
public ASTCssNodeType getType() {
return ASTCssNodeType.NAMED_EXPRESSION;
}
@Override
public NamedExpression clone() {
NamedExpression result = (NamedExpression) super.clone();
result.expression = expression==null?null:expression.clone();
result.configureParentToAllChilds();
return result;
}
}