diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-08-15 20:22:50 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2017-09-14 22:58:04 +0800 |
commit | 5b5367dc1237634886a8ccf1029d95b83a0d8e63 (patch) | |
tree | 517f18eb028060f64efd424a8b0560e07e14f3c6 | |
parent | 1c85ba10e13879f680579031234c911099433596 (diff) | |
download | dexon-solidity-5b5367dc1237634886a8ccf1029d95b83a0d8e63.tar dexon-solidity-5b5367dc1237634886a8ccf1029d95b83a0d8e63.tar.gz dexon-solidity-5b5367dc1237634886a8ccf1029d95b83a0d8e63.tar.bz2 dexon-solidity-5b5367dc1237634886a8ccf1029d95b83a0d8e63.tar.lz dexon-solidity-5b5367dc1237634886a8ccf1029d95b83a0d8e63.tar.xz dexon-solidity-5b5367dc1237634886a8ccf1029d95b83a0d8e63.tar.zst dexon-solidity-5b5367dc1237634886a8ccf1029d95b83a0d8e63.zip |
Warn if no visibility is specified on contract functions.
-rw-r--r-- | Changelog.md | 1 | ||||
-rw-r--r-- | libsolidity/analysis/SyntaxChecker.cpp | 14 | ||||
-rw-r--r-- | libsolidity/analysis/SyntaxChecker.h | 1 | ||||
-rw-r--r-- | libsolidity/ast/AST.h | 1 |
4 files changed, 16 insertions, 1 deletions
diff --git a/Changelog.md b/Changelog.md index d0d4d8df..cbecb3cd 100644 --- a/Changelog.md +++ b/Changelog.md @@ -4,6 +4,7 @@ Features: * Support ``pragma experimental v0.5.0;`` to turn on upcoming breaking changes. * Code Generator: Added ``.selector`` member on external function types to retrieve their signature. * Optimizer: Add new optimization step to remove unused ``JUMPDEST``s. + * Syntax Checker: Warn if no visibility is specified on contract functions. * Type Checker: Display helpful warning for unused function arguments/return parameters. * Type Checker: Do not show the same error multiple times for events. * Type Checker: Greatly reduce the number of duplicate errors shown for duplicate constructors and functions. diff --git a/libsolidity/analysis/SyntaxChecker.cpp b/libsolidity/analysis/SyntaxChecker.cpp index d2571cd3..187eb26f 100644 --- a/libsolidity/analysis/SyntaxChecker.cpp +++ b/libsolidity/analysis/SyntaxChecker.cpp @@ -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()) diff --git a/libsolidity/analysis/SyntaxChecker.h b/libsolidity/analysis/SyntaxChecker.h index fa34bab3..7fffbec0 100644 --- a/libsolidity/analysis/SyntaxChecker.h +++ b/libsolidity/analysis/SyntaxChecker.h @@ -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; diff --git a/libsolidity/ast/AST.h b/libsolidity/ast/AST.h index cecc2f04..75b8e946 100644 --- a/libsolidity/ast/AST.h +++ b/libsolidity/ast/AST.h @@ -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; } |