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 TApplyAst extends TypeAst { public final TypeAst function; public final TypeAst parameter; public TApplyAst(TypeAst function, TypeAst parameter) { this.function = function; this.parameter = parameter; } @Override public void toString(StringBuilder b) { function.toString(b, 2); b.append(' '); parameter.toString(b, 1); } @Override public Type toType(TypeElaborationContext context) throws SCLTypeParseException { return Types.apply(function.toType(context), parameter.toType(context)); } @Override public int getPrecedence() { return 1; } }