diff options
author | chriseth <chris@ethereum.org> | 2018-08-15 01:13:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-15 01:13:25 +0800 |
commit | 8f27fb1f4a14f369e8feb3ea22a38d50998cad5c (patch) | |
tree | ef6d1a3de53c84688c9db123b68836a366a9249d /libsolidity/analysis | |
parent | cc2dcf5c312bbc8cd7ad5e2b4dfbdb084f77fe03 (diff) | |
parent | f76d4d59197db344613de18d1bfcead34a5e42ba (diff) | |
download | dexon-solidity-8f27fb1f4a14f369e8feb3ea22a38d50998cad5c.tar.gz dexon-solidity-8f27fb1f4a14f369e8feb3ea22a38d50998cad5c.tar.zst dexon-solidity-8f27fb1f4a14f369e8feb3ea22a38d50998cad5c.zip |
Merge pull request #4542 from aarlt/constructor_natspec
Fix: natspec annotations on constructors
Diffstat (limited to 'libsolidity/analysis')
-rw-r--r-- | libsolidity/analysis/DocStringAnalyser.cpp | 34 | ||||
-rw-r--r-- | libsolidity/analysis/DocStringAnalyser.h | 11 |
2 files changed, 39 insertions, 6 deletions
diff --git a/libsolidity/analysis/DocStringAnalyser.cpp b/libsolidity/analysis/DocStringAnalyser.cpp index b3fb5258..c1b97def 100644 --- a/libsolidity/analysis/DocStringAnalyser.cpp +++ b/libsolidity/analysis/DocStringAnalyser.cpp @@ -48,7 +48,10 @@ bool DocStringAnalyser::visit(ContractDefinition const& _contract) bool DocStringAnalyser::visit(FunctionDefinition const& _function) { - handleCallable(_function, _function, _function.annotation()); + if (_function.isConstructor()) + handleConstructor(_function, _function, _function.annotation()); + else + handleCallable(_function, _function, _function.annotation()); return true; } @@ -66,15 +69,11 @@ bool DocStringAnalyser::visit(EventDefinition const& _event) return true; } -void DocStringAnalyser::handleCallable( +void DocStringAnalyser::checkParameters( CallableDeclaration const& _callable, - Documented const& _node, DocumentedAnnotation& _annotation ) { - static const set<string> validTags = set<string>{"author", "dev", "notice", "return", "param"}; - parseDocStrings(_node, _annotation, validTags, "functions"); - set<string> validParams; for (auto const& p: _callable.parameters()) validParams.insert(p->name()); @@ -89,6 +88,29 @@ void DocStringAnalyser::handleCallable( i->second.paramName + "\" not found in the parameter list of the function." ); + +} + +void DocStringAnalyser::handleConstructor( + CallableDeclaration const& _callable, + Documented const& _node, + DocumentedAnnotation& _annotation +) +{ + static const set<string> validTags = set<string>{"author", "dev", "notice", "param"}; + parseDocStrings(_node, _annotation, validTags, "constructor"); + checkParameters(_callable, _annotation); +} + +void DocStringAnalyser::handleCallable( + CallableDeclaration const& _callable, + Documented const& _node, + DocumentedAnnotation& _annotation +) +{ + static const set<string> validTags = set<string>{"author", "dev", "notice", "return", "param"}; + parseDocStrings(_node, _annotation, validTags, "functions"); + checkParameters(_callable, _annotation); } void DocStringAnalyser::parseDocStrings( diff --git a/libsolidity/analysis/DocStringAnalyser.h b/libsolidity/analysis/DocStringAnalyser.h index 158b4060..5d339428 100644 --- a/libsolidity/analysis/DocStringAnalyser.h +++ b/libsolidity/analysis/DocStringAnalyser.h @@ -48,6 +48,17 @@ private: virtual bool visit(ModifierDefinition const& _modifier) override; virtual bool visit(EventDefinition const& _event) override; + void checkParameters( + CallableDeclaration const& _callable, + DocumentedAnnotation& _annotation + ); + + void handleConstructor( + CallableDeclaration const& _callable, + Documented const& _node, + DocumentedAnnotation& _annotation + ); + void handleCallable( CallableDeclaration const& _callable, Documented const& _node, |