Browse Source

Small FixedBytes type fixes

- Integer Constant is explicitly convertible to FixedBytes, so using
  that in the tests
cl-refactor
Lefteris Karapetsas 10 years ago
parent
commit
5c042e2e59
  1. 7
      libsolidity/Types.cpp
  2. 16
      test/SolidityEndToEndTest.cpp
  3. 1
      test/SolidityNameAndTypeResolution.cpp

7
libsolidity/Types.cpp

@ -191,13 +191,10 @@ TypePointer IntegerType::unaryOperatorResult(Token::Value _operator) const
// no further unary operators for addresses
else if (isAddress())
return TypePointer();
// "~" is ok for all other types
else if (_operator == Token::BitNot)
return shared_from_this();
// for non-address integers, we allow +, -, ++ and --
else if (_operator == Token::Add || _operator == Token::Sub ||
_operator == Token::Inc || _operator == Token::Dec ||
_operator == Token::After)
_operator == Token::After || _operator == Token::BitNot)
return shared_from_this();
else
return TypePointer();
@ -1154,7 +1151,7 @@ MagicType::MagicType(MagicType::Kind _kind):
case Kind::Block:
m_members = MemberList({{"coinbase", make_shared<IntegerType>(0, IntegerType::Modifier::Address)},
{"timestamp", make_shared<IntegerType>(256)},
{"blockhash", make_shared<FunctionType>(strings{"uint"}, strings{"bytes"}, FunctionType::Location::BlockHash)},
{"blockhash", make_shared<FunctionType>(strings{"uint"}, strings{"bytes32"}, FunctionType::Location::BlockHash)},
{"difficulty", make_shared<IntegerType>(256)},
{"number", make_shared<IntegerType>(256)},
{"gaslimit", make_shared<IntegerType>(256)}});

16
test/SolidityEndToEndTest.cpp

@ -1182,14 +1182,12 @@ BOOST_AUTO_TEST_CASE(send_ether)
BOOST_CHECK(callContractFunction("a(address,uint256)", address, amount) == encodeArgs(1));
BOOST_CHECK_EQUAL(m_state.balance(address), amount);
}
// TODO: Note that these tests should actually be
// simply converting integer constant to bytes32. This conversion is not there
// yet. When it's implemented DO change the tests too
BOOST_AUTO_TEST_CASE(log0)
{
char const* sourceCode = "contract test {\n"
" function a() {\n"
" log0(bytes32(1));\n"
" log0(1);\n"
" }\n"
"}\n";
compileAndRun(sourceCode);
@ -1204,7 +1202,7 @@ BOOST_AUTO_TEST_CASE(log1)
{
char const* sourceCode = "contract test {\n"
" function a() {\n"
" log1(bytes32(1), bytes32(2));\n"
" log1(1, 2);\n"
" }\n"
"}\n";
compileAndRun(sourceCode);
@ -1220,7 +1218,7 @@ BOOST_AUTO_TEST_CASE(log2)
{
char const* sourceCode = "contract test {\n"
" function a() {\n"
" log2(bytes32(1), bytes32(2), bytes32(3));\n"
" log2(1, 2, 3);\n"
" }\n"
"}\n";
compileAndRun(sourceCode);
@ -1237,7 +1235,7 @@ BOOST_AUTO_TEST_CASE(log3)
{
char const* sourceCode = "contract test {\n"
" function a() {\n"
" log3(bytes32(1), bytes32(2), bytes32(3), bytes32(4));\n"
" log3(1, 2, 3, 4);\n"
" }\n"
"}\n";
compileAndRun(sourceCode);
@ -1254,7 +1252,7 @@ BOOST_AUTO_TEST_CASE(log4)
{
char const* sourceCode = "contract test {\n"
" function a() {\n"
" log4(bytes32(1), bytes32(2), bytes32(3), bytes32(4), bytes32(5));\n"
" log4(1, 2, 3, 4, 5);\n"
" }\n"
"}\n";
compileAndRun(sourceCode);
@ -1271,7 +1269,7 @@ BOOST_AUTO_TEST_CASE(log_in_constructor)
{
char const* sourceCode = "contract test {\n"
" function test() {\n"
" log1(bytes32(1), bytes32(2));\n"
" log1(1, 2);\n"
" }\n"
"}\n";
compileAndRun(sourceCode);

1
test/SolidityNameAndTypeResolution.cpp

@ -1358,6 +1358,7 @@ BOOST_AUTO_TEST_CASE(test_fromElementaryTypeName)
BOOST_CHECK(*Type::fromElementaryTypeName(Token::UInt248) == *make_shared<IntegerType>(248, IntegerType::Modifier::Unsigned));
BOOST_CHECK(*Type::fromElementaryTypeName(Token::UInt256) == *make_shared<IntegerType>(256, IntegerType::Modifier::Unsigned));
BOOST_CHECK(*Type::fromElementaryTypeName(Token::Byte) == *make_shared<FixedBytesType>(1));
BOOST_CHECK(*Type::fromElementaryTypeName(Token::Bytes0) == *make_shared<FixedBytesType>(0));
BOOST_CHECK(*Type::fromElementaryTypeName(Token::Bytes1) == *make_shared<FixedBytesType>(1));
BOOST_CHECK(*Type::fromElementaryTypeName(Token::Bytes2) == *make_shared<FixedBytesType>(2));

Loading…
Cancel
Save