Merge pull request #3699 from ethereum/interfaceExternalVisibility

Defaults to external visibility for interfaces.
This commit is contained in:
Alex Beregszaszi
2018-04-03 15:15:36 +01:00
committed by GitHub
10 changed files with 52 additions and 60 deletions
+10
View File
@@ -50,6 +50,16 @@ void StaticAnalyzer::endVisit(ContractDefinition const&)
bool StaticAnalyzer::visit(FunctionDefinition const& _function)
{
const bool isInterface = m_currentContract->contractKind() == ContractDefinition::ContractKind::Interface;
if (_function.noVisibilitySpecified())
m_errorReporter.warning(
_function.location(),
"No visibility specified. Defaulting to \"" +
Declaration::visibilityToString(_function.visibility()) +
"\". " +
(isInterface ? "In interfaces it defaults to external." : "")
);
if (_function.isImplemented())
m_currentFunction = &_function;
else
+3 -12
View File
@@ -214,18 +214,9 @@ bool SyntaxChecker::visit(FunctionDefinition const& _function)
{
bool const v050 = m_sourceUnit->annotation().experimentalFeatures.count(ExperimentalFeature::V050);
if (_function.noVisibilitySpecified())
{
if (v050)
m_errorReporter.syntaxError(_function.location(), "No visibility specified.");
else
m_errorReporter.warning(
_function.location(),
"No visibility specified. Defaulting to \"" +
Declaration::visibilityToString(_function.visibility()) +
"\"."
);
}
if (v050 && _function.noVisibilitySpecified())
m_errorReporter.syntaxError(_function.location(), "No visibility specified.");
return true;
}