package org.simantics.scl.compiler.internal.types.ast; import org.simantics.scl.compiler.internal.types.TypeElaborationContext; import org.simantics.scl.compiler.types.Type; import org.simantics.scl.compiler.types.Types; import org.simantics.scl.compiler.types.exceptions.SCLTypeParseException; public class TFunctionAst extends TypeAst { public final TypeAst domain; public final TypeAst range; public TFunctionAst(TypeAst domain, TypeAst range) { this.domain = domain; this.range = range; } @Override public void toString(StringBuilder b) { domain.toString(b, 2); b.append(" -> "); range.toString(b, 3); } @Override public Type toType(TypeElaborationContext context) throws SCLTypeParseException { return Types.function(domain.toType(context), range.toType(context)); } @Override public int getPrecedence() { return 2; } }