package org.zwobble.couscous.ast; import org.zwobble.couscous.ast.visitors.ExpressionNodeVisitor; import org.zwobble.couscous.values.TypeReference; import lombok.Value; @Value public class VariableReferenceNode implements ExpressionNode { public static VariableReferenceNode reference(VariableNode variable) { return new VariableReferenceNode(variable.getDeclaration()); } VariableDeclaration referent; @Override public T accept(ExpressionNodeVisitor visitor) { return visitor.visit(this); } public int getReferentId() { return referent.getId(); } @Override public TypeReference getType() { return referent.getType(); } }