From fdd4e53f5472e6527c0acdce2cf6299e19ff0836 Mon Sep 17 00:00:00 2001 From: Dov Murik Date: Wed, 30 Sep 2020 20:28:12 +0300 Subject: [PATCH] vhdl: defmacro! doesn't modify existing functions --- impls/vhdl/step8_macros.vhdl | 3 ++- impls/vhdl/step9_try.vhdl | 3 ++- impls/vhdl/stepA_mal.vhdl | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) 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; -- 2.20.1