about summary refs log tree commit diff stats
path: root/054static_dispatch.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-11-10 18:45:13 -0800
committerKartik K. Agaram <vc@akkartik.com>2016-11-10 18:45:13 -0800
commit6e1307c8291d2f42dc17daba3ad78fe1f7c63b69 (patch)
tree8150facd2933436270819bface80ea51cbe9466d /054static_dispatch.cc
parent30117aba31e5a8376eac2a2acfd475a0c6886c46 (diff)
downloadmu-6e1307c8291d2f42dc17daba3ad78fe1f7c63b69.tar.gz
3660
Fix a place I forgot to update in commit 3309, moving to the new
type_tree representation.
Diffstat (limited to '054static_dispatch.cc')
-rw-r--r--054static_dispatch.cc19
1 files changed, 11 insertions, 8 deletions
diff --git a/054static_dispatch.cc b/054static_dispatch.cc
index c698edb2..6967b92a 100644
--- a/054static_dispatch.cc
+++ b/054static_dispatch.cc
@@ -94,14 +94,17 @@ bool deeply_equal_type_names(const reagent& a, const reagent& b) {
 bool deeply_equal_type_names(const type_tree* a, const type_tree* b) {
   if (!a) return !b;
   if (!b) return !a;
-  if (a->name == "literal" && b->name == "literal")
-    return true;
-  if (a->name == "literal")
-    return Literal_type_names.find(b->name) != Literal_type_names.end();
-  if (b->name == "literal")
-    return Literal_type_names.find(a->name) != Literal_type_names.end();
-  return a->name == b->name
-      && deeply_equal_type_names(a->left, b->left)
+  if (a->atom != b->atom) return false;
+  if (a->atom) {
+    if (a->name == "literal" && b->name == "literal")
+      return true;
+    if (a->name == "literal")
+      return Literal_type_names.find(b->name) != Literal_type_names.end();
+    if (b->name == "literal")
+      return Literal_type_names.find(a->name) != Literal_type_names.end();
+    return a->name == b->name;
+  }
+  return deeply_equal_type_names(a->left, b->left)
       && deeply_equal_type_names(a->right, b->right);
 }