Skip to content

Commit

Permalink
fix shadowing
Browse files Browse the repository at this point in the history
  • Loading branch information
ggreif committed Oct 2, 2024
1 parent af3fb01 commit 744e3ee
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions src/mo_interpreter/interpret.ml
Original file line number Diff line number Diff line change
Expand Up @@ -893,15 +893,20 @@ and interpret_obj env obj_sort self_id dec_fields (k : V.value V.cont) =
let self' = V.Blob self in
let ve_ex, ve_in = declare_dec_fields dec_fields V.Env.empty V.Env.empty in
let env' = adjoin_vals { env with self } ve_in in
(* Define self_id when there is non-shadowing way to do it *)
(* FIXME: when non-shadow *)
let env' = match self_id with
| Some self -> adjoin_vals env' (declare_id self)
| _ -> env' in
Option.iter (fun id -> define_id env' id self') self_id;
let increments () = (* FIXME: shadowing? *)
let fulfilled = V.Env.filter (fun _ -> Lib.Promise.is_fulfilled) ve_ex in
env.actor_env := V.Env.add self V.(Obj (Env.map Lib.Promise.value fulfilled)) !(env.actor_env)
(* Define self_id in inner scope if there is a non-shadowing way to do it *)
let env', increments =
if match self_id with | None -> false | Some self -> V.Env.mem self.it ve_in
then env', ignore (* would shadow *)
else begin
let env' = match self_id with
| Some self -> adjoin_vals env' (declare_id self)
| _ -> env' in
Option.iter (fun id -> define_id env' id self') self_id;
let increments () =
let fulfilled = V.Env.filter (fun _ -> Lib.Promise.is_fulfilled) ve_ex in
env.actor_env := V.Env.add self V.(Obj (Env.map Lib.Promise.value fulfilled)) !(env.actor_env) in
env', increments
end
in
interpret_dec_fields env' ~increments dec_fields ve_ex
(fun obj ->
Expand Down

0 comments on commit 744e3ee

Please sign in to comment.