mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #8749 from aarlt/structured-docs-variables-aarlt-breaking
[BREAKING] Allow NatSpec comments for state variables.
This commit is contained in:
		
						commit
						b4c6fdb1ed
					
				| @ -60,25 +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( | ||||
| 					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." | ||||
| 			); | ||||
| 			parseDocStrings(_variable, _variable.annotation(), validNonPublicTags, "non-public state variables"); | ||||
| 	} | ||||
| 	return false; | ||||
| } | ||||
|  | ||||
| @ -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( | ||||
|  | ||||
| @ -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) ); | ||||
| @ -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"; | ||||
|  | ||||
| @ -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 | ||||
| @ -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; | ||||
|  | ||||
| @ -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"; | ||||
| @ -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"; | ||||
| @ -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"; | ||||
|  | ||||
| @ -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. | ||||
|  | ||||
| @ -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. | ||||
|  | ||||
| @ -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. | ||||
|  | ||||
| @ -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. | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user