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) | ### 0.4.19 (unreleased) | ||||||
| 
 | 
 | ||||||
| Features: | Features: | ||||||
|  |  * Syntax Checker: Turn the usage of ``callcode`` into an error as experimental 0.5.0 feature. | ||||||
| 
 | 
 | ||||||
| Bugfixes: | Bugfixes: | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -150,10 +150,18 @@ bool StaticAnalyzer::visit(MemberAccess const& _memberAccess) | |||||||
| 	if (_memberAccess.memberName() == "callcode") | 	if (_memberAccess.memberName() == "callcode") | ||||||
| 		if (auto const* type = dynamic_cast<FunctionType const*>(_memberAccess.annotation().type.get())) | 		if (auto const* type = dynamic_cast<FunctionType const*>(_memberAccess.annotation().type.get())) | ||||||
| 			if (type->kind() == FunctionType::Kind::BareCallCode) | 			if (type->kind() == FunctionType::Kind::BareCallCode) | ||||||
| 				m_errorReporter.warning( | 			{ | ||||||
| 					_memberAccess.location(), | 				if (m_currentContract->sourceUnit().annotation().experimentalFeatures.count(ExperimentalFeature::V050)) | ||||||
| 					"\"callcode\" has been deprecated in favour of \"delegatecall\"." | 					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 (m_constructor && m_currentContract) | ||||||
| 		if (ContractType const* type = dynamic_cast<ContractType const*>(_memberAccess.expression().annotation().type.get())) | 		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\""); | 	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) | BOOST_AUTO_TEST_CASE(no_warn_about_callcode_as_function) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user