about summary refs log tree commit diff stats
path: root/010vm.cc
diff options
context:
space:
mode:
Diffstat (limited to '010vm.cc')
-rw-r--r--010vm.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/010vm.cc b/010vm.cc
index 0b2888f0..312aa3fc 100644
--- a/010vm.cc
+++ b/010vm.cc
@@ -484,11 +484,18 @@ bool deeply_equal(const string_tree* a, const string_tree* b) {
       && deeply_equal(a->right, b->right);
 }
 
+:(before "End Globals")
+set<string> Literal_type_names;
+:(before "End One-time Setup")
+Literal_type_names.insert("literal");
+Literal_type_names.insert("number");
+Literal_type_names.insert("character");
+:(code)
 bool deeply_equal_types(const string_tree* a, const string_tree* b) {
   if (!a) return !b;
   if (!b) return !a;
-  if (a->value == "character" && b->value == "number") return true;
-  if (a->value == "number" && b->value == "character") return true;
+  if (Literal_type_names.find(a->value) != Literal_type_names.end())
+    return Literal_type_names.find(b->value) != Literal_type_names.end();
   return a->value == b->value
       && deeply_equal_types(a->left, b->left)
       && deeply_equal_types(a->right, b->right);