aboutsummaryrefslogtreecommitdiffstats
path: root/CallGraph.cpp
diff options
context:
space:
mode:
authorChristian <c@ethdev.com>2015-01-20 22:58:04 +0800
committerChristian <c@ethdev.com>2015-01-20 22:58:04 +0800
commitd854e56789c4bf2f5caca563dd0e660dababf181 (patch)
tree79b755313238b71fe44ae01504ac95ef6c38e338 /CallGraph.cpp
parent417f9c03d03a9fa52665bd238a42081d55df62c9 (diff)
downloaddexon-solidity-d854e56789c4bf2f5caca563dd0e660dababf181.tar
dexon-solidity-d854e56789c4bf2f5caca563dd0e660dababf181.tar.gz
dexon-solidity-d854e56789c4bf2f5caca563dd0e660dababf181.tar.bz2
dexon-solidity-d854e56789c4bf2f5caca563dd0e660dababf181.tar.lz
dexon-solidity-d854e56789c4bf2f5caca563dd0e660dababf181.tar.xz
dexon-solidity-d854e56789c4bf2f5caca563dd0e660dababf181.tar.zst
dexon-solidity-d854e56789c4bf2f5caca563dd0e660dababf181.zip
Include virtual function overrides in constructor context.
Diffstat (limited to 'CallGraph.cpp')
-rw-r--r--CallGraph.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/CallGraph.cpp b/CallGraph.cpp
index 88d874f3..8766114f 100644
--- a/CallGraph.cpp
+++ b/CallGraph.cpp
@@ -38,6 +38,7 @@ void CallGraph::addNode(ASTNode const& _node)
set<FunctionDefinition const*> const& CallGraph::getCalls()
{
+ computeCallGraph();
return m_functionsSeen;
}
@@ -45,8 +46,7 @@ void CallGraph::computeCallGraph()
{
while (!m_workQueue.empty())
{
- FunctionDefinition const* fun = m_workQueue.front();
- fun->accept(*this);
+ m_workQueue.front()->accept(*this);
m_workQueue.pop();
}
}
@@ -55,7 +55,12 @@ bool CallGraph::visit(Identifier const& _identifier)
{
FunctionDefinition const* fun = dynamic_cast<FunctionDefinition const*>(_identifier.getReferencedDeclaration());
if (fun)
+ {
+ if (m_overrideResolver)
+ fun = (*m_overrideResolver)(fun->getName());
+ solAssert(fun, "");
addFunction(*fun);
+ }
return true;
}