]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/LocalEnvironment.java
migrated to svn revision 33108
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / environment / LocalEnvironment.java
1 package org.simantics.scl.compiler.environment;\r
2 \r
3 import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
4 import org.simantics.scl.compiler.types.Type;\r
5 import org.simantics.scl.compiler.types.util.ProcedureType;\r
6 \r
7 import gnu.trove.procedure.TObjectProcedure;\r
8 \r
9 /**\r
10  * Provides local variable names for expressions\r
11  * that do not need to defined in any module.\r
12  * \r
13  * @author Hannu Niemistö\r
14  */\r
15 public interface LocalEnvironment {\r
16     /**\r
17      * Resolves the variable name to an expression evaluating it.\r
18      * Returns null if the local environment does not provide the variable.\r
19      */\r
20     Expression resolve(Environment environment, String localName);\r
21     \r
22     /**\r
23      * Lists all names of variables provided by this environment.\r
24      * The method is used only for error reporting, so its efficiently\r
25      * or completion is not absolutely necessary.\r
26      */\r
27     void forNames(TObjectProcedure<String> proc);\r
28     \r
29     /**\r
30      * Modifies the expression before type checking.\r
31      */\r
32     Expression preDecorateExpression(Expression expression);\r
33     \r
34     /**\r
35      * Modifies the expression after type checking.\r
36      */\r
37     Expression postDecorateExpression(Expression expression);\r
38     \r
39     /**\r
40      * Modifies expected type and effect before type checking.\r
41      */\r
42     ProcedureType decorateExpectedType(Type expectedType, Type expectedEffect);\r
43 }\r