Defaults to external visibility for interfaces.

This commit is contained in:
bitshift
2018-04-03 11:16:44 +02:00
committed by Erik Kundt
parent 3bb54e8bd5
commit 8fe1cfb12e
4 changed files with 24 additions and 12 deletions
+8
View File
@@ -50,6 +50,14 @@ 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 \"" +
(isInterface ? "external" : Declaration::visibilityToString(_function.visibility())) +
"\"."
);
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;
}