From: Dov Murik Date: Wed, 30 Sep 2020 17:28:12 +0000 (+0300) Subject: vhdl: defmacro! doesn't modify existing functions X-Git-Url: http://git.hcoop.net/jackhill/mal.git/commitdiff_plain/fdd4e53f5472e6527c0acdce2cf6299e19ff0836?hp=b9dd70c442bd57a74f2241ded0e8597bcb16ce36 vhdl: defmacro! doesn't modify existing functions --- diff --git a/impls/vhdl/step8_macros.vhdl b/impls/vhdl/step8_macros.vhdl index 9cc740ee..8b799ad4 100644 --- a/impls/vhdl/step8_macros.vhdl +++ b/impls/vhdl/step8_macros.vhdl @@ -291,11 +291,12 @@ architecture test of step8_macros is next; -- TCO elsif a0.string_val.all = "defmacro!" then - EVAL(ast.seq_val(2), env, val, sub_err); + EVAL(ast.seq_val(2), env, fn, sub_err); if sub_err /= null then err := sub_err; return; end if; + new_fn(fn.func_val.f_body, fn.func_val.f_args, fn.func_val.f_env, val); val.func_val.f_is_macro := true; env_set(env, ast.seq_val(1), val); result := val; diff --git a/impls/vhdl/step9_try.vhdl b/impls/vhdl/step9_try.vhdl index ad9612f2..583acb72 100644 --- a/impls/vhdl/step9_try.vhdl +++ b/impls/vhdl/step9_try.vhdl @@ -331,11 +331,12 @@ architecture test of step9_try is next; -- TCO elsif a0.string_val.all = "defmacro!" then - EVAL(ast.seq_val(2), env, val, sub_err); + EVAL(ast.seq_val(2), env, fn, sub_err); if sub_err /= null then err := sub_err; return; end if; + new_fn(fn.func_val.f_body, fn.func_val.f_args, fn.func_val.f_env, val); val.func_val.f_is_macro := true; env_set(env, ast.seq_val(1), val); result := val; diff --git a/impls/vhdl/stepA_mal.vhdl b/impls/vhdl/stepA_mal.vhdl index 3b461d2d..bcbaadcd 100644 --- a/impls/vhdl/stepA_mal.vhdl +++ b/impls/vhdl/stepA_mal.vhdl @@ -331,11 +331,12 @@ architecture test of stepA_mal is next; -- TCO elsif a0.string_val.all = "defmacro!" then - EVAL(ast.seq_val(2), env, val, sub_err); + EVAL(ast.seq_val(2), env, fn, sub_err); if sub_err /= null then err := sub_err; return; end if; + new_fn(fn.func_val.f_body, fn.func_val.f_args, fn.func_val.f_env, val); val.func_val.f_is_macro := true; env_set(env, ast.seq_val(1), val); result := val;