1 package org.simantics.scl.compiler.environment;
\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
7 import gnu.trove.procedure.TObjectProcedure;
\r
10 * Provides local variable names for expressions
\r
11 * that do not need to defined in any module.
\r
13 * @author Hannu Niemistö
\r
15 public interface LocalEnvironment {
\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
20 Expression resolve(Environment environment, String localName);
\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
27 void forNames(TObjectProcedure<String> proc);
\r
30 * Modifies the expression before type checking.
\r
32 Expression preDecorateExpression(Expression expression);
\r
35 * Modifies the expression after type checking.
\r
37 Expression postDecorateExpression(Expression expression);
\r
40 * Modifies expected type and effect before type checking.
\r
42 ProcedureType decorateExpectedType(Type expectedType, Type expectedEffect);
\r