Merge pull request #3923 from ethereum/warnConstructor

Warn about functions named "constructor".
This commit is contained in:
Alex Beregszaszi 2018-04-18 22:22:58 +01:00 committed by GitHub
commit 39b7b44a8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 2 deletions

View File

@ -1,8 +1,9 @@
### 0.4.23 (unreleased)
Features:
* SMTChecker: Integration with CVC4 SMT solver
* Build system: Support Ubuntu Bionic.
* SMTChecker: Integration with CVC4 SMT solver
* Syntax Checker: Warn about functions named "constructor".
Bugfixes:
* Type Checker: Do not complain about new-style constructor and fallback function to have the same name.

View File

@ -237,8 +237,13 @@ bool SyntaxChecker::visit(FunctionDefinition const& _function)
if (v050)
m_errorReporter.syntaxError(_function.location(), "Functions without implementation cannot have modifiers.");
else
m_errorReporter.warning( _function.location(), "Modifiers of functions without implementation are ignored." );
m_errorReporter.warning(_function.location(), "Modifiers of functions without implementation are ignored." );
}
if (_function.name() == "constructor")
m_errorReporter.warning(_function.location(),
"This function is named \"constructor\" but is not the constructor of the contract. "
"If you intend this to be a constructor, use \"constructor(...) { ... }\" without the \"function\" keyword to define it."
);
return true;
}

View File

@ -0,0 +1,5 @@
contract C {
function constructor() public;
}
// ----
// Warning: (17-47): This function is named "constructor" but is not the constructor of the contract. If you intend this to be a constructor, use "constructor(...) { ... }" without the "function" keyword to define it.