mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge branch 'develop' into p2p
This commit is contained in:
commit
fd559468fc
@ -2499,6 +2499,41 @@ BOOST_AUTO_TEST_CASE(struct_copy_via_local)
|
|||||||
BOOST_CHECK(callContractFunction("test()") == encodeArgs(true));
|
BOOST_CHECK(callContractFunction("test()") == encodeArgs(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(using_enums)
|
||||||
|
{
|
||||||
|
char const* sourceCode = R"(
|
||||||
|
contract test {
|
||||||
|
enum ActionChoices { GoLeft, GoRight, GoStraight, Sit }
|
||||||
|
function test()
|
||||||
|
{
|
||||||
|
choices = ActionChoices.GoStraight;
|
||||||
|
}
|
||||||
|
function getChoice() returns (uint d)
|
||||||
|
{
|
||||||
|
d = uint256(choices);
|
||||||
|
}
|
||||||
|
ActionChoices choices;
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
compileAndRun(sourceCode);
|
||||||
|
BOOST_CHECK(callContractFunction("getChoice()") == encodeArgs(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(constructing_enums_from_ints)
|
||||||
|
{
|
||||||
|
char const* sourceCode = R"(
|
||||||
|
contract c {
|
||||||
|
enum Truth { False, True }
|
||||||
|
function test() returns (uint)
|
||||||
|
{
|
||||||
|
return uint(Truth(uint8(0x701)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
compileAndRun(sourceCode);
|
||||||
|
BOOST_CHECK(callContractFunction("test()") == encodeArgs(1));
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -111,24 +111,6 @@ BOOST_AUTO_TEST_CASE(exclude_fallback_function)
|
|||||||
BOOST_CHECK_EQUAL(getSourcePart(contract), "contract test{}");
|
BOOST_CHECK_EQUAL(getSourcePart(contract), "contract test{}");
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(event)
|
|
||||||
{
|
|
||||||
ContractDefinition const& contract = checkInterface(
|
|
||||||
"contract test { event Event; }");
|
|
||||||
BOOST_REQUIRE_EQUAL(1, contract.getEvents().size());
|
|
||||||
BOOST_CHECK_EQUAL(getSourcePart(*contract.getEvents().front()),
|
|
||||||
"event Event;");
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(event_arguments)
|
|
||||||
{
|
|
||||||
ContractDefinition const& contract = checkInterface(
|
|
||||||
"contract test { event Event(uint a, uint indexed b); }");
|
|
||||||
BOOST_REQUIRE_EQUAL(1, contract.getEvents().size());
|
|
||||||
BOOST_CHECK_EQUAL(getSourcePart(*contract.getEvents().front()),
|
|
||||||
"event Event(uint256 a,uint256 indexed b);");
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(events)
|
BOOST_AUTO_TEST_CASE(events)
|
||||||
{
|
{
|
||||||
char const* sourceCode = "contract test {\n"
|
char const* sourceCode = "contract test {\n"
|
||||||
@ -137,10 +119,8 @@ BOOST_AUTO_TEST_CASE(events)
|
|||||||
" event e2(); \n"
|
" event e2(); \n"
|
||||||
"}\n";
|
"}\n";
|
||||||
ContractDefinition const& contract = checkInterface(sourceCode);
|
ContractDefinition const& contract = checkInterface(sourceCode);
|
||||||
set<string> expectation({"event e1(uint256 b,address indexed c);", "event e2;"});
|
// events should not appear in the Solidity Interface
|
||||||
BOOST_REQUIRE_EQUAL(2, contract.getEvents().size());
|
BOOST_REQUIRE_EQUAL(0, contract.getEvents().size());
|
||||||
BOOST_CHECK(expectation == set<string>({getSourcePart(*contract.getEvents().at(0)),
|
|
||||||
getSourcePart(*contract.getEvents().at(1))}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(inheritance)
|
BOOST_AUTO_TEST_CASE(inheritance)
|
||||||
@ -155,12 +135,8 @@ BOOST_AUTO_TEST_CASE(inheritance)
|
|||||||
" event derivedEvent(uint indexed evtArgDerived); \n"
|
" event derivedEvent(uint indexed evtArgDerived); \n"
|
||||||
" }";
|
" }";
|
||||||
ContractDefinition const& contract = checkInterface(sourceCode);
|
ContractDefinition const& contract = checkInterface(sourceCode);
|
||||||
set<string> expectedEvents({"event derivedEvent(uint256 indexed evtArgDerived);",
|
|
||||||
"event baseEvent(string32 indexed evtArgBase);"});
|
|
||||||
set<string> expectedFunctions({"function baseFunction(uint256 p)returns(uint256 i){}",
|
set<string> expectedFunctions({"function baseFunction(uint256 p)returns(uint256 i){}",
|
||||||
"function derivedFunction(string32 p)returns(string32 i){}"});
|
"function derivedFunction(string32 p)returns(string32 i){}"});
|
||||||
BOOST_CHECK(expectedEvents == set<string>({getSourcePart(*contract.getEvents().at(0)),
|
|
||||||
getSourcePart(*contract.getEvents().at(1))}));
|
|
||||||
BOOST_REQUIRE_EQUAL(2, contract.getDefinedFunctions().size());
|
BOOST_REQUIRE_EQUAL(2, contract.getDefinedFunctions().size());
|
||||||
BOOST_CHECK(expectedFunctions == set<string>({getSourcePart(*contract.getDefinedFunctions().at(0)),
|
BOOST_CHECK(expectedFunctions == set<string>({getSourcePart(*contract.getDefinedFunctions().at(0)),
|
||||||
getSourcePart(*contract.getDefinedFunctions().at(1))}));
|
getSourcePart(*contract.getDefinedFunctions().at(1))}));
|
||||||
|
@ -992,6 +992,97 @@ BOOST_AUTO_TEST_CASE(exp_operator_exponent_too_big)
|
|||||||
BOOST_CHECK_THROW(parseTextAndResolveNames(sourceCode), TypeError);
|
BOOST_CHECK_THROW(parseTextAndResolveNames(sourceCode), TypeError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(enum_member_access)
|
||||||
|
{
|
||||||
|
char const* text = R"(
|
||||||
|
contract test {
|
||||||
|
enum ActionChoices { GoLeft, GoRight, GoStraight, Sit }
|
||||||
|
function test()
|
||||||
|
{
|
||||||
|
choices = ActionChoices.GoStraight;
|
||||||
|
}
|
||||||
|
ActionChoices choices;
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
BOOST_CHECK_NO_THROW(parseTextAndResolveNamesWithChecks(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(enum_invalid_member_access)
|
||||||
|
{
|
||||||
|
char const* text = R"(
|
||||||
|
contract test {
|
||||||
|
enum ActionChoices { GoLeft, GoRight, GoStraight, Sit }
|
||||||
|
function test()
|
||||||
|
{
|
||||||
|
choices = ActionChoices.RunAroundWavingYourHands;
|
||||||
|
}
|
||||||
|
ActionChoices choices;
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(enum_explicit_conversion_is_okay)
|
||||||
|
{
|
||||||
|
char const* text = R"(
|
||||||
|
contract test {
|
||||||
|
enum ActionChoices { GoLeft, GoRight, GoStraight, Sit }
|
||||||
|
function test()
|
||||||
|
{
|
||||||
|
a = uint256(ActionChoices.GoStraight);
|
||||||
|
b = uint64(ActionChoices.Sit);
|
||||||
|
}
|
||||||
|
uint256 a;
|
||||||
|
uint64 b;
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
BOOST_CHECK_NO_THROW(parseTextAndResolveNamesWithChecks(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(int_to_enum_explicit_conversion_is_okay)
|
||||||
|
{
|
||||||
|
char const* text = R"(
|
||||||
|
contract test {
|
||||||
|
enum ActionChoices { GoLeft, GoRight, GoStraight, Sit }
|
||||||
|
function test()
|
||||||
|
{
|
||||||
|
a = 2;
|
||||||
|
b = ActionChoices(a);
|
||||||
|
}
|
||||||
|
uint256 a;
|
||||||
|
ActionChoices b;
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
BOOST_CHECK_NO_THROW(parseTextAndResolveNamesWithChecks(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(enum_implicit_conversion_is_not_okay)
|
||||||
|
{
|
||||||
|
char const* text = R"(
|
||||||
|
contract test {
|
||||||
|
enum ActionChoices { GoLeft, GoRight, GoStraight, Sit }
|
||||||
|
function test()
|
||||||
|
{
|
||||||
|
a = ActionChoices.GoStraight;
|
||||||
|
b = ActionChoices.Sit;
|
||||||
|
}
|
||||||
|
uint256 a;
|
||||||
|
uint64 b;
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(enum_duplicate_values)
|
||||||
|
{
|
||||||
|
char const* text = R"(
|
||||||
|
contract test {
|
||||||
|
enum ActionChoices { GoLeft, GoRight, GoLeft, Sit }
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
BOOST_CHECK_THROW(parseTextAndResolveNames(text), DeclarationError);
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -703,6 +703,38 @@ BOOST_AUTO_TEST_CASE(literal_constants_with_ether_subdenominations_in_expression
|
|||||||
BOOST_CHECK_NO_THROW(parseTextExplainError(text));
|
BOOST_CHECK_NO_THROW(parseTextExplainError(text));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(enum_valid_declaration)
|
||||||
|
{
|
||||||
|
char const* text = R"(
|
||||||
|
contract c {
|
||||||
|
enum validEnum { Value1, Value2, Value3, Value4 }
|
||||||
|
function c ()
|
||||||
|
{
|
||||||
|
a = foo.Value3;
|
||||||
|
}
|
||||||
|
uint256 a;
|
||||||
|
})";
|
||||||
|
BOOST_CHECK_NO_THROW(parseTextExplainError(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(empty_enum_declaration)
|
||||||
|
{
|
||||||
|
char const* text = R"(
|
||||||
|
contract c {
|
||||||
|
enum foo { }
|
||||||
|
})";
|
||||||
|
BOOST_CHECK_NO_THROW(parseTextExplainError(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(malformed_enum_declaration)
|
||||||
|
{
|
||||||
|
char const* text = R"(
|
||||||
|
contract c {
|
||||||
|
enum foo { WARNING,}
|
||||||
|
})";
|
||||||
|
BOOST_CHECK_THROW(parseText(text), ParserError);
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
class WebThreeStubClient : public jsonrpc::Client
|
class WebThreeStubClient : public jsonrpc::Client
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WebThreeStubClient(jsonrpc::IClientConnector &conn) : jsonrpc::Client(conn) {}
|
WebThreeStubClient(jsonrpc::IClientConnector &conn, jsonrpc::clientVersion_t type = jsonrpc::JSONRPC_CLIENT_V2) : jsonrpc::Client(conn, type) {}
|
||||||
|
|
||||||
std::string web3_sha3(const std::string& param1) throw (jsonrpc::JsonRpcException)
|
std::string web3_sha3(const std::string& param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
@ -52,7 +52,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
bool eth_setListening(const bool& param1) throw (jsonrpc::JsonRpcException)
|
bool eth_setListening(bool param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -72,7 +72,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
bool eth_setMining(const bool& param1) throw (jsonrpc::JsonRpcException)
|
bool eth_setMining(bool param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -122,7 +122,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
bool eth_setDefaultBlock(const int& param1) throw (jsonrpc::JsonRpcException)
|
bool eth_setDefaultBlock(int param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -233,7 +233,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
Json::Value eth_blockByNumber(const int& param1) throw (jsonrpc::JsonRpcException)
|
Json::Value eth_blockByNumber(int param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -243,7 +243,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
Json::Value eth_transactionByHash(const std::string& param1, const int& param2) throw (jsonrpc::JsonRpcException)
|
Json::Value eth_transactionByHash(const std::string& param1, int param2) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -254,7 +254,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
Json::Value eth_transactionByNumber(const int& param1, const int& param2) throw (jsonrpc::JsonRpcException)
|
Json::Value eth_transactionByNumber(int param1, int param2) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -265,7 +265,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
Json::Value eth_uncleByHash(const std::string& param1, const int& param2) throw (jsonrpc::JsonRpcException)
|
Json::Value eth_uncleByHash(const std::string& param1, int param2) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -276,7 +276,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
Json::Value eth_uncleByNumber(const int& param1, const int& param2) throw (jsonrpc::JsonRpcException)
|
Json::Value eth_uncleByNumber(int param1, int param2) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -347,7 +347,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
bool eth_uninstallFilter(const int& param1) throw (jsonrpc::JsonRpcException)
|
bool eth_uninstallFilter(int param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -357,7 +357,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
Json::Value eth_changed(const int& param1) throw (jsonrpc::JsonRpcException)
|
Json::Value eth_changed(int param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -367,7 +367,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
Json::Value eth_filterLogs(const int& param1) throw (jsonrpc::JsonRpcException)
|
Json::Value eth_filterLogs(int param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -515,7 +515,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
bool shh_uninstallFilter(const int& param1) throw (jsonrpc::JsonRpcException)
|
bool shh_uninstallFilter(int param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -525,7 +525,7 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
else
|
else
|
||||||
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
|
||||||
}
|
}
|
||||||
Json::Value shh_changed(const int& param1) throw (jsonrpc::JsonRpcException)
|
Json::Value shh_changed(int param1) throw (jsonrpc::JsonRpcException)
|
||||||
{
|
{
|
||||||
Json::Value p;
|
Json::Value p;
|
||||||
p.append(param1);
|
p.append(param1);
|
||||||
@ -537,4 +537,4 @@ class WebThreeStubClient : public jsonrpc::Client
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //JSONRPC_CPP_WEBTHREESTUBCLIENT_H_
|
#endif //JSONRPC_CPP_STUB_WEBTHREESTUBCLIENT_H_
|
||||||
|
Loading…
Reference in New Issue
Block a user