]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/AbstractLocalEnvironment.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / environment / AbstractLocalEnvironment.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/AbstractLocalEnvironment.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/AbstractLocalEnvironment.java
new file mode 100644 (file)
index 0000000..9b9647e
--- /dev/null
@@ -0,0 +1,45 @@
+package org.simantics.scl.compiler.environment;\r
+\r
+import gnu.trove.procedure.TObjectProcedure;\r
+\r
+import org.simantics.scl.compiler.elaboration.expressions.ESimpleLambda;\r
+import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
+import org.simantics.scl.compiler.elaboration.expressions.Variable;\r
+import org.simantics.scl.compiler.types.Type;\r
+import org.simantics.scl.compiler.types.Types;\r
+import org.simantics.scl.compiler.types.util.ProcedureType;\r
+\r
+public abstract class AbstractLocalEnvironment implements LocalEnvironment {\r
+\r
+    @Override\r
+    public void forNames(TObjectProcedure<String> proc) {\r
+    }\r
+\r
+    protected Variable[] getContextVariables() {\r
+        return Variable.EMPTY_ARRAY;\r
+    }\r
+    \r
+    @Override\r
+    public Expression preDecorateExpression(Expression expression) {\r
+        return expression;\r
+    }\r
+    \r
+    @Override\r
+    public Expression postDecorateExpression(Expression expression) {\r
+        Variable[] contextVariables = getContextVariables();\r
+        for(int i=contextVariables.length-1;i>=0;--i)\r
+            expression = new ESimpleLambda(contextVariables[i], expression);\r
+        return expression;\r
+    }\r
+\r
+    @Override\r
+    public ProcedureType decorateExpectedType(Type expectedType, Type expectedEffect) {\r
+        /*Variable[] contextVariables = getContextVariables();\r
+        for(int i=contextVariables.length-1;i>=0;--i) {\r
+            expectedType = Types.functionE(contextVariables[i].getType(), expectedEffect, expectedType);\r
+            expectedEffect = Types.NO_EFFECTS;\r
+        }*/\r
+        return new ProcedureType(expectedType, expectedEffect);\r
+    }\r
+\r
+}\r