aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libsolidity/analysis/StaticAnalyzer.cpp6
-rw-r--r--test/libsolidity/syntaxTests/visibility/interface/function_default.sol2
2 files changed, 5 insertions, 3 deletions
diff --git a/libsolidity/analysis/StaticAnalyzer.cpp b/libsolidity/analysis/StaticAnalyzer.cpp
index 20464765..d96f8748 100644
--- a/libsolidity/analysis/StaticAnalyzer.cpp
+++ b/libsolidity/analysis/StaticAnalyzer.cpp
@@ -51,12 +51,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())) +
- "\"."
+ Declaration::visibilityToString(_function.visibility()) +
+ "\". " +
+ (isInterface ? "In interfaces it defaults to external." : "")
);
if (_function.isImplemented())
m_currentFunction = &_function;
diff --git a/test/libsolidity/syntaxTests/visibility/interface/function_default.sol b/test/libsolidity/syntaxTests/visibility/interface/function_default.sol
index 9889d038..7b9044dd 100644
--- a/test/libsolidity/syntaxTests/visibility/interface/function_default.sol
+++ b/test/libsolidity/syntaxTests/visibility/interface/function_default.sol
@@ -3,4 +3,4 @@ interface I {
}
// ----
// Warning: Functions in interfaces should be declared external.
-// Warning: No visibility specified. Defaulting to "external".
+// Warning: No visibility specified. Defaulting to "public". In interfaces it defaults to external.