summaryrefslogtreecommitdiff
path: root/src/expr/symbol_table.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2019-08-10 14:26:02 -0500
committerGitHub <noreply@github.com>2019-08-10 14:26:02 -0500
commit03a99a427eaa8c679ede508e11561467a2291334 (patch)
treeb74688f17420c9d8a352b22eed339983d4e369ab /src/expr/symbol_table.cpp
parentd1f3225e26b9d64f065048885053392b10994e71 (diff)
Simplify how defined functions are tracked during parsing (#3177)
Diffstat (limited to 'src/expr/symbol_table.cpp')
-rw-r--r--src/expr/symbol_table.cpp59
1 files changed, 2 insertions, 57 deletions
diff --git a/src/expr/symbol_table.cpp b/src/expr/symbol_table.cpp
index dd75170b5..c14143ef1 100644
--- a/src/expr/symbol_table.cpp
+++ b/src/expr/symbol_table.cpp
@@ -344,21 +344,18 @@ class SymbolTable::Implementation {
Implementation()
: d_context(),
d_exprMap(new (true) CDHashMap<string, Expr>(&d_context)),
- d_typeMap(new (true) TypeMap(&d_context)),
- d_functions(new (true) CDHashSet<Expr, ExprHashFunction>(&d_context)) {
+ d_typeMap(new (true) TypeMap(&d_context))
+ {
d_overload_trie = new OverloadedTypeTrie(&d_context);
}
~Implementation() {
d_exprMap->deleteSelf();
d_typeMap->deleteSelf();
- d_functions->deleteSelf();
delete d_overload_trie;
}
bool bind(const string& name, Expr obj, bool levelZero, bool doOverload);
- bool bindDefinedFunction(const string& name, Expr obj, bool levelZero,
- bool doOverload);
void bindType(const string& name, Type t, bool levelZero = false);
void bindType(const string& name, const vector<Type>& params, Type t,
bool levelZero = false);
@@ -396,9 +393,6 @@ class SymbolTable::Implementation {
using TypeMap = CDHashMap<string, std::pair<vector<Type>, Type>>;
TypeMap* d_typeMap;
- /** A set of defined functions. */
- CDHashSet<Expr, ExprHashFunction>* d_functions;
-
//------------------------ operator overloading
// the null expression
Expr d_nullExpr;
@@ -430,40 +424,10 @@ bool SymbolTable::Implementation::bind(const string& name, Expr obj,
return true;
}
-bool SymbolTable::Implementation::bindDefinedFunction(const string& name,
- Expr obj, bool levelZero,
- bool doOverload) {
- PrettyCheckArgument(!obj.isNull(), obj, "cannot bind to a null Expr");
- ExprManagerScope ems(obj);
- if (doOverload) {
- if (!bindWithOverloading(name, obj)) {
- return false;
- }
- }
- if (levelZero) {
- d_exprMap->insertAtContextLevelZero(name, obj);
- d_functions->insertAtContextLevelZero(obj);
- } else {
- d_exprMap->insert(name, obj);
- d_functions->insert(obj);
- }
- return true;
-}
-
bool SymbolTable::Implementation::isBound(const string& name) const {
return d_exprMap->find(name) != d_exprMap->end();
}
-bool SymbolTable::Implementation::isBoundDefinedFunction(
- const string& name) const {
- CDHashMap<string, Expr>::const_iterator found = d_exprMap->find(name);
- return found != d_exprMap->end() && d_functions->contains((*found).second);
-}
-
-bool SymbolTable::Implementation::isBoundDefinedFunction(Expr func) const {
- return d_functions->contains(func);
-}
-
Expr SymbolTable::Implementation::lookup(const string& name) const {
Assert(isBound(name));
Expr expr = (*d_exprMap->find(name)).second;
@@ -646,15 +610,6 @@ bool SymbolTable::bind(const string& name,
return d_implementation->bind(name, obj, levelZero, doOverload);
}
-bool SymbolTable::bindDefinedFunction(const string& name,
- Expr obj,
- bool levelZero,
- bool doOverload)
-{
- return d_implementation->bindDefinedFunction(name, obj, levelZero,
- doOverload);
-}
-
void SymbolTable::bindType(const string& name, Type t, bool levelZero)
{
d_implementation->bindType(name, t, levelZero);
@@ -672,16 +627,6 @@ bool SymbolTable::isBound(const string& name) const
{
return d_implementation->isBound(name);
}
-
-bool SymbolTable::isBoundDefinedFunction(const string& name) const
-{
- return d_implementation->isBoundDefinedFunction(name);
-}
-
-bool SymbolTable::isBoundDefinedFunction(Expr func) const
-{
- return d_implementation->isBoundDefinedFunction(func);
-}
bool SymbolTable::isBoundType(const string& name) const
{
return d_implementation->isBoundType(name);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback