
public class FunctionDeclNode extends StatementNode {
	private Symbol name;
	private TypeRefNode returnType;
	private ConsNode parameters;
	private Node body;

	public FunctionDeclNode(Symbol name, ConsNode parameters, TypeRefNode returnType) {
		this.name = name;
		this.parameters = parameters;
		this.returnType = returnType;
	}

	public boolean get_B_supports_type_as_argument() {
		// TODO Auto-generated method stub
		return false;
	}

	public void setReturnType(TypeRefNode returnType) {
		this.returnType = returnType;
	}

	public TypeRefNode getReturnType() {
		return returnType;
	}

	public void setParameters(ConsNode parameters) {
		this.parameters = parameters;
	}

	public ConsNode getParameters() {
		return parameters;
	}

	public void setName(Symbol name) {
		this.name = name;
	}

	public Symbol getName() {
		return name;
	}

	public void setBody(Node body) {
		this.body = body;
	}
	public Node getBody() {
		return this.body;
	}

	@Override
	public String toIndentedString(int surroundingIndentation) {
		return String.format("%s%s %s(%s)%s", Node.newline(surroundingIndentation), returnType.toString(), name.toString(), parameters != null ? parameters.toString() : "", body != null ? " " + Node.toIndentedString(body, surroundingIndentation) : ";");
		
	}

}
