mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #69 from LianaHus/sol_enum_too_many_indexed_args
too many indexed arguments for event
This commit is contained in:
commit
3c25420b84
@ -85,6 +85,9 @@ void ContractDefinition::checkTypeRequirements()
|
|||||||
for (ASTPointer<VariableDeclaration> const& variable: m_stateVariables)
|
for (ASTPointer<VariableDeclaration> const& variable: m_stateVariables)
|
||||||
variable->checkTypeRequirements();
|
variable->checkTypeRequirements();
|
||||||
|
|
||||||
|
for (ASTPointer<EventDefinition> const& event: events())
|
||||||
|
event->checkTypeRequirements();
|
||||||
|
|
||||||
for (ASTPointer<ModifierDefinition> const& modifier: functionModifiers())
|
for (ASTPointer<ModifierDefinition> const& modifier: functionModifiers())
|
||||||
modifier->checkTypeRequirements();
|
modifier->checkTypeRequirements();
|
||||||
|
|
||||||
@ -699,13 +702,13 @@ void EventDefinition::checkTypeRequirements()
|
|||||||
{
|
{
|
||||||
if (var->isIndexed())
|
if (var->isIndexed())
|
||||||
numIndexed++;
|
numIndexed++;
|
||||||
|
if (numIndexed > 3)
|
||||||
|
BOOST_THROW_EXCEPTION(createTypeError("More than 3 indexed arguments for event."));
|
||||||
if (!var->type()->canLiveOutsideStorage())
|
if (!var->type()->canLiveOutsideStorage())
|
||||||
BOOST_THROW_EXCEPTION(var->createTypeError("Type is required to live outside storage."));
|
BOOST_THROW_EXCEPTION(var->createTypeError("Type is required to live outside storage."));
|
||||||
if (!var->type()->externalType())
|
if (!var->type()->externalType())
|
||||||
BOOST_THROW_EXCEPTION(var->createTypeError("Internal type is not allowed as event parameter type."));
|
BOOST_THROW_EXCEPTION(var->createTypeError("Internal type is not allowed as event parameter type."));
|
||||||
}
|
}
|
||||||
if (numIndexed > 3)
|
|
||||||
BOOST_THROW_EXCEPTION(createTypeError("More than 3 indexed arguments for event."));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Block::checkTypeRequirements()
|
void Block::checkTypeRequirements()
|
||||||
|
@ -1050,7 +1050,6 @@ BOOST_AUTO_TEST_CASE(event_too_many_indexed)
|
|||||||
char const* text = R"(
|
char const* text = R"(
|
||||||
contract c {
|
contract c {
|
||||||
event e(uint indexed a, bytes3 indexed b, bool indexed c, uint indexed d);
|
event e(uint indexed a, bytes3 indexed b, bool indexed c, uint indexed d);
|
||||||
function f() { e(2, "abc", true); }
|
|
||||||
})";
|
})";
|
||||||
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user