]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/TypeInferableDefinition.java
migrated to svn revision 33108
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / compilation / TypeInferableDefinition.java
1 package org.simantics.scl.compiler.compilation;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 import org.simantics.scl.compiler.elaboration.contexts.TypingContext;
7 import org.simantics.scl.compiler.elaboration.expressions.Variable;
8 import org.simantics.scl.compiler.internal.elaboration.constraints.Constraint;
9 import org.simantics.scl.compiler.types.TPred;
10 import org.simantics.scl.compiler.types.TVar;
11
12 import gnu.trove.map.hash.TObjectIntHashMap;
13 import gnu.trove.set.hash.THashSet;
14 import gnu.trove.set.hash.TIntHashSet;
15
16 public interface TypeInferableDefinition {
17     long getLocation();
18     Collection<Object> getDefinedObjects();
19     void collectRefs(TObjectIntHashMap<Object> allRefs, TIntHashSet refs);
20     
21     void initializeTypeChecking(TypingContext context);
22     void checkType(TypingContext context);
23     void solveConstraints();
24     void collectFreeTypeVariables(THashSet<TVar> varSet);
25     ArrayList<Variable> getFreeEvidence();
26     void injectEvidence(TVar[] vars, TPred[] constraints);
27     ArrayList<Constraint> getUnsolvedConstraints();
28 }