@@ -336,9 +336,12 @@ object Objects:
336
336
def emptyEnv (meth : Symbol )(using Context ): Data =
337
337
new LocalEnv (Map .empty, meth, NoEnv )(valsMap = mutable.Map .empty, varsMap = mutable.Map .empty)
338
338
339
- def valValue (x : Symbol )(using data : Data , ctx : Context ): Value = data.getVal(x).get
340
-
341
- def varAddr (x : Symbol )(using data : Data , ctx : Context ): Heap .Addr = data.getVar(x).get
339
+ def valValue (x : Symbol )(using data : Data , ctx : Context ): Value =
340
+ data.getVal(x) match
341
+ case Some (theValue) =>
342
+ theValue
343
+ case _ =>
344
+ Bottom
342
345
343
346
def getVal (x : Symbol )(using data : Data , ctx : Context ): Option [Value ] = data.getVal(x)
344
347
@@ -855,13 +858,16 @@ object Objects:
855
858
if sym.is(Flags .Mutable ) then
856
859
// Assume forward reference check is doing a good job
857
860
given Env .Data = env
858
- val addr = Env .varAddr(sym)
859
- if addr.owner == State .currentObject then
860
- Heap .read(addr)
861
- else
862
- errorReadOtherStaticObject(State .currentObject, addr.owner)
861
+ Env .getVar(sym) match
862
+ case Some (addr) =>
863
+ if addr.owner == State .currentObject then
864
+ Heap .read(addr)
865
+ else
866
+ errorReadOtherStaticObject(State .currentObject, addr.owner)
867
+ Bottom
868
+ end if
869
+ case _ =>
863
870
Bottom
864
- end if
865
871
else if sym.isPatternBound then
866
872
// TODO: handle patterns
867
873
Cold
@@ -908,11 +914,13 @@ object Objects:
908
914
Env .resolveEnv(sym.enclosingMethod, thisV, summon[Env .Data ]) match
909
915
case Some (thisV -> env) =>
910
916
given Env .Data = env
911
- val addr = Env .varAddr(sym)
912
- if addr.owner != State .currentObject then
913
- errorMutateOtherStaticObject(State .currentObject, addr.owner)
914
- else
915
- Heap .write(addr, value)
917
+ Env .getVar(sym) match
918
+ case Some (addr) =>
919
+ if addr.owner != State .currentObject then
920
+ errorMutateOtherStaticObject(State .currentObject, addr.owner)
921
+ else
922
+ Heap .write(addr, value)
923
+ case _ =>
916
924
917
925
case _ =>
918
926
report.warning(" Assigning to variables in outer scope. Calling trace:\n " + Trace .show, Trace .position)
0 commit comments