Warn if no visibility is specified on contract functions.

This commit is contained in:
Alex Beregszaszi
2017-09-14 15:58:04 +01:00
parent 1c85ba10e1
commit 5b5367dc12
4 changed files with 16 additions and 1 deletions
+13 -1
View File
@@ -138,7 +138,7 @@ bool SyntaxChecker::visit(WhileStatement const&)
return true;
}
void SyntaxChecker::endVisit(WhileStatement const& )
void SyntaxChecker::endVisit(WhileStatement const&)
{
m_inLoopDepth--;
}
@@ -193,6 +193,18 @@ bool SyntaxChecker::visit(PlaceholderStatement const&)
return true;
}
bool SyntaxChecker::visit(FunctionDefinition const& _function)
{
if (_function.noVisibilitySpecified())
m_errorReporter.warning(
_function.location(),
"No visibility specified. Defaulting to \"" +
Declaration::visibilityToString(_function.visibility()) +
"\"."
);
return true;
}
bool SyntaxChecker::visit(FunctionTypeName const& _node)
{
for (auto const& decl: _node.parameterTypeList()->parameters())
+1
View File
@@ -66,6 +66,7 @@ private:
virtual bool visit(PlaceholderStatement const& _placeholderStatement) override;
virtual bool visit(FunctionDefinition const& _function) override;
virtual bool visit(FunctionTypeName const& _node) override;
ErrorReporter& m_errorReporter;
+1
View File
@@ -180,6 +180,7 @@ public:
/// @returns the declared name.
ASTString const& name() const { return *m_name; }
bool noVisibilitySpecified() const { return m_visibility == Visibility::Default; }
Visibility visibility() const { return m_visibility == Visibility::Default ? defaultVisibility() : m_visibility; }
bool isPublic() const { return visibility() >= Visibility::Public; }
virtual bool isVisibleInContract() const { return visibility() != Visibility::External; }