1 package org.simantics.scl.compiler.internal.parsing.declarations;
3 import java.util.Collections;
6 import org.simantics.scl.compiler.internal.codegen.types.StandardTypeConstructor;
7 import org.simantics.scl.compiler.types.kinds.Kind;
11 public class DDataAst extends DeclarationAst {
12 public final String name;
13 public final String[] parameters;
14 public final ConstructorAst[] constructors;
15 public final String[] deriving;
17 private List<DAnnotationAst> annotations = Collections.emptyList();
20 public Kind[] parameterKinds;
21 //public String javaName;
22 public StandardTypeConstructor typeConstructor;
24 public DDataAst(String name, String[] parameters, ConstructorAst[] constructors, String[] deriving) {
26 this.parameters = parameters;
27 this.constructors = constructors == null ? ConstructorAst.EMPTY_ARRAY : constructors;
28 this.deriving = deriving;
31 public void setAnnotations(List<DAnnotationAst> annotations) {
32 this.annotations = annotations;
35 public List<DAnnotationAst> getAnnotations() {
40 public void toString(int indentation, StringBuilder b) {
41 for(int i=0;i<indentation;++i) b.append(" ");
44 for(String parameter : parameters) {
48 if(constructors.length > 0) {
50 for(int i=0;i<constructors.length;++i) {
53 constructors[i].toString(b);