mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #621 from chriseth/sol_createContracts
Contract creation ("new" operator).
This commit is contained in:
commit
350953e598
@ -56,7 +56,7 @@ bytes compileContract(const string& _sourceCode)
|
|||||||
BOOST_REQUIRE_NO_THROW(resolver.resolveNamesAndTypes(*contract));
|
BOOST_REQUIRE_NO_THROW(resolver.resolveNamesAndTypes(*contract));
|
||||||
|
|
||||||
Compiler compiler;
|
Compiler compiler;
|
||||||
compiler.compileContract(*contract, {});
|
compiler.compileContract(*contract, {}, {});
|
||||||
// debug
|
// debug
|
||||||
//compiler.streamAssembly(cout);
|
//compiler.streamAssembly(cout);
|
||||||
return compiler.getAssembledBytecode();
|
return compiler.getAssembledBytecode();
|
||||||
|
@ -1012,6 +1012,32 @@ BOOST_AUTO_TEST_CASE(strings_in_calls)
|
|||||||
BOOST_CHECK(callContractFunction(0, bytes({0, 'a', 1})) == bytes({0, 'a', 0, 0, 0}));
|
BOOST_CHECK(callContractFunction(0, bytes({0, 'a', 1})) == bytes({0, 'a', 0, 0, 0}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(constructor_arguments)
|
||||||
|
{
|
||||||
|
char const* sourceCode = R"(
|
||||||
|
contract Helper {
|
||||||
|
string3 name;
|
||||||
|
bool flag;
|
||||||
|
function Helper(string3 x, bool f) {
|
||||||
|
name = x;
|
||||||
|
flag = f;
|
||||||
|
}
|
||||||
|
function getName() returns (string3 ret) { return name; }
|
||||||
|
function getFlag() returns (bool ret) { return flag; }
|
||||||
|
}
|
||||||
|
contract Main {
|
||||||
|
Helper h;
|
||||||
|
function Main() {
|
||||||
|
h = new Helper("abc", true);
|
||||||
|
}
|
||||||
|
function getFlag() returns (bool ret) { return h.getFlag(); }
|
||||||
|
function getName() returns (string3 ret) { return h.getName(); }
|
||||||
|
})";
|
||||||
|
compileAndRun(sourceCode, 0, "Main");
|
||||||
|
BOOST_REQUIRE(callContractFunction(0) == bytes({0x01}));
|
||||||
|
BOOST_REQUIRE(callContractFunction(1) == bytes({'a', 'b', 'c'}));
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -284,6 +284,15 @@ BOOST_AUTO_TEST_CASE(assignment_to_struct)
|
|||||||
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(returns_in_constructor)
|
||||||
|
{
|
||||||
|
char const* text = "contract test {\n"
|
||||||
|
" function test() returns (uint a) {\n"
|
||||||
|
" }\n"
|
||||||
|
"}\n";
|
||||||
|
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user