mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #3108 from ethereum/remove-callcode
Turn usage of callcode into an error as experimental 0.5.0 feature
This commit is contained in:
		
						commit
						0ae4aad8f3
					
				| @ -1,6 +1,7 @@ | ||||
| ### 0.4.19 (unreleased) | ||||
| 
 | ||||
| Features: | ||||
|  * Syntax Checker: Turn the usage of ``callcode`` into an error as experimental 0.5.0 feature. | ||||
| 
 | ||||
| Bugfixes: | ||||
| 
 | ||||
|  | ||||
| @ -150,10 +150,18 @@ bool StaticAnalyzer::visit(MemberAccess const& _memberAccess) | ||||
| 	if (_memberAccess.memberName() == "callcode") | ||||
| 		if (auto const* type = dynamic_cast<FunctionType const*>(_memberAccess.annotation().type.get())) | ||||
| 			if (type->kind() == FunctionType::Kind::BareCallCode) | ||||
| 				m_errorReporter.warning( | ||||
| 					_memberAccess.location(), | ||||
| 					"\"callcode\" has been deprecated in favour of \"delegatecall\"." | ||||
| 				); | ||||
| 			{ | ||||
| 				if (m_currentContract->sourceUnit().annotation().experimentalFeatures.count(ExperimentalFeature::V050)) | ||||
| 					m_errorReporter.typeError( | ||||
| 						_memberAccess.location(), | ||||
| 						"\"callcode\" has been deprecated in favour of \"delegatecall\"." | ||||
| 					); | ||||
| 				else | ||||
| 					m_errorReporter.warning( | ||||
| 						_memberAccess.location(), | ||||
| 						"\"callcode\" has been deprecated in favour of \"delegatecall\"." | ||||
| 					); | ||||
| 			} | ||||
| 
 | ||||
| 	if (m_constructor && m_currentContract) | ||||
| 		if (ContractType const* type = dynamic_cast<ContractType const*>(_memberAccess.expression().annotation().type.get())) | ||||
|  | ||||
| @ -4783,6 +4783,16 @@ BOOST_AUTO_TEST_CASE(warn_about_callcode) | ||||
| 		} | ||||
| 	)"; | ||||
| 	CHECK_WARNING(text, "\"callcode\" has been deprecated in favour of \"delegatecall\""); | ||||
| 	text = R"( | ||||
| 		pragma experimental "v0.5.0"; | ||||
| 		contract test { | ||||
| 			function f() pure public { | ||||
| 				var x = address(0x12).callcode; | ||||
| 				x; | ||||
| 			} | ||||
| 		} | ||||
| 	)"; | ||||
| 	CHECK_ERROR(text, TypeError, "\"callcode\" has been deprecated in favour of \"delegatecall\""); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(no_warn_about_callcode_as_function) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user