Disallow several indexed attributes for the same event parameter

This commit is contained in:
vlad
2023-01-20 19:53:02 +01:00
committed by Kamil Śliwak
parent c195782f96
commit 6a0ea174b8
3 changed files with 15 additions and 0 deletions
+1
View File
@@ -22,6 +22,7 @@ Compiler Features:
Bugfixes: 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. * 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. * 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. * SMTChecker: Fix display error for negative integers that are one more than powers of two.
+5
View File
@@ -785,7 +785,12 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(
else else
{ {
if (_options.allowIndexed && token == Token::Indexed) if (_options.allowIndexed && token == Token::Indexed)
{
if (isIndexed)
parserError(5399_error, "Indexed already specified.");
isIndexed = true; isIndexed = true;
}
else if (token == Token::Constant || token == Token::Immutable) else if (token == Token::Constant || token == Token::Immutable)
{ {
if (mutability != VariableDeclaration::Mutability::Mutable) if (mutability != VariableDeclaration::Mutability::Mutable)
@@ -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.