Disallow several indexed attributes for the same event parameter

This commit is contained in:
vlad 2022-12-17 14:16:24 +04:00 committed by Kamil Śliwak
parent c195782f96
commit 6a0ea174b8
3 changed files with 15 additions and 0 deletions

View File

@ -22,6 +22,7 @@ Compiler Features:
Bugfixes:
* Parser: Disallow several ``indexed`` attributes for the same event parameter.
* Yul Optimizer: Hash hex and decimal literals according to their value instead of their representation, improving the detection of equivalent functions.
* Solidity Upgrade Tool ``solidity-upgrade``: Fix the tool returning success code on uncaught exceptions.
* SMTChecker: Fix display error for negative integers that are one more than powers of two.

View File

@ -785,7 +785,12 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(
else
{
if (_options.allowIndexed && token == Token::Indexed)
{
if (isIndexed)
parserError(5399_error, "Indexed already specified.");
isIndexed = true;
}
else if (token == Token::Constant || token == Token::Immutable)
{
if (mutability != VariableDeclaration::Mutability::Mutable)

View File

@ -0,0 +1,9 @@
contract c {
event e(uint indexed a, bytes3 indexed indexed s, bool indexed indexed indexed b);
event e2(uint indexed indexed a, bytes3 indexed s);
}
// ----
// ParserError 5399: (56-63): Indexed already specified.
// ParserError 5399: (80-87): Indexed already specified.
// ParserError 5399: (88-95): Indexed already specified.
// ParserError 5399: (126-133): Indexed already specified.