summaryrefslogtreecommitdiff
path: root/src/msil/ch/epfl/lamp/compiler/msil/GenericParamAndConstraints.java
blob: 6237fbafee595eab3e7360e2e50f131aa24ce906 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package ch.epfl.lamp.compiler.msil;

/**
 * @author Miguel Garcia
 */
public class GenericParamAndConstraints {

    public GenericParamAndConstraints(int Number, String Name, Type[] Constraints,
                                      boolean isInvariant, boolean isCovariant, boolean isContravariant,
                                      boolean isReferenceType, boolean isValueType, boolean hasDefaultConstructor) {
        this.Number = Number;
        this.Name = Name;
        this.Constraints = Constraints; // TODO representation for the class and new() constraints missing
        this.isInvariant = isInvariant;
        this.isCovariant = isCovariant;
        this.isContravariant = isContravariant;
        this.isReferenceType = isReferenceType;
        this.isValueType  = isValueType;
        this.hasDefaultConstructor = hasDefaultConstructor;

    }

    public final int Number;
    public final String Name; // can be null
    public final Type[] Constraints; // can be empty array
    public final boolean isInvariant; // only relevant for TVars, not for an MVar
    public final boolean isCovariant; // only relevant for TVars, not for an MVar
    public final boolean isContravariant; // only relevant for TVars, not for an MVar
    public final boolean isReferenceType;
    public final boolean isValueType;
    public final boolean hasDefaultConstructor;

    public String toString() {
        String res = Name == null ? "<NoName>" : (Name.equals("") ? "<NoName>" : Name);
        res = res + " <: " + Constraints;
        return res;
    }

}