]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/types/TListAst.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / parsing / types / TListAst.java
1 package org.simantics.scl.compiler.internal.parsing.types;\r
2 \r
3 import org.simantics.scl.compiler.elaboration.contexts.TypeTranslationContext;\r
4 import org.simantics.scl.compiler.internal.types.TypeElaborationContext;\r
5 import org.simantics.scl.compiler.types.Type;\r
6 import org.simantics.scl.compiler.types.Types;\r
7 import org.simantics.scl.compiler.types.kinds.Kind;\r
8 import org.simantics.scl.compiler.types.kinds.Kinds;\r
9 \r
10 import gnu.trove.map.hash.TObjectIntHashMap;\r
11 import gnu.trove.set.hash.TIntHashSet;\r
12 \r
13 \r
14 \r
15 public class TListAst extends TypeAst {\r
16     public final TypeAst component;\r
17     \r
18     public TListAst(TypeAst component) {\r
19         this.component = component;\r
20     }\r
21 \r
22     @Override\r
23     public void toString(StringBuilder b) {\r
24         b.append('[');\r
25         component.toString(b);\r
26         b.append(']');\r
27     }\r
28 \r
29     @Override\r
30     public Type toType(TypeTranslationContext context, Kind expectedKind) {\r
31         context.unify(location, Kinds.STAR, expectedKind);\r
32         return Types.list(component.toType(context, Kinds.STAR));\r
33     }\r
34 \r
35     @Override\r
36     public Type toType(TypeElaborationContext context) {\r
37         return Types.list(component.toType(context));\r
38     }\r
39     \r
40     @Override\r
41     public int getPrecedence() {\r
42         return 0;\r
43     }\r
44 \r
45     @Override\r
46     public void collectReferences(TObjectIntHashMap<String> typeNameMap,\r
47             TIntHashSet set) {\r
48         component.collectReferences(typeNameMap, set);\r
49     }\r
50 }\r