Update natspec comments on state variables.

- changing some warnings to errors
This commit is contained in:
Alexander Arlt 2020-05-20 11:25:23 -05:00
parent 189d30b3ee
commit cb5bfc7436
9 changed files with 26 additions and 37 deletions

View File

@ -60,25 +60,12 @@ bool DocStringAnalyser::visit(VariableDeclaration const& _variable)
{ {
if (_variable.isStateVariable()) 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()) if (_variable.isPublic())
parseDocStrings(_variable, _variable.annotation(), validPublicTags, "public state variables"); parseDocStrings(_variable, _variable.annotation(), validPublicTags, "public state variables");
else else
{ parseDocStrings(_variable, _variable.annotation(), validNonPublicTags, "non-public state variables");
parseDocStrings(_variable, _variable.annotation(), validPublicTags, "non-public state variables");
if (_variable.annotation().docTags.count("notice") > 0)
m_errorReporter.warning(
7816_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(
8532_error, _variable.documentation()->location(),
"Documentation tag @title and @author is only allowed on contract definitions. "
"It will be disallowed in 0.7.0."
);
} }
return false; return false;
} }

View File

@ -697,7 +697,7 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(
} }
if (!_options.isStateVariable && documentation != nullptr) 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) if (dynamic_cast<FunctionTypeName*>(type.get()) && _options.isStateVariable && m_scanner->currentToken() == Token::LBrace)
fatalParserError( fatalParserError(

View File

@ -11,6 +11,12 @@ contract thirdPartyPContractAbstract {
contract ptokenDB is tokenDB {} contract ptokenDB is tokenDB {}
/**
*
* @title Corion Platform Premium Token
* @author iFA @ Corion Platform
*
*/
contract premium is module, safeMath { contract premium is module, safeMath {
function replaceModule(address payable addr) external override returns (bool success) { function replaceModule(address payable addr) external override returns (bool success) {
require( super.isModuleHandler(msg.sender) ); require( super.isModuleHandler(msg.sender) );
@ -23,12 +29,6 @@ contract premium is module, safeMath {
require( _success && _active ); require( _success && _active );
_; _;
} }
/**
*
* @title Corion Platform Premium Token
* @author iFA @ Corion Platform
*
*/
string public name = "Corion Premium"; string public name = "Corion Premium";
string public symbol = "CORP"; string public symbol = "CORP";

View File

@ -11,6 +11,12 @@ contract thirdPartyContractAbstract {
function approvedCorionToken(address, uint256, bytes calldata) external returns (bool) {} function approvedCorionToken(address, uint256, bytes calldata) external returns (bool) {}
} }
/**
*
* @title Corion Platform Token
* @author iFA @ Corion Platform
*
*/
contract token is safeMath, module, announcementTypes { contract token is safeMath, module, announcementTypes {
/* /*
module callbacks module callbacks
@ -26,12 +32,7 @@ contract token is safeMath, module, announcementTypes {
require( _success && _active ); require( _success && _active );
_; _;
} }
/**
*
* @title Corion Platform Token
* @author iFA @ Corion Platform
*
*/
string public name = "Corion"; string public name = "Corion";
string public symbol = "COR"; string public symbol = "COR";
uint8 public decimals = 6; uint8 public decimals = 6;

View File

@ -254,7 +254,7 @@ BOOST_AUTO_TEST_CASE(natspec_comment_in_function_body)
/// fun1 description /// fun1 description
function fun1(uint256 a) { function fun1(uint256 a) {
var b; 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; uint256 c;
mapping(address=>bytes32) d; mapping(address=>bytes32) d;
bytes7 name = "Solidity"; bytes7 name = "Solidity";
@ -286,7 +286,7 @@ BOOST_AUTO_TEST_CASE(natspec_docstring_between_keyword_and_signature)
function ///I am in the wrong place function ///I am in the wrong place
fun1(uint256 a) { fun1(uint256 a) {
var b; 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; uint256 c;
mapping(address=>bytes32) d; mapping(address=>bytes32) d;
bytes7 name = "Solidity"; bytes7 name = "Solidity";
@ -310,9 +310,9 @@ BOOST_AUTO_TEST_CASE(natspec_docstring_after_signature)
contract test { contract test {
uint256 stateVar; uint256 stateVar;
function fun1(uint256 a) { 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; 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; uint256 c;
mapping(address=>bytes32) d; mapping(address=>bytes32) d;
bytes7 name = "Solidity"; bytes7 name = "Solidity";

View File

@ -4,4 +4,5 @@ contract C {
uint private state; 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.

View File

@ -3,4 +3,4 @@ contract test {
uint private state; 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.

View File

@ -4,4 +4,4 @@ contract C {
uint private state; 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.

View File

@ -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.