Fix bug related to portfolio with nullary operators.
authorajreynol <andrew.j.reynolds@gmail.com>
Fri, 14 Apr 2017 22:03:44 +0000 (17:03 -0500)
committerajreynol <andrew.j.reynolds@gmail.com>
Fri, 14 Apr 2017 22:03:44 +0000 (17:03 -0500)
src/expr/expr_template.cpp
src/expr/node_manager.cpp

index 4fbb0cd336a56b34c465b9ab61ca08d3cb4d3f11..806650e579b1b850cafd3c48aae9a4bc47b62e0a 100644 (file)
@@ -137,7 +137,12 @@ public:
         return to->mkConst(::CVC4::EmptySet(type));
       }
       return exportConstant(n, NodeManager::fromExprManager(to), vmap);
-    } else if(n.isVar()) {
+    } else if(n.getMetaKind() == metakind::NULLARY_OPERATOR ){
+      Expr from_e(from, new Node(n));
+      Type type = from->exportType(from_e.getType(), to, vmap);
+      NodeManagerScope nullScope(NULL);
+      return to->mkNullaryOperator(type, n.getKind()); // FIXME thread safety
+    } else if(n.getMetaKind() == metakind::VARIABLE) {
       Expr from_e(from, new Node(n));
       Expr& to_e = vmap.d_typeMap[from_e];
       if(! to_e.isNull()) {
index 7cf228403a1bba3cfbd4f1a5141bcca7912f1112..e9e92a5b171bb4c5e8a07fd88808f302d4f0397c 100644 (file)
@@ -459,7 +459,7 @@ TypeNode NodeManager::getType(TNode n, bool check)
   /* The check should have happened, if we asked for it. */
   Assert( !check || getAttribute(n, TypeCheckedAttr()) );
 
-  Debug("getType") << "type of " << n << " is " << typeNode << endl;
+  Debug("getType") << "type of " << &n << " " <<  n << " is " << typeNode << endl;
   return typeNode;
 }
 
@@ -799,10 +799,10 @@ Node NodeManager::mkNullaryOperator(const TypeNode& type, Kind k) {
     //setAttribute(n, TypeCheckedAttr(), true);
     d_unique_vars[k][type] = n;
     Assert( n.getMetaKind() == kind::metakind::NULLARY_OPERATOR );
-    Trace("ajr-temp") << this << "...made nullary operator " << n << std::endl;
+    Trace("ajr-temp") << this << "...made nullary operator " << n << " " << &n << " " << type << std::endl;
     return n;
   }else{
-    Trace("ajr-temp") << this << "...reuse nullary operator " << it->second << std::endl;
+    Trace("ajr-temp") << this << "...reuse nullary operator " << it->second << " " << &( it->second ) << std::endl;
     return it->second;
   }
 }