]> gerrit.simantics Code Review - simantics/platform.git/blob - TPredAst.java
e3b82dce15aeb0a360d45202c6f336beca13e813
[simantics/platform.git] / TPredAst.java
1 package org.simantics.scl.compiler.internal.types.ast;
2
3 import org.simantics.scl.compiler.internal.types.TypeElaborationContext;
4 import org.simantics.scl.compiler.types.Type;
5 import org.simantics.scl.compiler.types.Types;
6 import org.simantics.scl.compiler.types.exceptions.SCLTypeParseException;
7
8 public class TPredAst extends TypeAst {
9
10     public final TypeAst constraint;
11     public final TypeAst type;
12     
13     public TPredAst(TypeAst constraint, TypeAst type) {
14         this.constraint = constraint;
15         this.type = type;
16     }
17
18     @Override
19     public void toString(StringBuilder b) {
20         constraint.toString(b);
21         b.append(" => ");
22         type.toString(b);
23     }
24
25     @Override
26     public Type toType(TypeElaborationContext context) throws SCLTypeParseException {
27         return Types.constrained(
28                 constraint.toTFuncApply(context),
29                 type.toType(context));
30     }
31
32     @Override
33     public int getPrecedence() {
34         return 2;
35     }
36
37 }