import org.simantics.scl.compiler.types.kinds.Kind;\r
import org.simantics.scl.compiler.types.kinds.Kinds;\r
\r
-public abstract class TypeConstructor {\r
+public abstract class TypeConstructor extends TypeDescriptor {\r
public Kind kind;\r
\r
- public TCon name;\r
public TVar[] parameters;\r
public Type type;\r
\r
public boolean isOpen = true;\r
\r
public TypeConstructor(Kind kind) {\r
+ super(null);\r
this.kind = kind;\r
}\r
\r
public TypeConstructor(TCon name, Kind kind) {\r
- this.name = name;\r
+ super(name);\r
this.kind = kind;\r
\r
ArrayList<TVar> vars = new ArrayList<TVar>(2);\r
}\r
\r
public TypeConstructor(TCon name, TVar ... parameters) {\r
+ super(name);\r
setType(name, parameters);\r
Kind kind = Kinds.STAR;\r
for(int i = parameters.length-1;i>=0;--i)\r
this.parameters = parameters;\r
this.type = Types.apply(name, parameters);\r
}\r
- \r
+ \r
public void setConstructors(Constructor ... constructors) {\r
this.constructors = constructors;\r
}\r
\r
public abstract TypeDesc construct(JavaTypeTranslator translator, Type[] parameters);\r
\r
+ @Override\r
public void setDocumentation(String documentation) {\r
this.documentation = documentation;\r
}\r
+ \r
+ @Override\r
+ public Kind getKind() {\r
+ return kind;\r
+ }\r
+ \r
+ @Override\r
+ public String getDocumentation() {\r
+ return documentation;\r
+ }\r
}\r