]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/AbstractLocalEnvironment.java
(refs #7386) Minor SCL tools improvements
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / environment / AbstractLocalEnvironment.java
1 package org.simantics.scl.compiler.environment;
2
3 import org.simantics.scl.compiler.elaboration.expressions.ESimpleLambda;
4 import org.simantics.scl.compiler.elaboration.expressions.Expression;
5 import org.simantics.scl.compiler.elaboration.expressions.Variable;
6 import org.simantics.scl.compiler.types.Type;
7 import org.simantics.scl.compiler.types.util.ProcedureType;
8
9 import gnu.trove.procedure.TObjectProcedure;
10
11 public abstract class AbstractLocalEnvironment implements LocalEnvironment {
12
13     @Override
14     public void forNames(TObjectProcedure<String> proc) {
15     }
16
17     protected Variable[] getContextVariables() {
18         return Variable.EMPTY_ARRAY;
19     }
20     
21     @Override
22     public Expression preDecorateExpression(Expression expression) {
23         return expression;
24     }
25     
26     @Override
27     public Expression postDecorateExpression(Expression expression) {
28         Variable[] contextVariables = getContextVariables();
29         for(int i=contextVariables.length-1;i>=0;--i)
30             expression = new ESimpleLambda(contextVariables[i], expression);
31         return expression;
32     }
33
34     @Override
35     public ProcedureType decorateExpectedType(Type expectedType, Type expectedEffect) {
36         /*Variable[] contextVariables = getContextVariables();
37         for(int i=contextVariables.length-1;i>=0;--i) {
38             expectedType = Types.functionE(contextVariables[i].getType(), expectedEffect, expectedType);
39             expectedEffect = Types.NO_EFFECTS;
40         }*/
41         return new ProcedureType(expectedType, expectedEffect);
42     }
43
44 }