Commit d8737fd4864fa1ceed5e1ace0021f5006b16dac3

Thomas de Grivel 2023-09-05T15:16:41

tests ok

diff --git a/libc3/env.c b/libc3/env.c
index 12125db..bb66b92 100644
--- a/libc3/env.c
+++ b/libc3/env.c
@@ -296,16 +296,6 @@ bool env_eval_equal_tag (s_env *env, const s_tag *a, const s_tag *b,
           b->data.ident.sym->str.ptr.ps8);
     return false;
   }
-  if (! is_unbound_a) {
-    if (! env_eval_tag(env, a, &tmp_a))
-      return false;
-    a = &tmp_a;
-  }
-  if (! is_unbound_b) {
-    if (! env_eval_tag(env, b, &tmp_b))
-      return false;
-    b = &tmp_b;
-  }
   if (is_unbound_a) {
     tag_copy(b, dest);
     frame_binding_new(env->frame, a->data.ident.sym, b);
diff --git a/test/env_test.c b/test/env_test.c
index 7fa0d5b..2dad03c 100644
--- a/test/env_test.c
+++ b/test/env_test.c
@@ -47,6 +47,8 @@ TEST_CASE(env_eval_equal_tag)
   env_init(&env);
   env.frame = frame_init(&frame, env.frame);
   test_context("x = (1, 2)");
+  TEST_ASSERT(env_eval_equal_tag(&env, tag_init_1(&x, "x"),
+                                 tag_init_1(&y, "(1, 2)"), &z));
   TEST_ASSERT(frame_get(&frame, sym_1("x")));
   env.frame = frame_clean(&frame);
   env_clean(&env);
diff --git a/test/ic3/equal.in b/test/ic3/equal.in
index 74624a2..dada6b5 100644
--- a/test/ic3/equal.in
+++ b/test/ic3/equal.in
@@ -1,4 +1,4 @@
 a = 1
 b = 1
-a = b
-(a, c) = (c, b)
+a = 2
+(a, b) = (1, 2)
diff --git a/test/ic3/equal.out.expected b/test/ic3/equal.out.expected
index 85ecfff..b6d8518 100644
--- a/test/ic3/equal.out.expected
+++ b/test/ic3/equal.out.expected
@@ -1,4 +1,4 @@
 1
 1
-1
-(1, 1)
+2
+(1, 2)
diff --git a/test/ic3/list.out.expected b/test/ic3/list.out.expected
index 07eec58..d3385af 100644
--- a/test/ic3/list.out.expected
+++ b/test/ic3/list.out.expected
@@ -20,3 +20,4 @@
 (:a, :b, :c, :d)
 (:a, :b, :c | :d)
 (:a, :b, :c | :d)
+(2, 4, 6, 8)