]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/types/ast/TPredAst.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / types / ast / 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 }