diff --git a/Changelog.md b/Changelog.md index 32abfb142..b550ae087 100644 --- a/Changelog.md +++ b/Changelog.md @@ -11,7 +11,7 @@ Compiler Features: Bugfixes: - + * NatSpec: Constructors and functions have consistent userdoc output. ### 0.6.8 (unreleased) diff --git a/libsolidity/interface/Natspec.cpp b/libsolidity/interface/Natspec.cpp index b78e46081..42fcb7dee 100644 --- a/libsolidity/interface/Natspec.cpp +++ b/libsolidity/interface/Natspec.cpp @@ -42,8 +42,12 @@ Json::Value Natspec::userDocumentation(ContractDefinition const& _contractDef) { string value = extractDoc(constructorDefinition->annotation().docTags, "notice"); if (!value.empty()) + { // add the constructor, only if we have any documentation to add - methods["constructor"] = Json::Value(value); + Json::Value user; + user["notice"] = Json::Value(value); + methods["constructor"] = user; + } } string notice = extractDoc(_contractDef.annotation().docTags, "notice"); diff --git a/test/libsolidity/SolidityNatspecJSON.cpp b/test/libsolidity/SolidityNatspecJSON.cpp index 13bd1f3b0..acb25fe29 100644 --- a/test/libsolidity/SolidityNatspecJSON.cpp +++ b/test/libsolidity/SolidityNatspecJSON.cpp @@ -849,16 +849,18 @@ BOOST_AUTO_TEST_CASE(dev_documenting_no_param_description) BOOST_AUTO_TEST_CASE(user_constructor) { - char const *sourceCode = R"( + char const* sourceCode = R"( contract test { /// @notice this is a really nice constructor constructor(uint a, uint second) public { } } )"; - char const *natspec = R"ABCDEF({ - "methods" : { - "constructor" : "this is a really nice constructor" + char const* natspec = R"ABCDEF({ + "methods": { + "constructor" : { + "notice": "this is a really nice constructor" + } } })ABCDEF"; @@ -867,7 +869,7 @@ BOOST_AUTO_TEST_CASE(user_constructor) BOOST_AUTO_TEST_CASE(user_constructor_and_function) { - char const *sourceCode = R"( + char const* sourceCode = R"( contract test { /// @notice this is a really nice constructor constructor(uint a, uint second) public { } @@ -876,12 +878,14 @@ BOOST_AUTO_TEST_CASE(user_constructor_and_function) } )"; - char const *natspec = R"ABCDEF({ + char const* natspec = R"ABCDEF({ "methods" : { "mul(uint256,uint256)" : { "notice" : "another multiplier" }, - "constructor" : "this is a really nice constructor" + "constructor" : { + "notice" : "this is a really nice constructor" + } } })ABCDEF";