package org.simantics.scl.compiler.elaboration.expressions;
import java.util.ArrayList;
+import java.util.Set;
import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
import org.simantics.scl.compiler.compilation.CompilationContext;
import org.simantics.scl.compiler.types.kinds.Kinds;
import org.simantics.scl.compiler.types.util.MultiFunction;
-import gnu.trove.map.hash.TObjectIntHashMap;
-import gnu.trove.set.hash.THashSet;
-import gnu.trove.set.hash.TIntHashSet;
-
public class ESimpleLambda extends Expression {
public Variable parameter;
public Expression value;
this.effect = effect;
}
- @Override
- public void collectVars(TObjectIntHashMap<Variable> allVars,
- TIntHashSet vars) {
- value.collectVars(allVars, vars);
- }
-
public Expression decomposeMatching() {
value = value.decomposeMatching();
return this;
}
- @Override
- protected void updateType() throws MatchException {
- setType(Types.functionE(Types.canonical(parameter.type),
- effect, value.getType()));
- }
-
- @Override
- public IVal toVal(CompilationContext context, CodeWriter w) {
- return lambdaToVal(context, w);
+ @Override
+ protected void updateType() throws MatchException {
+ setType(Types.functionE(Types.canonical(parameter.type),
+ effect, value.getType()));
}
@Override
- public void collectFreeVariables(THashSet<Variable> vars) {
- value.collectFreeVariables(vars);
- vars.remove(parameter);
+ public IVal toVal(CompilationContext context, CodeWriter w) {
+ return lambdaToVal(context, w);
}
@Override
// Free variables;
ExpressionInterpretationContext innerContext = context.createNewContext();
- THashSet<Variable> freeVariables = cur.getFreeVariables();
+ Set<Variable> freeVariables = cur.getFreeVariables();
for(Variable parameter : parameters)
freeVariables.remove(parameter);
int i=0;