Skip to content

Commit

Permalink
Update natspec comments on state variables.
Browse files Browse the repository at this point in the history
- changing some warnings to errors
  • Loading branch information
aarlt committed May 20, 2020
1 parent 74b9b09 commit e7aa7fb
Show file tree
Hide file tree
Showing 10 changed files with 27 additions and 36 deletions.
17 changes: 3 additions & 14 deletions libsolidity/analysis/DocStringAnalyser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,23 +60,12 @@ bool DocStringAnalyser::visit(VariableDeclaration const& _variable)
{
if (_variable.isStateVariable())
{
static set<string> const validPublicTags = set<string>{"dev", "notice", "return", "title", "author"};
static set<string> const validPublicTags = set<string>{"dev", "notice", "return"};
static set<string> const validNonPublicTags = set<string>{"dev"};
if (_variable.isPublic())
parseDocStrings(_variable, _variable.annotation(), validPublicTags, "public state variables");
else
{
parseDocStrings(_variable, _variable.annotation(), validPublicTags, "non-public state variables");
if (_variable.annotation().docTags.count("notice") > 0)
m_errorReporter.warning(
9098_error, _variable.documentation()->location(),
"Documentation tag on non-public state variables will be disallowed in 0.7.0. You will need to use the @dev tag explicitly."
);
}
if (_variable.annotation().docTags.count("title") > 0 || _variable.annotation().docTags.count("author") > 0)
m_errorReporter.warning(
4822_error, _variable.documentation()->location(),
"Documentation tag @title and @author is only allowed on contract definitions. It will be disallowed in 0.7.0."
);
parseDocStrings(_variable, _variable.annotation(), validNonPublicTags, "non-public state variables");
}
return false;
}
Expand Down
2 changes: 1 addition & 1 deletion libsolidity/parsing/Parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -697,7 +697,7 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(
}

if (!_options.isStateVariable && documentation != nullptr)
parserWarning(2837_error, "Only state variables can have a docstring. This will be disallowed in 0.7.0.");
parserError(2837_error, "Only state variables can have a docstring.");

if (dynamic_cast<FunctionTypeName*>(type.get()) && _options.isStateVariable && m_scanner->currentToken() == Token::LBrace)
fatalParserError(
Expand Down
12 changes: 6 additions & 6 deletions test/compilationTests/corion/premium.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ contract thirdPartyPContractAbstract {

contract ptokenDB is tokenDB {}

/**
*
* @title Corion Platform Premium Token
* @author iFA @ Corion Platform
*
*/
contract premium is module, safeMath {
function replaceModule(address payable addr) external override returns (bool success) {
require( super.isModuleHandler(msg.sender) );
Expand All @@ -23,12 +29,6 @@ contract premium is module, safeMath {
require( _success && _active );
_;
}
/**
*
* @title Corion Platform Premium Token
* @author iFA @ Corion Platform
*
*/

string public name = "Corion Premium";
string public symbol = "CORP";
Expand Down
13 changes: 7 additions & 6 deletions test/compilationTests/corion/token.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ contract thirdPartyContractAbstract {
function approvedCorionToken(address, uint256, bytes calldata) external returns (bool) {}
}

/**
*
* @title Corion Platform Token
* @author iFA @ Corion Platform
*
*/
contract token is safeMath, module, announcementTypes {
/*
module callbacks
Expand All @@ -26,12 +32,7 @@ contract token is safeMath, module, announcementTypes {
require( _success && _active );
_;
}
/**
*
* @title Corion Platform Token
* @author iFA @ Corion Platform
*
*/

string public name = "Corion";
string public symbol = "COR";
uint8 public decimals = 6;
Expand Down
2 changes: 1 addition & 1 deletion test/externalTests/colony.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ function colony_test
FORCE_ABIv2=false
CONFIG="truffle.js"

truffle_setup https:/solidity-external-tests/colonyNetwork.git develop_070
truffle_setup https:/solidity-external-tests/colonyNetwork.git natspec_on_state_variables
run_install install_fn

cd lib
Expand Down
8 changes: 4 additions & 4 deletions test/libsolidity/SolidityParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ BOOST_AUTO_TEST_CASE(natspec_comment_in_function_body)
/// fun1 description
function fun1(uint256 a) {
var b;
/// I should not interfere with actual natspec comments
// I should not interfere with actual natspec comments (natspec comments on local variables not allowed anymore)
uint256 c;
mapping(address=>bytes32) d;
bytes7 name = "Solidity";
Expand Down Expand Up @@ -286,7 +286,7 @@ BOOST_AUTO_TEST_CASE(natspec_docstring_between_keyword_and_signature)
function ///I am in the wrong place
fun1(uint256 a) {
var b;
/// I should not interfere with actual natspec comments
// I should not interfere with actual natspec comments (natspec comments on local variables not allowed anymore)
uint256 c;
mapping(address=>bytes32) d;
bytes7 name = "Solidity";
Expand All @@ -310,9 +310,9 @@ BOOST_AUTO_TEST_CASE(natspec_docstring_after_signature)
contract test {
uint256 stateVar;
function fun1(uint256 a) {
/// I should have been above the function signature
// I should have been above the function signature (natspec comments on local variables not allowed anymore)
var b;
/// I should not interfere with actual natspec comments
// I should not interfere with actual natspec comments (natspec comments on local variables not allowed anymore)
uint256 c;
mapping(address=>bytes32) d;
bytes7 name = "Solidity";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ contract C {
uint private state;
}
// ----
// Warning: (17-56): Documentation tag @title and @author is only allowed on contract definitions. It will be disallowed in 0.7.0.
// DocstringParsingError: (17-56): Documentation tag @author not valid for non-public state variables.
// DocstringParsingError: (17-56): Documentation tag @title not valid for non-public state variables.
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ contract test {
uint private state;
}
// ----
// DocstringParsingError: (18-47): Documentation tag "@return" is only allowed on public state-variables.
// DocstringParsingError: (18-47): Documentation tag @return not valid for non-public state variables.
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ contract C {
uint private state;
}
// ----
// Warning: (17-74): Documentation tag on non-public state variables will be disallowed in 0.7.0. You will need to use the @dev tag explicitly.
// DocstringParsingError: (17-74): Documentation tag @notice not valid for non-public state variables.
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ contract C {
}
}
// ----
// Warning: (290-295): Only state variables can have a docstring. This will be disallowed in 0.7.0.
// ParserError: (290-295): Only state variables can have a docstring.

0 comments on commit e7aa7fb

Please sign in to comment.