@@ -13,15 +13,15 @@ abstract class TreeInterpreter[R <: Reflection & Singleton](val reflect: R) {
13
13
/** Representation of objects and values in the interpreter */
14
14
type AbstractAny
15
15
16
- type Result = Env | => AbstractAny
16
+ type Result = given Env => AbstractAny
17
17
18
18
def localValue (sym : Symbol )(implicit env : Env ): LocalValue = env(sym)
19
19
20
- def withLocalValue [T ](sym : Symbol , value : LocalValue )(in : Env | => T )(implicit env : Env ): T =
21
- in with env.updated(sym, value)
20
+ def withLocalValue [T ](sym : Symbol , value : LocalValue )(in : given Env => T )(implicit env : Env ): T =
21
+ in given env .updated(sym, value)
22
22
23
- def withLocalValues [T ](syms : List [Symbol ], values : List [LocalValue ])(in : Env | => T )(implicit env : Env ): T =
24
- in with (env ++ syms.zip(values))
23
+ def withLocalValues [T ](syms : List [Symbol ], values : List [LocalValue ])(in : given Env => T )(implicit env : Env ): T =
24
+ in given (env ++ syms.zip(values))
25
25
26
26
def interpretCall (inst : AbstractAny , sym : DefSymbol , args : List [AbstractAny ]): Result = {
27
27
// TODO
@@ -65,7 +65,7 @@ abstract class TreeInterpreter[R <: Reflection & Singleton](val reflect: R) {
65
65
def interpretBlock (stats : List [Statement ], expr : Term ): Result = {
66
66
val newEnv = stats.foldLeft(implicitly[Env ])((accEnv, stat) => stat match {
67
67
case ValDef (name, tpt, Some (rhs)) =>
68
- def evalRhs = eval(rhs) with accEnv
68
+ def evalRhs = eval(rhs) given accEnv
69
69
val evalRef : LocalValue =
70
70
if (stat.symbol.flags.is(Flags .Lazy )) LocalValue .lazyValFrom(evalRhs)
71
71
else if (stat.symbol.flags.is(Flags .Mutable )) LocalValue .varFrom(evalRhs)
@@ -76,10 +76,10 @@ abstract class TreeInterpreter[R <: Reflection & Singleton](val reflect: R) {
76
76
// TODO: record the environment for closure purposes
77
77
accEnv
78
78
case stat =>
79
- eval(stat) with accEnv
79
+ eval(stat) given accEnv
80
80
accEnv
81
81
})
82
- eval(expr) with newEnv
82
+ eval(expr) given newEnv
83
83
}
84
84
85
85
def interpretUnit (): AbstractAny
0 commit comments