]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/types/ast/TFunctionAst.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / types / ast / TFunctionAst.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
9
10 public class TFunctionAst extends TypeAst {
11     public final TypeAst domain;
12     public final TypeAst range;
13     
14     public TFunctionAst(TypeAst domain, TypeAst range) {
15         this.domain = domain;
16         this.range = range;
17     }
18     
19     @Override
20     public void toString(StringBuilder b) {
21         domain.toString(b, 2);
22         b.append(" -> ");
23         range.toString(b, 3);
24     }
25
26     @Override
27     public Type toType(TypeElaborationContext context) throws SCLTypeParseException {
28         return Types.function(domain.toType(context), range.toType(context));
29     }
30     
31     @Override
32     public int getPrecedence() {
33         return 2;
34     }
35 }