From b5ecfbe5bc2afdf8f42ec67715794aefad9dfe0f Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Wed, 4 Jul 2018 18:04:44 +0200 Subject: Enforces visibility specifier and updates docs. --- libsolidity/analysis/SyntaxChecker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libsolidity/analysis/SyntaxChecker.cpp') diff --git a/libsolidity/analysis/SyntaxChecker.cpp b/libsolidity/analysis/SyntaxChecker.cpp index fba18a45..234c177c 100644 --- a/libsolidity/analysis/SyntaxChecker.cpp +++ b/libsolidity/analysis/SyntaxChecker.cpp @@ -201,7 +201,7 @@ bool SyntaxChecker::visit(FunctionDefinition const& _function) { bool const v050 = m_sourceUnit->annotation().experimentalFeatures.count(ExperimentalFeature::V050); - if (v050 && _function.noVisibilitySpecified()) + if (_function.noVisibilitySpecified()) m_errorReporter.syntaxError(_function.location(), "No visibility specified."); if (_function.isOldStyleConstructor()) -- cgit v1.2.3 From dfd2fee91d2d6158dc11146ddc1773ac5eb12c6a Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 10 Jul 2018 22:43:02 +0200 Subject: Suggests external for fallback and interface functions. --- libsolidity/analysis/SyntaxChecker.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'libsolidity/analysis/SyntaxChecker.cpp') diff --git a/libsolidity/analysis/SyntaxChecker.cpp b/libsolidity/analysis/SyntaxChecker.cpp index 234c177c..4d09e36d 100644 --- a/libsolidity/analysis/SyntaxChecker.cpp +++ b/libsolidity/analysis/SyntaxChecker.cpp @@ -197,12 +197,24 @@ bool SyntaxChecker::visit(PlaceholderStatement const&) return true; } +bool SyntaxChecker::visit(ContractDefinition const& _contract) +{ + m_isInterface = _contract.contractKind() == ContractDefinition::ContractKind::Interface; + return true; +} + bool SyntaxChecker::visit(FunctionDefinition const& _function) { bool const v050 = m_sourceUnit->annotation().experimentalFeatures.count(ExperimentalFeature::V050); if (_function.noVisibilitySpecified()) - m_errorReporter.syntaxError(_function.location(), "No visibility specified."); + { + string suggestedVisibility = _function.isFallback() || m_isInterface ? "external" : "public"; + m_errorReporter.syntaxError( + _function.location(), + "No visibility specified. Did you intend to add \"" + suggestedVisibility + "\"?" + ); + } if (_function.isOldStyleConstructor()) { -- cgit v1.2.3