aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-08-25 17:41:48 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-08-29 03:07:43 +0800
commit0e11e5af10de880340a005f63f778909c8664c90 (patch)
tree2889d5cc2dc8be170c862345c0476e0b849923ab /libsolidity
parent3d228e98f1fe9dfdbebab2537eb1d8bcc1340d0b (diff)
downloaddexon-solidity-0e11e5af10de880340a005f63f778909c8664c90.tar.gz
dexon-solidity-0e11e5af10de880340a005f63f778909c8664c90.tar.zst
dexon-solidity-0e11e5af10de880340a005f63f778909c8664c90.zip
Include all overloaded events in ABI
Diffstat (limited to 'libsolidity')
-rw-r--r--libsolidity/ast/AST.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/libsolidity/ast/AST.cpp b/libsolidity/ast/AST.cpp
index 2e4ae72a..a805322b 100644
--- a/libsolidity/ast/AST.cpp
+++ b/libsolidity/ast/AST.cpp
@@ -176,11 +176,19 @@ vector<EventDefinition const*> const& ContractDefinition::interfaceEvents() cons
m_interfaceEvents.reset(new vector<EventDefinition const*>());
for (ContractDefinition const* contract: annotation().linearizedBaseContracts)
for (EventDefinition const* e: contract->events())
- if (eventsSeen.count(e->name()) == 0)
+ {
+ /// NOTE: this requires the "internal" version of an Event,
+ /// though here internal strictly refers to visibility,
+ /// and not to function encoding (jump vs. call)
+ auto const& function = e->functionType(true);
+ solAssert(function, "");
+ string eventSignature = function->externalSignature();
+ if (eventsSeen.count(eventSignature) == 0)
{
- eventsSeen.insert(e->name());
+ eventsSeen.insert(eventSignature);
m_interfaceEvents->push_back(e);
}
+ }
}
return *m_interfaceEvents;
}