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)