mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge branch 'develop' of https://github.com/ethereum/cpp-ethereum into develop
This commit is contained in:
		
						commit
						e832fec8d5
					
				| @ -2479,6 +2479,42 @@ BOOST_AUTO_TEST_CASE(struct_copy) | ||||
| 	BOOST_CHECK(callContractFunction("retrieve(uint256)", 8) == encodeArgs(0, 0, 0, 0)); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(struct_containing_bytes_copy_and_delete) | ||||
| { | ||||
| 	char const* sourceCode = R"( | ||||
| 		contract c { | ||||
| 			struct Struct { uint a; bytes data; uint b; } | ||||
| 			Struct data1; | ||||
| 			Struct data2; | ||||
| 			function set(uint _a, bytes _data, uint _b) external returns (bool) { | ||||
| 				data1.a = _a; | ||||
| 				data1.b = _b; | ||||
| 				data1.data = _data; | ||||
| 				return true; | ||||
| 			} | ||||
| 			function copy() returns (bool) { | ||||
| 				data1 = data2; | ||||
| 				return true; | ||||
| 			} | ||||
| 			function del() returns (bool) { | ||||
| 				delete data1; | ||||
| 				return true; | ||||
| 			} | ||||
| 		} | ||||
| 	)"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	string data = "123456789012345678901234567890123"; | ||||
| 	BOOST_CHECK(m_state.storage(m_contractAddress).empty()); | ||||
| 	BOOST_CHECK(callContractFunction("set(uint256,bytes,uint256)", u256(data.length()), 12, data, 13) == encodeArgs(true)); | ||||
| 	BOOST_CHECK(!m_state.storage(m_contractAddress).empty()); | ||||
| 	BOOST_CHECK(callContractFunction("copy()") == encodeArgs(true)); | ||||
| 	BOOST_CHECK(m_state.storage(m_contractAddress).empty()); | ||||
| 	BOOST_CHECK(callContractFunction("set(uint256,bytes,uint256)", u256(data.length()), 12, data, 13) == encodeArgs(true)); | ||||
| 	BOOST_CHECK(!m_state.storage(m_contractAddress).empty()); | ||||
| 	BOOST_CHECK(callContractFunction("del()") == encodeArgs(true)); | ||||
| 	BOOST_CHECK(m_state.storage(m_contractAddress).empty()); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(struct_copy_via_local) | ||||
| { | ||||
| 	char const* sourceCode = R"( | ||||
|  | ||||
| @ -470,7 +470,7 @@ BOOST_AUTO_TEST_CASE(illegal_override_indirect) | ||||
| BOOST_AUTO_TEST_CASE(illegal_override_visibility) | ||||
| { | ||||
| 	char const* text = R"( | ||||
| 		contract B { function f() protected {} } | ||||
| 		contract B { function f() inheritable {} } | ||||
| 		contract C is B { function f() public {} } | ||||
| 	)"; | ||||
| 	BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError); | ||||
| @ -706,7 +706,7 @@ BOOST_AUTO_TEST_CASE(private_state_variable) | ||||
| 					   "    uint64(2);\n" | ||||
| 					   "  }\n" | ||||
| 					   "uint256 private foo;\n" | ||||
| 					   "uint256 protected bar;\n" | ||||
| 					   "uint256 inheritable bar;\n" | ||||
| 					   "}\n"; | ||||
| 
 | ||||
| 	ASTPointer<SourceUnit> source; | ||||
| @ -717,7 +717,7 @@ BOOST_AUTO_TEST_CASE(private_state_variable) | ||||
| 	function = retrieveFunctionBySignature(contract, "foo()"); | ||||
| 	BOOST_CHECK_MESSAGE(function == nullptr, "Accessor function of a private variable should not exist"); | ||||
| 	function = retrieveFunctionBySignature(contract, "bar()"); | ||||
| 	BOOST_CHECK_MESSAGE(function == nullptr, "Accessor function of a protected variable should not exist"); | ||||
| 	BOOST_CHECK_MESSAGE(function == nullptr, "Accessor function of an inheritable variable should not exist"); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(fallback_function) | ||||
| @ -832,11 +832,11 @@ BOOST_AUTO_TEST_CASE(access_to_default_function_visibility) | ||||
| 	BOOST_CHECK_NO_THROW(parseTextAndResolveNames(text)); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(access_to_protected_function) | ||||
| BOOST_AUTO_TEST_CASE(access_to_inheritable_function) | ||||
| { | ||||
| 	char const* text = R"( | ||||
| 		contract c { | ||||
| 			function f() protected {} | ||||
| 			function f() inheritable {} | ||||
| 		} | ||||
| 		contract d { | ||||
| 			function g() { c(0).f(); } | ||||
| @ -856,7 +856,7 @@ BOOST_AUTO_TEST_CASE(access_to_default_state_variable_visibility) | ||||
| 	BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(access_to_protected_state_variable) | ||||
| BOOST_AUTO_TEST_CASE(access_to_inheritable_state_variable) | ||||
| { | ||||
| 	char const* text = R"( | ||||
| 		contract c { | ||||
|  | ||||
| @ -651,13 +651,13 @@ BOOST_AUTO_TEST_CASE(visibility_specifiers) | ||||
| 	char const* text = R"( | ||||
| 		contract c { | ||||
| 			uint private a; | ||||
| 			uint protected b; | ||||
| 			uint inheritable b; | ||||
| 			uint public c; | ||||
| 			uint d; | ||||
| 			function f() {} | ||||
| 			function f_priv() private {} | ||||
| 			function f_public() public {} | ||||
| 			function f_protected() protected {} | ||||
| 			function f_inheritable() inheritable {} | ||||
| 		})"; | ||||
| 	BOOST_CHECK_NO_THROW(parseText(text)); | ||||
| } | ||||
| @ -666,7 +666,7 @@ BOOST_AUTO_TEST_CASE(multiple_visibility_specifiers) | ||||
| { | ||||
| 	char const* text = R"( | ||||
| 		contract c { | ||||
| 			uint private protected a; | ||||
| 			uint private inheritable a; | ||||
| 		})"; | ||||
| 	BOOST_CHECK_THROW(parseText(text), ParserError); | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user