From 781fdbafd2e00a21710204cc0d137a3fbc7fbe47 Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Wed, 6 May 2026 16:18:42 +0000 Subject: [PATCH] struct: fix test & shadowing test in analyzer --- model_with_structures/analyzer.ml | 39 ++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/model_with_structures/analyzer.ml b/model_with_structures/analyzer.ml index 7a8e5a6..826bde5 100644 --- a/model_with_structures/analyzer.ml +++ b/model_with_structures/analyzer.ml @@ -667,6 +667,23 @@ struct with Eval_error msg -> Printf.printf "%s" msg; [%expect {| read: spoiled value |}] + let%expect_test "simple call with write to ref with fix, dsl" = + prog_eval_noret ( + [ + defgu uT_r_aw; + defg (rfT uT_r_aw) rfg0E; + FunD ( + [moded @@ rfT @@ uT_aw], + wrS @@ drf @@ v0 + ) + ], + (callS vg2 [pE vg1]) #. + (wrS @@ drf @@ vg1) #. + (rdS @@ drf @@ vg1) + ); + Printf.printf "done!"; + [%expect {| done! |}] + let%expect_test "call inside call, dsl" = prog_eval_noret ( [ @@ -688,6 +705,27 @@ struct Printf.printf "done!"; [%expect {| done! |}] + let%expect_test "call to fix after call, dsl" = + prog_eval_noret ( + [ + defgu uT_r_aw; + defg (rfT uT_r_aw) rfg0E; + FunD ( + [moded @@ rfT @@ uT_aw], + wrS @@ drf @@ v0 + ); + FunD ( + [((In, Out), rfT @@ uT_aw)], + wrS @@ drf @@ v0 + ) + ], + (callS vg2 [pE vg1]) #. + (callS vg3 [pE vg1]) #. + (rdS @@ drf @@ vg1) + ); + Printf.printf "done!"; + [%expect {| done! |}] + let%expect_test "simple call with global variable usage, dsl" = prog_eval_noret ( [ @@ -793,7 +831,6 @@ struct Printf.printf "done!"; [%expect {| done! |}] - (* TODO: call after call test (fix test) *) (* TODO: recursive call test (for the future when memoization will be implemented) *) (* --- FIXME --- CURRENT REWRITE POINT --- FIXME --- *)