diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2018-08-01 19:10:47 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-01 19:10:47 -0500 |
commit | 7b815181bfd58100478970f52b80461638fd42a8 (patch) | |
tree | 89d21d0ef97781eacb1a49c656db25d9946b031a /src/expr | |
parent | 113e7001e03ec7d1c2b79e0bb2cc9b762519bc22 (diff) |
Fix issues with printing parametric datatypes in smt2 (#2213)
Diffstat (limited to 'src/expr')
-rw-r--r-- | src/expr/expr_manager_template.cpp | 9 | ||||
-rw-r--r-- | src/expr/expr_manager_template.h | 3 | ||||
-rw-r--r-- | src/expr/node_manager.cpp | 6 | ||||
-rw-r--r-- | src/expr/node_manager.h | 6 |
4 files changed, 16 insertions, 8 deletions
diff --git a/src/expr/expr_manager_template.cpp b/src/expr/expr_manager_template.cpp index 457e54d9b..de128b3e5 100644 --- a/src/expr/expr_manager_template.cpp +++ b/src/expr/expr_manager_template.cpp @@ -831,10 +831,13 @@ SortType ExprManager::mkSort(const std::string& name, uint32_t flags) const { } SortConstructorType ExprManager::mkSortConstructor(const std::string& name, - size_t arity) const { + size_t arity, + uint32_t flags) const +{ NodeManagerScope nms(d_nodeManager); - return SortConstructorType(Type(d_nodeManager, - new TypeNode(d_nodeManager->mkSortConstructor(name, arity)))); + return SortConstructorType( + Type(d_nodeManager, + new TypeNode(d_nodeManager->mkSortConstructor(name, arity, flags)))); } /** diff --git a/src/expr/expr_manager_template.h b/src/expr/expr_manager_template.h index f211aa4c8..a9cdfc587 100644 --- a/src/expr/expr_manager_template.h +++ b/src/expr/expr_manager_template.h @@ -434,7 +434,8 @@ public: /** Make a sort constructor from a name and arity. */ SortConstructorType mkSortConstructor(const std::string& name, - size_t arity) const; + size_t arity, + uint32_t flags = SORT_FLAG_NONE) const; /** * Get the type of an expression. diff --git a/src/expr/node_manager.cpp b/src/expr/node_manager.cpp index d03bc4b54..74701cf11 100644 --- a/src/expr/node_manager.cpp +++ b/src/expr/node_manager.cpp @@ -645,7 +645,9 @@ TypeNode NodeManager::mkSort(TypeNode constructor, } TypeNode NodeManager::mkSortConstructor(const std::string& name, - size_t arity) { + size_t arity, + uint32_t flags) +{ Assert(arity > 0); NodeBuilder<> nb(this, kind::SORT_TYPE); Node sortTag = NodeBuilder<0>(this, kind::SORT_TAG); @@ -654,7 +656,7 @@ TypeNode NodeManager::mkSortConstructor(const std::string& name, setAttribute(type, expr::VarNameAttr(), name); setAttribute(type, expr::SortArityAttr(), arity); for(std::vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) { - (*i)->nmNotifyNewSortConstructor(type); + (*i)->nmNotifyNewSortConstructor(type, flags); } return type; } diff --git a/src/expr/node_manager.h b/src/expr/node_manager.h index 996caad87..71082ef9d 100644 --- a/src/expr/node_manager.h +++ b/src/expr/node_manager.h @@ -60,7 +60,7 @@ class NodeManagerListener { public: virtual ~NodeManagerListener() {} virtual void nmNotifyNewSort(TypeNode tn, uint32_t flags) {} - virtual void nmNotifyNewSortConstructor(TypeNode tn) {} + virtual void nmNotifyNewSortConstructor(TypeNode tn, uint32_t flags) {} virtual void nmNotifyInstantiateSortConstructor(TypeNode ctor, TypeNode sort, uint32_t flags) {} virtual void nmNotifyNewDatatypes( @@ -875,7 +875,9 @@ public: uint32_t flags = ExprManager::SORT_FLAG_NONE); /** Make a new sort with the given name and arity. */ - TypeNode mkSortConstructor(const std::string& name, size_t arity); + TypeNode mkSortConstructor(const std::string& name, + size_t arity, + uint32_t flags = ExprManager::SORT_FLAG_NONE); /** * Get the type for the given node and optionally do type checking. |