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