diff --git a/libc3/env.c b/libc3/env.c
index ae70669..e573986 100644
--- a/libc3/env.c
+++ b/libc3/env.c
@@ -318,12 +318,12 @@ bool env_eval_equal_tag (s_env *env, const s_tag *a, const s_tag *b,
return false;
}
if (is_unbound_a) {
- tag_copy(b, dest);
+ env_eval_tag(env, b, dest);
frame_binding_new(env->frame, a->data.ident.sym, b);
return true;
}
if (is_unbound_b) {
- tag_copy(a, dest);
+ env_eval_tag(env, a, dest);
frame_binding_new(env->frame, b->data.ident.sym, a);
return true;
}
diff --git a/test/ic3/call.in b/test/ic3/call.in
index 9cfcb23..427a171 100644
--- a/test/ic3/call.in
+++ b/test/ic3/call.in
@@ -8,6 +8,6 @@ quote Test.test(1, 2)
quote Test.test(1, 2, 3)
quote first((1, 2))
quote C3.first((1, 2))
-
first((1, 2))
C3.first((2, 3))
+(1 + 2)
diff --git a/test/ic3/call.out.expected b/test/ic3/call.out.expected
index 4dd359e..b9a0bb3 100644
--- a/test/ic3/call.out.expected
+++ b/test/ic3/call.out.expected
@@ -10,3 +10,4 @@ first((1, 2))
C3.first((1, 2))
1
2
+3
diff --git a/test/ic3/op.in b/test/ic3/op.in
index 3a87a8c..1247df2 100644
--- a/test/ic3/op.in
+++ b/test/ic3/op.in
@@ -6,3 +6,5 @@ quote 1 + 2 / 3 * 4 - 5
1 + 2 / 3
1 + 2 / 3 * 4
1 + 2 / 3 * 4 - 5
+(1 + 2)
+a = (1 + 2)
diff --git a/test/ic3/op.out.expected b/test/ic3/op.out.expected
index 3b58e11..7759641 100644
--- a/test/ic3/op.out.expected
+++ b/test/ic3/op.out.expected
@@ -6,3 +6,5 @@
1
1
-4
+3
+3