mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Do not exclude public state variables when looking for conflicting declarations.
This commit is contained in:
parent
ce99a5ce7f
commit
30d9961efb
@ -32,6 +32,7 @@ Breaking Changes:
|
||||
* General: Remove assembly instruction aliases ``sha3`` and ``suicide``
|
||||
* General: C99-style scoping rules are enforced now. This was already the case in the experimental 0.5.0 mode.
|
||||
* General: Disallow combining hex numbers with unit denominations (e.g. ``0x1e wei``). This was already the case in the experimental 0.5.0 mode.
|
||||
* Name Resolver: Do not exclude public state variables when looking for conflicting declarations.
|
||||
* Optimizer: Remove the no-op ``PUSH1 0 NOT AND`` sequence.
|
||||
* Parser: Disallow trailing dots that are not followed by a number.
|
||||
* Parser: Remove ``constant`` as function state mutability modifer.
|
||||
|
@ -49,16 +49,9 @@ Declaration const* DeclarationContainer::conflictingDeclaration(
|
||||
dynamic_cast<MagicVariableDeclaration const*>(&_declaration)
|
||||
)
|
||||
{
|
||||
// check that all other declarations with the same name are functions or a public state variable or events.
|
||||
// And then check that the signatures are different.
|
||||
// check that all other declarations are of the same kind
|
||||
for (Declaration const* declaration: declarations)
|
||||
{
|
||||
if (auto variableDeclaration = dynamic_cast<VariableDeclaration const*>(declaration))
|
||||
{
|
||||
if (variableDeclaration->isStateVariable() && !variableDeclaration->isConstant() && variableDeclaration->isPublic())
|
||||
continue;
|
||||
return declaration;
|
||||
}
|
||||
if (
|
||||
dynamic_cast<FunctionDefinition const*>(&_declaration) &&
|
||||
!dynamic_cast<FunctionDefinition const*>(declaration)
|
||||
|
@ -8,4 +8,5 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (150-179): Identifier already declared.
|
||||
// DeclarationError: (114-120): Identifier not found or not unique.
|
||||
|
@ -0,0 +1,6 @@
|
||||
contract C {
|
||||
function f(uint) public pure {}
|
||||
uint public f = 0;
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (53-70): Identifier already declared.
|
@ -0,0 +1,6 @@
|
||||
contract C {
|
||||
uint public f = 0;
|
||||
function f(uint) public pure {}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (40-71): Identifier already declared.
|
@ -0,0 +1,14 @@
|
||||
// This used to crash with some compiler versions.
|
||||
contract SomeContract {
|
||||
|
||||
uint public balance = 0;
|
||||
|
||||
function balance(uint number) public {}
|
||||
|
||||
function doSomething() public {
|
||||
balance(3);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (106-145): Identifier already declared.
|
||||
// TypeError: (185-195): Type is not callable
|
Loading…
Reference in New Issue
Block a user