summaryrefslogtreecommitdiff
path: root/src/expr
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-08-01 19:10:47 -0500
committerGitHub <noreply@github.com>2018-08-01 19:10:47 -0500
commit7b815181bfd58100478970f52b80461638fd42a8 (patch)
tree89d21d0ef97781eacb1a49c656db25d9946b031a /src/expr
parent113e7001e03ec7d1c2b79e0bb2cc9b762519bc22 (diff)
Fix issues with printing parametric datatypes in smt2 (#2213)
Diffstat (limited to 'src/expr')
-rw-r--r--src/expr/expr_manager_template.cpp9
-rw-r--r--src/expr/expr_manager_template.h3
-rw-r--r--src/expr/node_manager.cpp6
-rw-r--r--src/expr/node_manager.h6
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.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback