]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/constraints2/ConstraintResolution.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / elaboration / constraints2 / ConstraintResolution.java
1 package org.simantics.scl.compiler.internal.elaboration.constraints2;
2
3 import org.simantics.scl.compiler.constants.Constant;
4 import org.simantics.scl.compiler.types.Type;
5 import org.simantics.scl.compiler.types.util.TypeUnparsingContext;
6
7 class ConstraintResolution {
8     public static final int INSTANCE_PRIORITY = 1;
9     public static final int SUPERCLASS_PRIORITY = 2;
10     public static final int GIVEN_PRIORITY = 3;
11     
12     public final Constant function;
13     public final Type[] typeParameters;
14     public final ConstraintHandle[] parameters;
15     public final int priority;
16     
17     public ConstraintResolution(Constant function, Type[] typeParameters,
18             ConstraintHandle[] parameters, int priority) {
19         this.function = function;
20         this.typeParameters = typeParameters;
21         this.parameters = parameters;
22         this.priority = priority;
23     }
24
25     public String toString(TypeUnparsingContext tuc) {
26         StringBuilder b = new StringBuilder();
27         b.append(function);
28         for(Type typeParameter : typeParameters)
29             b.append(" <").append(typeParameter.toString(tuc)).append('>');
30         for(ConstraintHandle parameter : parameters)
31             b.append(" (").append(parameter.constraint.toString(tuc)).append(')');
32         return b.toString();
33     }
34 }