diff options
Diffstat (limited to 'test/libsolidity')
56 files changed, 250 insertions, 357 deletions
diff --git a/test/libsolidity/ABIDecoderTests.cpp b/test/libsolidity/ABIDecoderTests.cpp index c122d806..b4f829ca 100644 --- a/test/libsolidity/ABIDecoderTests.cpp +++ b/test/libsolidity/ABIDecoderTests.cpp @@ -266,7 +266,6 @@ BOOST_AUTO_TEST_CASE(calldata_arrays_too_large) } } )"; - bool newEncoder = false; BOTH_ENCODERS( compileAndRun(sourceCode); bytes args = encodeArgs( @@ -275,9 +274,8 @@ BOOST_AUTO_TEST_CASE(calldata_arrays_too_large) ); ABI_CHECK( callContractFunction("f(uint256,uint256[],uint256)", args), - newEncoder ? encodeArgs() : encodeArgs(7) + encodeArgs() ); - newEncoder = true; ) } @@ -374,7 +372,7 @@ BOOST_AUTO_TEST_CASE(decode_function_type_array) } // uses "decode from memory" function test1_dynamic() public returns (uint) { - var x = new function() external returns (uint)[](3); + function () external returns (uint)[] memory x = new function() external returns (uint)[](4); x[0] = this.f1; x[1] = this.f2; x[2] = this.f3; @@ -387,7 +385,7 @@ BOOST_AUTO_TEST_CASE(decode_function_type_array) } // uses "decode from calldata" function test2_dynamic() public returns (uint) { - var x = new function() external returns (uint)[](3); + function () external returns (uint)[] memory x = new function() external returns (uint)[](3); x[0] = this.f1; x[1] = this.f2; x[2] = this.f3; @@ -449,13 +447,11 @@ BOOST_AUTO_TEST_CASE(short_input_value_type) function f(uint a, uint b) public pure returns (uint) { return a; } } )"; - bool newDecoder = false; BOTH_ENCODERS( compileAndRun(sourceCode); ABI_CHECK(callContractFunction("f(uint256,uint256)", 1, 2), encodeArgs(1)); ABI_CHECK(callContractFunctionNoEncoding("f(uint256,uint256)", bytes(64, 0)), encodeArgs(0)); - ABI_CHECK(callContractFunctionNoEncoding("f(uint256,uint256)", bytes(63, 0)), newDecoder ? encodeArgs() : encodeArgs(0)); - newDecoder = true; + ABI_CHECK(callContractFunctionNoEncoding("f(uint256,uint256)", bytes(63, 0)), encodeArgs()); ) } @@ -466,15 +462,13 @@ BOOST_AUTO_TEST_CASE(short_input_array) function f(uint[] a) public pure returns (uint) { return 7; } } )"; - bool newDecoder = false; BOTH_ENCODERS( compileAndRun(sourceCode); ABI_CHECK(callContractFunctionNoEncoding("f(uint256[])", encodeArgs(0x20, 0)), encodeArgs(7)); - ABI_CHECK(callContractFunctionNoEncoding("f(uint256[])", encodeArgs(0x20, 1)), newDecoder ? encodeArgs() : encodeArgs(7)); - ABI_CHECK(callContractFunctionNoEncoding("f(uint256[])", encodeArgs(0x20, 1) + bytes(31, 0)), newDecoder ? encodeArgs() : encodeArgs(7)); + ABI_CHECK(callContractFunctionNoEncoding("f(uint256[])", encodeArgs(0x20, 1)), encodeArgs()); + ABI_CHECK(callContractFunctionNoEncoding("f(uint256[])", encodeArgs(0x20, 1) + bytes(31, 0)), encodeArgs()); ABI_CHECK(callContractFunctionNoEncoding("f(uint256[])", encodeArgs(0x20, 1) + bytes(32, 0)), encodeArgs(7)); ABI_CHECK(callContractFunctionNoEncoding("f(uint256[])", encodeArgs(0x20, 2, 5, 6)), encodeArgs(7)); - newDecoder = true; ) } @@ -558,7 +552,7 @@ BOOST_AUTO_TEST_CASE(storage_ptr) r[2] = 3; s.x = 11; s.y = 12; - var (a, b, c, d) = L.f(r, s); + (uint a, uint b, uint c, uint d) = L.f(r, s); return (r[2], s.x, a, b, c, d); } } diff --git a/test/libsolidity/ASTLegacyJSON.cpp b/test/libsolidity/ASTLegacyJSON.cpp index 13148682..cd8384ea 100644 --- a/test/libsolidity/ASTLegacyJSON.cpp +++ b/test/libsolidity/ASTLegacyJSON.cpp @@ -252,7 +252,7 @@ BOOST_AUTO_TEST_CASE(function_type) CompilerStack c; c.addSource("a", "contract C { function f(function() external payable returns (uint) x) " - "returns (function() external constant returns (uint)) {} }" + "returns (function() external view returns (uint)) {} }" ); c.setEVMVersion(dev::test::Options::get().evmVersion()); c.parseAndAnalyze(); diff --git a/test/libsolidity/GasMeter.cpp b/test/libsolidity/GasMeter.cpp index 42965582..a404c072 100644 --- a/test/libsolidity/GasMeter.cpp +++ b/test/libsolidity/GasMeter.cpp @@ -87,6 +87,7 @@ public: for (bytes const& arguments: _argumentVariants) { sendMessage(hash.asBytes() + arguments, false, 0); + BOOST_CHECK(m_transactionSuccessful); gasUsed = max(gasUsed, m_gasUsed); gas = max(gas, gasForTransaction(hash.asBytes() + arguments, false)); } @@ -315,7 +316,7 @@ BOOST_AUTO_TEST_CASE(complex_control_flow) // we previously considered. This of course reduces accuracy. char const* sourceCode = R"( contract log { - function ln(int128 x) constant returns (int128 result) { + function ln(int128 x) pure returns (int128 result) { int128 t = x / 256; int128 y = 5545177; x = t; diff --git a/test/libsolidity/SolidityABIJSON.cpp b/test/libsolidity/SolidityABIJSON.cpp index a3ebd139..6994a290 100644 --- a/test/libsolidity/SolidityABIJSON.cpp +++ b/test/libsolidity/SolidityABIJSON.cpp @@ -306,62 +306,6 @@ BOOST_AUTO_TEST_CASE(view_function) checkInterface(sourceCode, interface); } -// constant is an alias to view above -BOOST_AUTO_TEST_CASE(constant_function) -{ - char const* sourceCode = R"( - contract test { - function foo(uint a, uint b) returns(uint d) { return a + b; } - function boo(uint32 a) constant returns(uint b) { return a * 4; } - } - )"; - - char const* interface = R"([ - { - "name": "foo", - "constant": false, - "payable" : false, - "stateMutability": "nonpayable", - "type": "function", - "inputs": [ - { - "name": "a", - "type": "uint256" - }, - { - "name": "b", - "type": "uint256" - } - ], - "outputs": [ - { - "name": "d", - "type": "uint256" - } - ] - }, - { - "name": "boo", - "constant": true, - "payable" : false, - "stateMutability": "view", - "type": "function", - "inputs": [{ - "name": "a", - "type": "uint32" - }], - "outputs": [ - { - "name": "b", - "type": "uint256" - } - ] - } - ])"; - - checkInterface(sourceCode, interface); -} - BOOST_AUTO_TEST_CASE(pure_function) { char const* sourceCode = R"( diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index 889c68b9..9e6aa43d 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -49,6 +49,25 @@ namespace test BOOST_FIXTURE_TEST_SUITE(SolidityEndToEndTest, SolidityExecutionFramework) +BOOST_AUTO_TEST_CASE(transaction_status) +{ + char const* sourceCode = R"( + contract test { + function f() { } + function g() { revert(); } + function h() { assert(false); } + } + )"; + compileAndRun(sourceCode); + callContractFunction("f()"); + BOOST_CHECK(m_transactionSuccessful); + callContractFunction("g()"); + BOOST_CHECK(!m_transactionSuccessful); + callContractFunction("h()"); + BOOST_CHECK(!m_transactionSuccessful); +} + + BOOST_AUTO_TEST_CASE(smoke_test) { char const* sourceCode = R"( @@ -305,7 +324,7 @@ BOOST_AUTO_TEST_CASE(conditional_expression_functions) function y() returns (uint) { return 2; } function f(bool cond) returns (uint) { - var z = cond ? x : y; + function () returns (uint) z = cond ? x : y; return z(); } } @@ -433,7 +452,7 @@ BOOST_AUTO_TEST_CASE(while_loop) contract test { function f(uint n) returns(uint nfac) { nfac = 1; - var i = 2; + uint i = 2; while (i <= n) nfac *= i++; } } @@ -460,7 +479,7 @@ BOOST_AUTO_TEST_CASE(do_while_loop) contract test { function f(uint n) returns(uint nfac) { nfac = 1; - var i = 2; + uint i = 2; do { nfac *= i++; } while (i <= n); } } @@ -561,7 +580,8 @@ BOOST_AUTO_TEST_CASE(for_loop) contract test { function f(uint n) returns(uint nfac) { nfac = 1; - for (var i = 2; i <= n; i++) + uint i; + for (i = 2; i <= n; i++) nfac *= i; } } @@ -735,7 +755,7 @@ BOOST_AUTO_TEST_CASE(many_local_variables) char const* sourceCode = R"( contract test { function run(uint x1, uint x2, uint x3) returns(uint y) { - var a = 0x1; var b = 0x10; var c = 0x100; + uint8 a = 0x1; uint8 b = 0x10; uint16 c = 0x100; y = a + b + c + x1 + x2 + x3; y += b + x2; } @@ -1252,7 +1272,7 @@ BOOST_AUTO_TEST_CASE(struct_reference) } function set() { data.z = 2; - var map = data.recursive; + mapping(uint8 => s2) map = data.recursive; s2 inner = map[0]; inner.z = 3; inner.recursive[0].z = inner.recursive[1].z + 1; @@ -1836,8 +1856,7 @@ BOOST_AUTO_TEST_CASE(uncalled_blockhash) contract C { function f() public view returns (bytes32) { - var x = block.blockhash; - return x(block.number - 1); + return (block.blockhash)(block.number - 1); } } )"; @@ -2061,7 +2080,7 @@ BOOST_AUTO_TEST_CASE(packed_keccak256) char const* sourceCode = R"( contract test { function a(bytes32 input) returns (bytes32 hash) { - var b = 65536; + uint24 b = 65536; uint c = 256; return keccak256(abi.encodePacked(8, input, b, input, c)); } @@ -2113,7 +2132,7 @@ BOOST_AUTO_TEST_CASE(packed_sha256) char const* sourceCode = R"( contract test { function a(bytes32 input) returns (bytes32 hash) { - var b = 65536; + uint24 b = 65536; uint c = 256; return sha256(abi.encodePacked(8, input, b, input, c)); } @@ -2140,7 +2159,7 @@ BOOST_AUTO_TEST_CASE(packed_ripemd160) char const* sourceCode = R"( contract test { function a(bytes32 input) returns (bytes32 hash) { - var b = 65536; + uint24 b = 65536; uint c = 256; return ripemd160(abi.encodePacked(8, input, b, input, c)); } @@ -2319,9 +2338,8 @@ BOOST_AUTO_TEST_CASE(inter_contract_calls_with_local_vars) contract Main { Helper h; function callHelper(uint a, uint b) returns (uint c) { - var fu = h.multiply; - var y = 9; - var ret = fu(a, b); + uint8 y = 9; + uint256 ret = h.multiply(a, b); return ret + y; } function getHelper() returns (address haddress) { @@ -2568,10 +2586,8 @@ BOOST_AUTO_TEST_CASE(value_complex) helper h; constructor() payable { h = new helper(); } function sendAmount(uint amount) payable returns (uint256 bal) { - var x1 = h.getBalance.value(amount); uint someStackElement = 20; - var x2 = x1.gas(1000); - return x2.value(amount + 3)();// overwrite value + return h.getBalance.value(amount).gas(1000).value(amount + 3)(); } } )"; @@ -2591,10 +2607,7 @@ BOOST_AUTO_TEST_CASE(value_insane) helper h; constructor() payable { h = new helper(); } function sendAmount(uint amount) returns (uint256 bal) { - var x1 = h.getBalance.value; - var x2 = x1(amount).gas; - var x3 = x2(1000).value; - return x3(amount + 3)();// overwrite value + return h.getBalance.value(amount).gas(1000).value(amount + 3)();// overwrite value } } )"; @@ -2797,7 +2810,7 @@ BOOST_AUTO_TEST_CASE(function_modifier_local_variables) { char const* sourceCode = R"( contract C { - modifier mod1 { var a = 1; var b = 2; _; } + modifier mod1 { uint8 a = 1; uint8 b = 2; _; } modifier mod2(bool a) { if (a) return; else _; } function f(bool a) mod1 mod2(a) returns (uint r) { return 3; } } @@ -2811,7 +2824,7 @@ BOOST_AUTO_TEST_CASE(function_modifier_loop) { char const* sourceCode = R"( contract C { - modifier repeat(uint count) { for (var i = 0; i < count; ++i) _; } + modifier repeat(uint count) { uint i; for (i = 0; i < count; ++i) _; } function f() repeat(10) returns (uint r) { r += 1; } } )"; @@ -2989,8 +3002,7 @@ BOOST_AUTO_TEST_CASE(crazy_elementary_typenames_on_stack) function f() returns (uint r) { uint; uint; uint; uint; int x = -7; - var a = uint; - return a(x); + return uint(x); } } )"; @@ -3088,9 +3100,11 @@ BOOST_AUTO_TEST_CASE(short_data_calls_fallback) compileAndRun(sourceCode); // should call fallback sendMessage(asBytes("\xd8\x8e\x0b"), false, 0); + BOOST_CHECK(m_transactionSuccessful); ABI_CHECK(callContractFunction("x()"), encodeArgs(2)); // should call function sendMessage(asBytes(string("\xd8\x8e\x0b") + string(1, 0)), false, 0); + BOOST_CHECK(m_transactionSuccessful); ABI_CHECK(callContractFunction("x()"), encodeArgs(3)); } @@ -3775,6 +3789,7 @@ BOOST_AUTO_TEST_CASE(bytes_from_calldata_to_memory) compileAndRun(sourceCode); bytes calldata1 = FixedHash<4>(dev::keccak256("f()")).asBytes() + bytes(61, 0x22) + bytes(12, 0x12); sendMessage(calldata1, false); + BOOST_CHECK(m_transactionSuccessful); BOOST_CHECK(m_output == encodeArgs(dev::keccak256(bytes{'a', 'b', 'c'} + calldata1))); } @@ -3910,7 +3925,8 @@ BOOST_AUTO_TEST_CASE(copy_from_calldata_removes_bytes_data) ABI_CHECK(callContractFunction("set()", 1, 2, 3, 4, 5), encodeArgs(true)); BOOST_CHECK(!storageEmpty(m_contractAddress)); sendMessage(bytes(), false); - BOOST_CHECK(m_output == bytes()); + BOOST_CHECK(m_transactionSuccessful); + BOOST_CHECK(m_output.empty()); BOOST_CHECK(storageEmpty(m_contractAddress)); } @@ -4056,7 +4072,7 @@ BOOST_AUTO_TEST_CASE(struct_copy_via_local) function test() returns (bool) { data1.a = 1; data1.b = 2; - var x = data1; + Struct memory x = data1; data2 = x; return data2.a == data1.a && data2.b == data1.b; } @@ -6227,6 +6243,7 @@ BOOST_AUTO_TEST_CASE(evm_exceptions_in_constructor_out_of_baund) } )"; ABI_CHECK(compileAndRunWithoutCheck(sourceCode, 0, "A"), encodeArgs()); + BOOST_CHECK(!m_transactionSuccessful); } BOOST_AUTO_TEST_CASE(positive_integers_to_signed) @@ -6279,7 +6296,7 @@ BOOST_AUTO_TEST_CASE(send_zero_ether) contract Main { constructor() payable {} function s() returns (bool) { - var r = new Receiver(); + Receiver r = new Receiver(); return r.send(0); } } @@ -6562,7 +6579,7 @@ BOOST_AUTO_TEST_CASE(bytes_in_constructors_packer) } contract Creator { function f(uint x, bytes s) returns (uint r, byte ch) { - var c = new Main(s, x); + Main c = new Main(s, x); r = c.m_x(); ch = c.part(x); } @@ -6601,7 +6618,7 @@ BOOST_AUTO_TEST_CASE(arrays_in_constructors) } contract Creator { function f(uint x, address[] s) returns (uint r, address ch) { - var c = new Main(s, x); + Main c = new Main(s, x); r = c.m_x(); ch = c.part(x); } @@ -7353,8 +7370,8 @@ BOOST_AUTO_TEST_CASE(constant_string_literal) string constant public x = "abefghijklmnopqabcdefghijklmnopqabcdefghijklmnopqabca"; constructor() { - var xx = x; - var bb = b; + string memory xx = x; + bytes32 bb = b; } function getB() returns (bytes32) { return b; } function getX() returns (string) { return x; } @@ -7445,7 +7462,7 @@ BOOST_AUTO_TEST_CASE(cross_contract_types) contract Lib { struct S {uint a; uint b; } } contract Test { function f() returns (uint r) { - var x = Lib.S({a: 2, b: 3}); + Lib.S memory x = Lib.S({a: 2, b: 3}); r = x.b; } } @@ -7530,7 +7547,7 @@ BOOST_AUTO_TEST_CASE(fixed_arrays_as_return_type) contract B { function f() returns (uint16[5] res, uint16[5] res2) { - var a = new A(); + A a = new A(); res = a.f(2); res2 = a.f(1000); } @@ -7813,13 +7830,13 @@ BOOST_AUTO_TEST_CASE(multi_variable_declaration) a = 1; b = 2; c = 3; } function f() returns (bool) { - var (x, y, z) = g(); + (uint x, uint y, uint z) = g(); if (x != 1 || y != 2 || z != 3) return false; - var (, a,) = g(); + (, uint a,) = g(); if (a != 2) return false; - var (b,) = g(); + (uint b,) = g(); if (b != 1) return false; - var (,c) = g(); + (, uint c) = g(); if (c != 3) return false; return true; } @@ -8021,11 +8038,11 @@ BOOST_AUTO_TEST_CASE(create_memory_array) contract C { struct S { uint[2] a; bytes b; } function f() returns (byte, uint, uint, byte) { - var x = new bytes(200); + bytes memory x = new bytes(200); x[199] = 'A'; - var y = new uint[2][](300); + uint[2][] memory y = new uint[2][](300); y[203][1] = 8; - var z = new S[](180); + S[] memory z = new S[](180); z[170].a[1] = 4; z[170].b = new bytes(102); z[170].b[99] = 'B'; @@ -8315,8 +8332,7 @@ BOOST_AUTO_TEST_CASE(bound_function_in_var) D.s public x; function f(uint a) returns (uint) { x.a = 6; - var g = x.mul; - return g({x: a}); + return (x.mul)({x: a}); } } )"; @@ -9104,7 +9120,7 @@ BOOST_AUTO_TEST_CASE(skip_dynamic_types) } function g() returns (uint, uint) { // Previous implementation "moved" b to the second place and did not skip. - var (a, _, b) = this.f(); + (uint a,, uint b) = this.f(); return (a, b); } } @@ -9130,7 +9146,7 @@ BOOST_AUTO_TEST_CASE(skip_dynamic_types_for_structs) s.a = "abc"; s.b = [7, 8, 9]; s.y = 6; - var (x, a, y) = this.s(); + (uint x,, uint y) = this.s(); return (x, y); } } @@ -9172,7 +9188,7 @@ BOOST_AUTO_TEST_CASE(create_dynamic_array_with_zero_length) char const* sourceCode = R"( contract C { function f() returns (uint) { - var a = new uint[][](0); + uint[][] memory a = new uint[][](0); return 7; } } @@ -10023,7 +10039,7 @@ BOOST_AUTO_TEST_CASE(function_delete_stack) contract C { function a() returns (uint) { return 7; } function test() returns (uint) { - var y = a; + function () returns (uint) y = a; delete y; y(); } @@ -10061,7 +10077,7 @@ BOOST_AUTO_TEST_CASE(function_array_cross_calls) char const* sourceCode = R"( contract D { function f(function() external returns (function() external returns (uint))[] x) - returns (function() external returns (uint)[3] r) + public returns (function() external returns (uint)[3] r) { r[0] = x[0](); r[1] = x[1](); @@ -10069,23 +10085,23 @@ BOOST_AUTO_TEST_CASE(function_array_cross_calls) } } contract C { - function test() returns (uint, uint, uint) { + function test() public returns (uint, uint, uint) { function() external returns (function() external returns (uint))[] memory x = new function() external returns (function() external returns (uint))[](10); for (uint i = 0; i < x.length; i ++) x[i] = this.h; x[0] = this.htwo; - var y = (new D()).f(x); + function() external returns (uint)[3] memory y = (new D()).f(x); return (y[0](), y[1](), y[2]()); } - function e() returns (uint) { return 5; } - function f() returns (uint) { return 6; } - function g() returns (uint) { return 7; } + function e() public returns (uint) { return 5; } + function f() public returns (uint) { return 6; } + function g() public returns (uint) { return 7; } uint counter; - function h() returns (function() external returns (uint)) { + function h() public returns (function() external returns (uint)) { return counter++ == 0 ? this.f : this.g; } - function htwo() returns (function() external returns (uint)) { + function htwo() public returns (function() external returns (uint)) { return this.e; } } @@ -11214,7 +11230,7 @@ BOOST_AUTO_TEST_CASE(bubble_up_error_messages_through_create) } contract D { function f() public { - var x = new E(); + E x = new E(); } } contract C { @@ -11490,8 +11506,7 @@ BOOST_AUTO_TEST_CASE(function_types_sig) } function h() returns (bytes4) { function () pure external returns (bytes4) fun = this.f; - var funvar = fun; - return funvar.selector; + return fun.selector; } function i() pure returns (bytes4) { return this.x.selector; @@ -11723,8 +11738,8 @@ BOOST_AUTO_TEST_CASE(snark) Pairing.G1Point memory p2; p1.X = 1; p1.Y = 2; p2.X = 1; p2.Y = 2; - var explict_sum = Pairing.add(p1, p2); - var scalar_prod = Pairing.mul(p1, 2); + Pairing.G1Point memory explict_sum = Pairing.add(p1, p2); + Pairing.G1Point memory scalar_prod = Pairing.mul(p1, 2); return (explict_sum.X == scalar_prod.X && explict_sum.Y == scalar_prod.Y); } diff --git a/test/libsolidity/SolidityExpressionCompiler.cpp b/test/libsolidity/SolidityExpressionCompiler.cpp index 5d5fb218..2668dfdf 100644 --- a/test/libsolidity/SolidityExpressionCompiler.cpp +++ b/test/libsolidity/SolidityExpressionCompiler.cpp @@ -175,7 +175,7 @@ BOOST_AUTO_TEST_CASE(literal_true) { char const* sourceCode = R"( contract test { - function f() { var x = true; } + function f() { bool x = true; } } )"; bytes code = compileFirstExpression(sourceCode); @@ -188,7 +188,7 @@ BOOST_AUTO_TEST_CASE(literal_false) { char const* sourceCode = R"( contract test { - function f() { var x = false; } + function f() { bool x = false; } } )"; bytes code = compileFirstExpression(sourceCode); @@ -201,7 +201,7 @@ BOOST_AUTO_TEST_CASE(int_literal) { char const* sourceCode = R"( contract test { - function f() { var x = 0x12345678901234567890; } + function f() { uint x = 0x12345678901234567890; } } )"; bytes code = compileFirstExpression(sourceCode); @@ -216,7 +216,7 @@ BOOST_AUTO_TEST_CASE(int_with_wei_ether_subdenomination) char const* sourceCode = R"( contract test { constructor() { - var x = 1 wei; + uint x = 1 wei; } } )"; @@ -230,8 +230,8 @@ BOOST_AUTO_TEST_CASE(int_with_szabo_ether_subdenomination) { char const* sourceCode = R"( contract test { - constructor() { - var x = 1 szabo; + function test () { + uint x = 1 szabo; } } )"; @@ -247,7 +247,7 @@ BOOST_AUTO_TEST_CASE(int_with_finney_ether_subdenomination) contract test { constructor() { - var x = 1 finney; + uint x = 1 finney; } } )"; @@ -262,7 +262,7 @@ BOOST_AUTO_TEST_CASE(int_with_ether_ether_subdenomination) char const* sourceCode = R"( contract test { constructor() { - var x = 1 ether; + uint x = 1 ether; } } )"; @@ -276,7 +276,7 @@ BOOST_AUTO_TEST_CASE(comparison) { char const* sourceCode = R"( contract test { - function f() { var x = (0x10aa < 0x11aa) != true; } + function f() { bool x = (0x10aa < 0x11aa) != true; } } )"; bytes code = compileFirstExpression(sourceCode); @@ -294,7 +294,7 @@ BOOST_AUTO_TEST_CASE(short_circuiting) { char const* sourceCode = R"( contract test { - function f() { var x = true != (4 <= 8 + 10 || 9 != 2); } + function f() { bool x = true != (4 <= 8 + 10 || 9 != 2); } } )"; bytes code = compileFirstExpression(sourceCode); @@ -490,7 +490,7 @@ BOOST_AUTO_TEST_CASE(intermediately_overflowing_literals) // have been applied char const* sourceCode = R"( contract test { - function f() { var x = (0x00ffffffffffffffffffffffffffffffffffffffff * 0xffffffffffffffffffffffffff01) & 0xbf; } + function f() { uint8 x = (0x00ffffffffffffffffffffffffffffffffffffffff * 0xffffffffffffffffffffffffff01) & 0xbf; } } )"; bytes code = compileFirstExpression(sourceCode); diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index 153a7afb..ff0a45f0 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -352,16 +352,16 @@ BOOST_AUTO_TEST_CASE(dynamic_return_types_not_possible) contract C { function f(uint) public returns (string); function g() public { - var x = this.f(2); + string memory x = this.f(2); // we can assign to x but it is not usable. bytes(x).length; } } )"; if (dev::test::Options::get().evmVersion() == EVMVersion::homestead()) - CHECK_ERROR(sourceCode, TypeError, "Explicit type conversion not allowed from \"inaccessible dynamic type\" to \"bytes storage pointer\"."); + CHECK_ERROR(sourceCode, TypeError, "Type inaccessible dynamic type is not implicitly convertible to expected type string memory."); else - CHECK_WARNING(sourceCode, "Use of the \"var\" keyword is deprecated"); + CHECK_SUCCESS_NO_WARNINGS(sourceCode); } BOOST_AUTO_TEST_CASE(warn_nonpresent_pragma) diff --git a/test/libsolidity/SolidityOptimizer.cpp b/test/libsolidity/SolidityOptimizer.cpp index 805c8602..04d9ee16 100644 --- a/test/libsolidity/SolidityOptimizer.cpp +++ b/test/libsolidity/SolidityOptimizer.cpp @@ -246,7 +246,7 @@ BOOST_AUTO_TEST_CASE(storage_write_in_loops) contract test { uint d; function f(uint a) returns (uint r) { - var x = d; + uint x = d; for (uint i = 1; i < a * a; i++) { r = d; d = i; diff --git a/test/libsolidity/syntaxTests/constructor/constructor_no_visibility.sol b/test/libsolidity/syntaxTests/constructor/constructor_no_visibility.sol index f8820fdc..88553084 100644 --- a/test/libsolidity/syntaxTests/constructor/constructor_no_visibility.sol +++ b/test/libsolidity/syntaxTests/constructor/constructor_no_visibility.sol @@ -1,3 +1,3 @@ contract A { constructor() {} } // ---- -// Warning: (13-29): No visibility specified. Defaulting to "public". +// Warning: (13-29): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/constructor/constructor_state_mutability_new.sol b/test/libsolidity/syntaxTests/constructor/constructor_state_mutability_new.sol index 15ed0e1e..78272c98 100644 --- a/test/libsolidity/syntaxTests/constructor/constructor_state_mutability_new.sol +++ b/test/libsolidity/syntaxTests/constructor/constructor_state_mutability_new.sol @@ -1,13 +1,9 @@ contract test1 { - constructor() constant {} -} -contract test2 { constructor() view {} } -contract test3 { +contract test2 { constructor() pure {} } // ---- -// TypeError: (19-44): Constructor must be payable or non-payable, but is "view". -// TypeError: (66-87): Constructor must be payable or non-payable, but is "view". -// TypeError: (109-130): Constructor must be payable or non-payable, but is "pure". +// TypeError: (19-40): Constructor must be payable or non-payable, but is "view". +// TypeError: (62-83): Constructor must be payable or non-payable, but is "pure". diff --git a/test/libsolidity/syntaxTests/constructor/constructor_state_mutability_old.sol b/test/libsolidity/syntaxTests/constructor/constructor_state_mutability_old.sol index 6dbcbc97..1ceaffee 100644 --- a/test/libsolidity/syntaxTests/constructor/constructor_state_mutability_old.sol +++ b/test/libsolidity/syntaxTests/constructor/constructor_state_mutability_old.sol @@ -1,16 +1,11 @@ contract test1 { - function test1() constant {} + function test1() view {} } contract test2 { - function test2() view {} -} -contract test3 { - function test3() pure {} + function test2() pure {} } // ---- -// Warning: (21-49): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead. -// Warning: (73-97): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead. -// Warning: (121-145): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead. -// TypeError: (21-49): Constructor must be payable or non-payable, but is "view". -// TypeError: (73-97): Constructor must be payable or non-payable, but is "view". -// TypeError: (121-145): Constructor must be payable or non-payable, but is "pure". +// Warning: (21-45): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead. +// Warning: (69-93): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead. +// TypeError: (21-45): Constructor must be payable or non-payable, but is "view". +// TypeError: (69-93): Constructor must be payable or non-payable, but is "pure". diff --git a/test/libsolidity/syntaxTests/fallback/default_visibility.sol b/test/libsolidity/syntaxTests/fallback/default_visibility.sol index 2cb0af90..f45bbd3c 100644 --- a/test/libsolidity/syntaxTests/fallback/default_visibility.sol +++ b/test/libsolidity/syntaxTests/fallback/default_visibility.sol @@ -3,4 +3,4 @@ contract C { function() {} } // ---- -// Warning: (90-103): No visibility specified. Defaulting to "public". +// Warning: (90-103): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/040_functions_with_different_structs_in_interface.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/040_functions_with_different_structs_in_interface.sol index 2af584b7..1689e6f5 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/040_functions_with_different_structs_in_interface.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/040_functions_with_different_structs_in_interface.sol @@ -3,10 +3,8 @@ pragma experimental ABIEncoderV2; contract C { struct S1 { function() external a; } struct S2 { bytes24 a; } - function f(S1) pure {} - function f(S2) pure {} + function f(S1) public pure {} + function f(S2) public pure {} } // ---- // Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments. -// Warning: (122-144): No visibility specified. Defaulting to "public". -// Warning: (149-171): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/124_enum_member_access.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/124_enum_member_access.sol index 3fd7a0cb..98bc8e66 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/124_enum_member_access.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/124_enum_member_access.sol @@ -1,10 +1,8 @@ contract test { enum ActionChoices { GoLeft, GoRight, GoStraight, Sit } - constructor() + constructor() public { choices = ActionChoices.GoStraight; } ActionChoices choices; } -// ---- -// Warning: (80-149): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/239_multi_variable_declaration_wildcards_fine.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/239_multi_variable_declaration_wildcards_fine.sol index ae260ce4..0da5c7ee 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/239_multi_variable_declaration_wildcards_fine.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/239_multi_variable_declaration_wildcards_fine.sol @@ -1,7 +1,7 @@ contract C { function three() public returns (uint, uint, uint); function two() public returns (uint, uint); - function none(); + function none() public; function f() public { (uint a,) = three(); (uint b, uint c,) = two(); @@ -13,8 +13,7 @@ contract C { } } // ---- -// Warning: (172-191): Different number of components on the left hand side (2) than on the right hand side (3). -// Warning: (201-226): Different number of components on the left hand side (3) than on the right hand side (2). -// Warning: (236-255): Different number of components on the left hand side (2) than on the right hand side (3). -// Warning: (265-290): Different number of components on the left hand side (3) than on the right hand side (2). -// Warning: (121-137): No visibility specified. Defaulting to "public". +// Warning: (179-198): Different number of components on the left hand side (2) than on the right hand side (3). +// Warning: (208-233): Different number of components on the left hand side (3) than on the right hand side (2). +// Warning: (243-262): Different number of components on the left hand side (2) than on the right hand side (3). +// Warning: (272-297): Different number of components on the left hand side (3) than on the right hand side (2). diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/268_function_overload_array_type.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/268_function_overload_array_type.sol index 0ff1ed75..97e68aa3 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/268_function_overload_array_type.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/268_function_overload_array_type.sol @@ -1,7 +1,4 @@ - contract M { - function f(uint[]); - function f(int[]); - } -// ---- -// Warning: (25-44): No visibility specified. Defaulting to "public". -// Warning: (53-71): No visibility specified. Defaulting to "public". +contract M { + function f(uint[]) public; + function f(int[]) public; +} diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/275_inline_struct_declaration_arrays.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/275_inline_struct_declaration_arrays.sol index e69c2934..bdf033a3 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/275_inline_struct_declaration_arrays.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/275_inline_struct_declaration_arrays.sol @@ -3,11 +3,10 @@ contract C { uint a; string b; } - function f() { + function f() public { S[2] memory x = [S({a: 1, b: "fish"}), S({a: 2, b: "fish"})]; } } // ---- -// Warning: (72-162): No visibility specified. Defaulting to "public". -// Warning: (95-108): Unused local variable. -// Warning: (72-162): Function state mutability can be restricted to pure +// Warning: (102-115): Unused local variable. +// Warning: (72-169): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/403_return_structs.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/403_return_structs.sol index 5583dbff..8af8098c 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/403_return_structs.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/403_return_structs.sol @@ -2,10 +2,9 @@ pragma experimental ABIEncoderV2; contract C { struct S { uint a; T[] sub; } struct T { uint[] x; } - function f() returns (uint, S) { + function f() public returns (uint, S) { } } // ---- // Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments. -// Warning: (112-150): No visibility specified. Defaulting to "public". -// Warning: (112-150): Function state mutability can be restricted to pure +// Warning: (112-157): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/423_using_interface.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/423_using_interface.sol index f06ffa62..d576bb60 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/423_using_interface.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/423_using_interface.sol @@ -1,10 +1,8 @@ interface I { - function f(); + function f() external; } contract C is I { function f() public { } } // ---- -// Warning: (18-31): Functions in interfaces should be declared external. -// Warning: (18-31): No visibility specified. Defaulting to "public". In interfaces it defaults to external. diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/535_address_overload_resolution.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/535_address_overload_resolution.sol index 35f4639e..157ea36b 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/535_address_overload_resolution.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/535_address_overload_resolution.sol @@ -1,21 +1,18 @@ contract C { - function balance() returns (uint) { + function balance() public returns (uint) { this.balance; // to avoid pureness warning return 1; } - function transfer(uint amount) { + function transfer(uint amount) public { address(this).transfer(amount); // to avoid pureness warning } } contract D { - function f() { + function f() public { uint x = (new C()).balance(); x; (new C()).transfer(5); } } // ---- -// Warning: (17-127): No visibility specified. Defaulting to "public". -// Warning: (132-239): No visibility specified. Defaulting to "public". -// Warning: (259-359): No visibility specified. Defaulting to "public". -// Warning: (17-127): Function state mutability can be restricted to view +// Warning: (17-134): Function state mutability can be restricted to view diff --git a/test/libsolidity/syntaxTests/parsing/calling_function.sol b/test/libsolidity/syntaxTests/parsing/calling_function.sol index 4c4fc1fc..9e88c451 100644 --- a/test/libsolidity/syntaxTests/parsing/calling_function.sol +++ b/test/libsolidity/syntaxTests/parsing/calling_function.sol @@ -1,9 +1,7 @@ contract test { - function f() { + function f() public { function() returns(function() returns(function() returns(function() returns(uint)))) x; uint y; y = x()()()(); } } -// ---- -// Warning: (20-175): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/parsing/conditional_multiple.sol b/test/libsolidity/syntaxTests/parsing/conditional_multiple.sol index c7d11ed6..0e348f5b 100644 --- a/test/libsolidity/syntaxTests/parsing/conditional_multiple.sol +++ b/test/libsolidity/syntaxTests/parsing/conditional_multiple.sol @@ -1,9 +1,8 @@ contract A { - function f() { + function f() public { uint x = 3 < 0 ? 2 > 1 ? 2 : 1 : 7 > 2 ? 7 : 6; } } // ---- -// Warning: (17-93): No visibility specified. Defaulting to "public". -// Warning: (40-46): Unused local variable. -// Warning: (17-93): Function state mutability can be restricted to pure +// Warning: (47-53): Unused local variable. +// Warning: (17-100): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/conditional_true_false_literal.sol b/test/libsolidity/syntaxTests/parsing/conditional_true_false_literal.sol index 90974e96..40aaa917 100644 --- a/test/libsolidity/syntaxTests/parsing/conditional_true_false_literal.sol +++ b/test/libsolidity/syntaxTests/parsing/conditional_true_false_literal.sol @@ -1,11 +1,10 @@ contract A { - function f() { + function f() public { uint x = true ? 1 : 0; uint y = false ? 0 : 1; } } // ---- -// Warning: (17-100): No visibility specified. Defaulting to "public". -// Warning: (40-46): Unused local variable. -// Warning: (71-77): Unused local variable. -// Warning: (17-100): Function state mutability can be restricted to pure +// Warning: (47-53): Unused local variable. +// Warning: (78-84): Unused local variable. +// Warning: (17-107): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/conditional_with_constants.sol b/test/libsolidity/syntaxTests/parsing/conditional_with_constants.sol index 35da69c6..705fbadf 100644 --- a/test/libsolidity/syntaxTests/parsing/conditional_with_constants.sol +++ b/test/libsolidity/syntaxTests/parsing/conditional_with_constants.sol @@ -1,11 +1,10 @@ contract A { - function f() { + function f() public { uint x = 3 > 0 ? 3 : 0; uint y = (3 > 0) ? 3 : 0; } } // ---- -// Warning: (17-103): No visibility specified. Defaulting to "public". -// Warning: (40-46): Unused local variable. -// Warning: (72-78): Unused local variable. -// Warning: (17-103): Function state mutability can be restricted to pure +// Warning: (47-53): Unused local variable. +// Warning: (79-85): Unused local variable. +// Warning: (17-110): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/conditional_with_variables.sol b/test/libsolidity/syntaxTests/parsing/conditional_with_variables.sol index eb4c7091..bbabf957 100644 --- a/test/libsolidity/syntaxTests/parsing/conditional_with_variables.sol +++ b/test/libsolidity/syntaxTests/parsing/conditional_with_variables.sol @@ -1,5 +1,5 @@ contract A { - function f() { + function f() public { uint x = 3; uint y = 1; uint z = (x > y) ? x : y; @@ -7,7 +7,6 @@ contract A { } } // ---- -// Warning: (17-143): No visibility specified. Defaulting to "public". -// Warning: (80-86): Unused local variable. -// Warning: (114-120): Unused local variable. -// Warning: (17-143): Function state mutability can be restricted to pure +// Warning: (87-93): Unused local variable. +// Warning: (121-127): Unused local variable. +// Warning: (17-150): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/constant_state_modifier.sol b/test/libsolidity/syntaxTests/parsing/constant_state_modifier.sol index da068351..8fddc988 100644 --- a/test/libsolidity/syntaxTests/parsing/constant_state_modifier.sol +++ b/test/libsolidity/syntaxTests/parsing/constant_state_modifier.sol @@ -1,7 +1,8 @@ contract C { uint s; - // this test should fail starting from 0.5.0 function f() public constant returns (uint) { return s; } } +// ---- +// ParserError: (43-51): The state mutability modifier "constant" was removed in version 0.5.0. Use "view" or "pure" instead. diff --git a/test/libsolidity/syntaxTests/parsing/declaring_fixed_and_ufixed_variables.sol b/test/libsolidity/syntaxTests/parsing/declaring_fixed_and_ufixed_variables.sol index 8be9667a..6d88669a 100644 --- a/test/libsolidity/syntaxTests/parsing/declaring_fixed_and_ufixed_variables.sol +++ b/test/libsolidity/syntaxTests/parsing/declaring_fixed_and_ufixed_variables.sol @@ -1,14 +1,13 @@ contract A { fixed40x40 storeMe; - function f(ufixed x, fixed32x32 y) { + function f(ufixed x, fixed32x32 y) public { ufixed8x8 a; fixed b; } } // ---- -// Warning: (41-121): No visibility specified. Defaulting to "public". // Warning: (52-60): Unused function parameter. Remove or comment out the variable name to silence this warning. // Warning: (62-74): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (86-97): Unused local variable. -// Warning: (107-114): Unused local variable. -// Warning: (41-121): Function state mutability can be restricted to pure +// Warning: (93-104): Unused local variable. +// Warning: (114-121): Unused local variable. +// Warning: (41-128): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/else_if_statement.sol b/test/libsolidity/syntaxTests/parsing/else_if_statement.sol index 37763697..c2a1aaeb 100644 --- a/test/libsolidity/syntaxTests/parsing/else_if_statement.sol +++ b/test/libsolidity/syntaxTests/parsing/else_if_statement.sol @@ -1,8 +1,7 @@ contract test { - function fun(uint256 a) returns (uint8 b) { + function fun(uint256 a) public returns (uint8 b) { if (a < 0) b = 0x67; else if (a == 0) b = 0x12; else b = 0x78; } } // ---- -// Warning: (20-140): No visibility specified. Defaulting to "public". -// Warning: (20-140): Function state mutability can be restricted to pure +// Warning: (20-147): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/empty_function.sol b/test/libsolidity/syntaxTests/parsing/empty_function.sol index 218fd9a7..320a0bcc 100644 --- a/test/libsolidity/syntaxTests/parsing/empty_function.sol +++ b/test/libsolidity/syntaxTests/parsing/empty_function.sol @@ -1,10 +1,9 @@ contract test { uint256 stateVar; - function functionName(bytes20 arg1, address addr) view returns (int id) { } + function functionName(bytes20 arg1, address addr) public view returns (int id) { } } // ---- -// Warning: (36-111): No visibility specified. Defaulting to "public". // Warning: (58-70): Unused function parameter. Remove or comment out the variable name to silence this warning. // Warning: (72-84): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (100-106): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (36-111): Function state mutability can be restricted to pure +// Warning: (107-113): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (36-118): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/enum_valid_declaration.sol b/test/libsolidity/syntaxTests/parsing/enum_valid_declaration.sol index 602c26ed..606f59d7 100644 --- a/test/libsolidity/syntaxTests/parsing/enum_valid_declaration.sol +++ b/test/libsolidity/syntaxTests/parsing/enum_valid_declaration.sol @@ -1,9 +1,7 @@ contract c { enum validEnum { Value1, Value2, Value3, Value4 } - constructor() { + constructor() public { a = validEnum.Value3; } validEnum a; } -// ---- -// Warning: (71-122): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/parsing/exp_expression.sol b/test/libsolidity/syntaxTests/parsing/exp_expression.sol index cdabb996..6b307ea0 100644 --- a/test/libsolidity/syntaxTests/parsing/exp_expression.sol +++ b/test/libsolidity/syntaxTests/parsing/exp_expression.sol @@ -1,9 +1,8 @@ contract test { - function fun(uint256 a) { + function fun(uint256 a) public { uint256 x = 3 ** a; } } // ---- -// Warning: (20-79): No visibility specified. Defaulting to "public". -// Warning: (54-63): Unused local variable. -// Warning: (20-79): Function state mutability can be restricted to pure +// Warning: (61-70): Unused local variable. +// Warning: (20-86): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/for_loop_simple_initexpr.sol b/test/libsolidity/syntaxTests/parsing/for_loop_simple_initexpr.sol index bd86f2f5..fce669dd 100644 --- a/test/libsolidity/syntaxTests/parsing/for_loop_simple_initexpr.sol +++ b/test/libsolidity/syntaxTests/parsing/for_loop_simple_initexpr.sol @@ -1,5 +1,5 @@ contract test { - function fun(uint256 a) { + function fun(uint256 a) public { uint256 i =0; for (i = 0; i < 10; i++) { uint256 x = i; break; continue; @@ -7,7 +7,6 @@ contract test { } } // ---- -// Warning: (20-162): No visibility specified. Defaulting to "public". // Warning: (33-42): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (115-124): Unused local variable. -// Warning: (20-162): Function state mutability can be restricted to pure +// Warning: (122-131): Unused local variable. +// Warning: (20-169): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/for_loop_simple_noexpr.sol b/test/libsolidity/syntaxTests/parsing/for_loop_simple_noexpr.sol index 4a27e0fb..4adf0948 100644 --- a/test/libsolidity/syntaxTests/parsing/for_loop_simple_noexpr.sol +++ b/test/libsolidity/syntaxTests/parsing/for_loop_simple_noexpr.sol @@ -1,5 +1,5 @@ contract test { - function fun(uint256 a) { + function fun(uint256 a) public { uint256 i =0; for (;;) { uint256 x = i; break; continue; @@ -7,7 +7,6 @@ contract test { } } // ---- -// Warning: (24-170): No visibility specified. Defaulting to "public". // Warning: (37-46): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (115-124): Unused local variable. -// Warning: (24-170): Function state mutability can be restricted to pure +// Warning: (122-131): Unused local variable. +// Warning: (24-177): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/for_loop_single_stmt_body.sol b/test/libsolidity/syntaxTests/parsing/for_loop_single_stmt_body.sol index 3df88ef5..c6af519c 100644 --- a/test/libsolidity/syntaxTests/parsing/for_loop_single_stmt_body.sol +++ b/test/libsolidity/syntaxTests/parsing/for_loop_single_stmt_body.sol @@ -1,11 +1,10 @@ contract test { - function fun(uint256 a) { + function fun(uint256 a) public { uint256 i = 0; for (i = 0; i < 10; i++) continue; } } // ---- -// Warning: (20-129): No visibility specified. Defaulting to "public". // Warning: (33-42): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (20-129): Function state mutability can be restricted to pure +// Warning: (20-136): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/for_loop_vardef_initexpr.sol b/test/libsolidity/syntaxTests/parsing/for_loop_vardef_initexpr.sol index a7c5e8bb..c22ae42f 100644 --- a/test/libsolidity/syntaxTests/parsing/for_loop_vardef_initexpr.sol +++ b/test/libsolidity/syntaxTests/parsing/for_loop_vardef_initexpr.sol @@ -1,12 +1,11 @@ contract test { - function fun(uint256 a) { + function fun(uint256 a) public { for (uint256 i = 0; i < 10; i++) { uint256 x = i; break; continue; } } } // ---- -// Warning: (20-148): No visibility specified. Defaulting to "public". // Warning: (33-42): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (101-110): Unused local variable. -// Warning: (20-148): Function state mutability can be restricted to pure +// Warning: (108-117): Unused local variable. +// Warning: (20-155): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/function_no_body.sol b/test/libsolidity/syntaxTests/parsing/function_no_body.sol index 0424ebd8..c4a686dc 100644 --- a/test/libsolidity/syntaxTests/parsing/function_no_body.sol +++ b/test/libsolidity/syntaxTests/parsing/function_no_body.sol @@ -1,5 +1,3 @@ contract test { - function functionName(bytes32 input) returns (bytes32 out); + function functionName(bytes32 input) public returns (bytes32 out); } -// ---- -// Warning: (17-76): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/parsing/function_normal_comments.sol b/test/libsolidity/syntaxTests/parsing/function_normal_comments.sol index c7a023ac..94e1e60a 100644 --- a/test/libsolidity/syntaxTests/parsing/function_normal_comments.sol +++ b/test/libsolidity/syntaxTests/parsing/function_normal_comments.sol @@ -1,10 +1,9 @@ contract test { uint256 stateVar; // We won't see this comment - function functionName(bytes32 input) returns (bytes32 out) {} + function functionName(bytes32 input) public returns (bytes32 out) {} } // ---- -// Warning: (75-136): No visibility specified. Defaulting to "public". // Warning: (97-110): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (121-132): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (75-136): Function state mutability can be restricted to pure +// Warning: (128-139): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (75-143): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/function_type_as_storage_variable_with_assignment.sol b/test/libsolidity/syntaxTests/parsing/function_type_as_storage_variable_with_assignment.sol index 3b784733..11e77f25 100644 --- a/test/libsolidity/syntaxTests/parsing/function_type_as_storage_variable_with_assignment.sol +++ b/test/libsolidity/syntaxTests/parsing/function_type_as_storage_variable_with_assignment.sol @@ -1,10 +1,9 @@ contract test { - function f(uint x, uint y) returns (uint a) {} + function f(uint x, uint y) public returns (uint a) {} function (uint, uint) internal returns (uint) f1 = f; } // ---- -// Warning: (20-66): No visibility specified. Defaulting to "public". // Warning: (31-37): Unused function parameter. Remove or comment out the variable name to silence this warning. // Warning: (39-45): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (56-62): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (20-66): Function state mutability can be restricted to pure +// Warning: (63-69): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (20-73): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/function_type_in_expression.sol b/test/libsolidity/syntaxTests/parsing/function_type_in_expression.sol index fd6447c7..3defb5ea 100644 --- a/test/libsolidity/syntaxTests/parsing/function_type_in_expression.sol +++ b/test/libsolidity/syntaxTests/parsing/function_type_in_expression.sol @@ -1,15 +1,13 @@ contract test { - function f(uint x, uint y) returns (uint a) {} - function g() { + function f(uint x, uint y) public returns (uint a) {} + function g() public { function (uint, uint) internal returns (uint) f1 = f; } } // ---- -// Warning: (20-66): No visibility specified. Defaulting to "public". // Warning: (31-37): Unused function parameter. Remove or comment out the variable name to silence this warning. // Warning: (39-45): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (56-62): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (71-153): No visibility specified. Defaulting to "public". -// Warning: (94-142): Unused local variable. -// Warning: (20-66): Function state mutability can be restricted to pure -// Warning: (71-153): Function state mutability can be restricted to pure +// Warning: (63-69): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (108-156): Unused local variable. +// Warning: (20-73): Function state mutability can be restricted to pure +// Warning: (78-167): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/if_statement.sol b/test/libsolidity/syntaxTests/parsing/if_statement.sol index 451fba1f..b3269785 100644 --- a/test/libsolidity/syntaxTests/parsing/if_statement.sol +++ b/test/libsolidity/syntaxTests/parsing/if_statement.sol @@ -1,9 +1,8 @@ contract test { - function fun(uint256 a) returns (uint) { + function fun(uint256 a) public returns (uint) { if (a >= 8) { return 2; } else { uint b = 7; } } } // ---- -// Warning: (20-121): No visibility specified. Defaulting to "public". -// Warning: (102-108): Unused local variable. -// Warning: (20-121): Function state mutability can be restricted to pure +// Warning: (109-115): Unused local variable. +// Warning: (20-128): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/inline_array_declaration.sol b/test/libsolidity/syntaxTests/parsing/inline_array_declaration.sol index f42f8f16..4730f950 100644 --- a/test/libsolidity/syntaxTests/parsing/inline_array_declaration.sol +++ b/test/libsolidity/syntaxTests/parsing/inline_array_declaration.sol @@ -1,9 +1,8 @@ contract c { uint[] a; - function f() returns (uint, uint) { + function f() public returns (uint, uint) { a = [1,2,3]; return (a[3], [2,3,4][0]); } } // ---- -// Warning: (31-128): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/parsing/interface_basic.sol b/test/libsolidity/syntaxTests/parsing/interface_basic.sol index c25b48ba..2363eaa8 100644 --- a/test/libsolidity/syntaxTests/parsing/interface_basic.sol +++ b/test/libsolidity/syntaxTests/parsing/interface_basic.sol @@ -1,6 +1,5 @@ interface Interface { - function f(); + function f() public; } // ---- -// Warning: (23-36): Functions in interfaces should be declared external. -// Warning: (23-36): No visibility specified. Defaulting to "public". In interfaces it defaults to external. +// Warning: (23-43): Functions in interfaces should be declared external. diff --git a/test/libsolidity/syntaxTests/parsing/library_simple.sol b/test/libsolidity/syntaxTests/parsing/library_simple.sol index fcf2638e..006ff307 100644 --- a/test/libsolidity/syntaxTests/parsing/library_simple.sol +++ b/test/libsolidity/syntaxTests/parsing/library_simple.sol @@ -1,6 +1,5 @@ library Lib { - function f() { } + function f() public { } } // ---- -// Warning: (18-34): No visibility specified. Defaulting to "public". -// Warning: (18-34): Function state mutability can be restricted to pure +// Warning: (18-41): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/literal_constants_with_ether_subdenominations.sol b/test/libsolidity/syntaxTests/parsing/literal_constants_with_ether_subdenominations.sol index 452b52c7..64116b88 100644 --- a/test/libsolidity/syntaxTests/parsing/literal_constants_with_ether_subdenominations.sol +++ b/test/libsolidity/syntaxTests/parsing/literal_constants_with_ether_subdenominations.sol @@ -1,5 +1,5 @@ contract c { - function f() + function f() public { a = 1 wei; b = 2 szabo; @@ -12,5 +12,4 @@ contract c { uint256 d; } // ---- -// Warning: (163-172): This declaration shadows an existing declaration. -// Warning: (17-128): No visibility specified. Defaulting to "public". +// Warning: (170-179): This declaration shadows an existing declaration. diff --git a/test/libsolidity/syntaxTests/parsing/literal_constants_with_ether_subdenominations_in_expressions.sol b/test/libsolidity/syntaxTests/parsing/literal_constants_with_ether_subdenominations_in_expressions.sol index e0f49fbf..2f2302ed 100644 --- a/test/libsolidity/syntaxTests/parsing/literal_constants_with_ether_subdenominations_in_expressions.sol +++ b/test/libsolidity/syntaxTests/parsing/literal_constants_with_ether_subdenominations_in_expressions.sol @@ -1,9 +1,7 @@ contract c { - constructor() + constructor() public { a = 1 wei * 100 wei + 7 szabo - 3; } uint256 a; } -// ---- -// Warning: (17-86): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/parsing/location_specifiers_for_locals.sol b/test/libsolidity/syntaxTests/parsing/location_specifiers_for_locals.sol index 5d6c8dc5..e311dd96 100644 --- a/test/libsolidity/syntaxTests/parsing/location_specifiers_for_locals.sol +++ b/test/libsolidity/syntaxTests/parsing/location_specifiers_for_locals.sol @@ -1,12 +1,11 @@ contract Foo { - function f() { + function f() public { uint[] storage x; uint[] memory y; } } // ---- -// Warning: (42-58): Uninitialized storage pointer. -// Warning: (19-90): No visibility specified. Defaulting to "public". -// Warning: (42-58): Unused local variable. -// Warning: (68-83): Unused local variable. -// Warning: (19-90): Function state mutability can be restricted to pure +// Warning: (49-65): Uninitialized storage pointer. +// Warning: (49-65): Unused local variable. +// Warning: (75-90): Unused local variable. +// Warning: (19-97): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/modifier_invocation.sol b/test/libsolidity/syntaxTests/parsing/modifier_invocation.sol index cb2f2985..cf986efe 100644 --- a/test/libsolidity/syntaxTests/parsing/modifier_invocation.sol +++ b/test/libsolidity/syntaxTests/parsing/modifier_invocation.sol @@ -1,8 +1,7 @@ contract c { modifier mod1(uint a) { if (msg.sender == address(a)) _; } modifier mod2 { if (msg.sender == address(2)) _; } - function f() mod1(7) mod2 { } + function f() public mod1(7) mod2 { } } // ---- -// Warning: (135-164): No visibility specified. Defaulting to "public". -// Warning: (135-164): Function state mutability can be restricted to view +// Warning: (135-171): Function state mutability can be restricted to view diff --git a/test/libsolidity/syntaxTests/parsing/multiple_functions_natspec_documentation.sol b/test/libsolidity/syntaxTests/parsing/multiple_functions_natspec_documentation.sol index 95a4d1e7..85d9e6a8 100644 --- a/test/libsolidity/syntaxTests/parsing/multiple_functions_natspec_documentation.sol +++ b/test/libsolidity/syntaxTests/parsing/multiple_functions_natspec_documentation.sol @@ -1,28 +1,24 @@ contract test { uint256 stateVar; /// This is test function 1 - function functionName1(bytes32 input) returns (bytes32 out) {} + function functionName1(bytes32 input) public returns (bytes32 out) {} /// This is test function 2 - function functionName2(bytes32 input) returns (bytes32 out) {} + function functionName2(bytes32 input) public returns (bytes32 out) {} // nothing to see here - function functionName3(bytes32 input) returns (bytes32 out) {} + function functionName3(bytes32 input) public returns (bytes32 out) {} /// This is test function 4 - function functionName4(bytes32 input) returns (bytes32 out) {} + function functionName4(bytes32 input) public returns (bytes32 out) {} } // ---- -// Warning: (74-136): No visibility specified. Defaulting to "public". // Warning: (97-110): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (121-132): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (173-235): No visibility specified. Defaulting to "public". -// Warning: (196-209): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (220-231): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (267-329): No visibility specified. Defaulting to "public". -// Warning: (290-303): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (314-325): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (366-428): No visibility specified. Defaulting to "public". -// Warning: (389-402): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (413-424): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (74-136): Function state mutability can be restricted to pure -// Warning: (173-235): Function state mutability can be restricted to pure -// Warning: (267-329): Function state mutability can be restricted to pure -// Warning: (366-428): Function state mutability can be restricted to pure +// Warning: (128-139): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (203-216): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (234-245): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (304-317): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (335-346): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (410-423): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (441-452): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (74-143): Function state mutability can be restricted to pure +// Warning: (180-249): Function state mutability can be restricted to pure +// Warning: (281-350): Function state mutability can be restricted to pure +// Warning: (387-456): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/no_function_params.sol b/test/libsolidity/syntaxTests/parsing/no_function_params.sol index 020f1233..5a024bdb 100644 --- a/test/libsolidity/syntaxTests/parsing/no_function_params.sol +++ b/test/libsolidity/syntaxTests/parsing/no_function_params.sol @@ -1,7 +1,6 @@ contract test { uint256 stateVar; - function functionName() {} + function functionName() public {} } // ---- -// Warning: (36-62): No visibility specified. Defaulting to "public". -// Warning: (36-62): Function state mutability can be restricted to pure +// Warning: (36-69): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/overloaded_functions.sol b/test/libsolidity/syntaxTests/parsing/overloaded_functions.sol index 1a78d155..fe050d1b 100644 --- a/test/libsolidity/syntaxTests/parsing/overloaded_functions.sol +++ b/test/libsolidity/syntaxTests/parsing/overloaded_functions.sol @@ -1,9 +1,7 @@ contract test { - function fun(uint a) returns(uint r) { return a; } - function fun(uint a, uint b) returns(uint r) { return a + b; } + function fun(uint a) public returns(uint r) { return a; } + function fun(uint a, uint b) public returns(uint r) { return a + b; } } // ---- -// Warning: (17-67): No visibility specified. Defaulting to "public". -// Warning: (69-131): No visibility specified. Defaulting to "public". -// Warning: (17-67): Function state mutability can be restricted to pure -// Warning: (69-131): Function state mutability can be restricted to pure +// Warning: (17-74): Function state mutability can be restricted to pure +// Warning: (76-145): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/placeholder_in_function_context.sol b/test/libsolidity/syntaxTests/parsing/placeholder_in_function_context.sol index e331440d..a50855c0 100644 --- a/test/libsolidity/syntaxTests/parsing/placeholder_in_function_context.sol +++ b/test/libsolidity/syntaxTests/parsing/placeholder_in_function_context.sol @@ -1,9 +1,8 @@ contract c { - function fun() returns (uint r) { + function fun() public returns (uint r) { uint _ = 8; return _ + 1; } } // ---- -// Warning: (17-98): No visibility specified. Defaulting to "public". -// Warning: (17-98): Function state mutability can be restricted to pure +// Warning: (17-105): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/single_function_param.sol b/test/libsolidity/syntaxTests/parsing/single_function_param.sol index 08e531f1..955f20f0 100644 --- a/test/libsolidity/syntaxTests/parsing/single_function_param.sol +++ b/test/libsolidity/syntaxTests/parsing/single_function_param.sol @@ -1,9 +1,8 @@ contract test { uint256 stateVar; - function functionName(bytes32 input) returns (bytes32 out) {} + function functionName(bytes32 input) public returns (bytes32 out) {} } // ---- -// Warning: (36-97): No visibility specified. Defaulting to "public". // Warning: (58-71): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (82-93): Unused function parameter. Remove or comment out the variable name to silence this warning. -// Warning: (36-97): Function state mutability can be restricted to pure +// Warning: (89-100): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (36-104): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/tuples.sol b/test/libsolidity/syntaxTests/parsing/tuples.sol index d691da44..8266c94f 100644 --- a/test/libsolidity/syntaxTests/parsing/tuples.sol +++ b/test/libsolidity/syntaxTests/parsing/tuples.sol @@ -1,5 +1,5 @@ contract C { - function f() { + function f() public { uint a = (1); (uint b,) = (1,); (uint c, uint d) = (1, 2 + a); @@ -8,10 +8,9 @@ contract C { } } // ---- -// Warning: (47-63): Different number of components on the left hand side (2) than on the right hand side (1). -// Warning: (100-121): Different number of components on the left hand side (2) than on the right hand side (3). -// Warning: (14-136): No visibility specified. Defaulting to "public". -// Warning: (68-74): Unused local variable. -// Warning: (76-82): Unused local variable. -// Warning: (101-107): Unused local variable. -// Warning: (14-136): Function state mutability can be restricted to pure +// Warning: (54-70): Different number of components on the left hand side (2) than on the right hand side (1). +// Warning: (107-128): Different number of components on the left hand side (2) than on the right hand side (3). +// Warning: (75-81): Unused local variable. +// Warning: (83-89): Unused local variable. +// Warning: (108-114): Unused local variable. +// Warning: (14-143): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/visibility_specifiers.sol b/test/libsolidity/syntaxTests/parsing/visibility_specifiers.sol index 4706a26d..db890b37 100644 --- a/test/libsolidity/syntaxTests/parsing/visibility_specifiers.sol +++ b/test/libsolidity/syntaxTests/parsing/visibility_specifiers.sol @@ -3,15 +3,12 @@ contract c { uint internal b; uint public c; uint d; - function f() {} + function f() public {} function f_priv() private {} - function f_public() public {} function f_internal() internal {} } // ---- // Warning: (58-71): This declaration shadows an existing declaration. -// Warning: (89-104): No visibility specified. Defaulting to "public". -// Warning: (89-104): Function state mutability can be restricted to pure -// Warning: (109-137): Function state mutability can be restricted to pure -// Warning: (142-171): Function state mutability can be restricted to pure -// Warning: (176-209): Function state mutability can be restricted to pure +// Warning: (89-111): Function state mutability can be restricted to pure +// Warning: (116-144): Function state mutability can be restricted to pure +// Warning: (149-182): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/566_require_visibility_specifiers.sol b/test/libsolidity/syntaxTests/visibility/function_no_visibility.sol index 7330ef8d..ecc36f04 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/566_require_visibility_specifiers.sol +++ b/test/libsolidity/syntaxTests/visibility/function_no_visibility.sol @@ -2,4 +2,4 @@ contract C { function f() pure { } } // ---- -// Warning: (17-38): No visibility specified. Defaulting to "public". +// Warning: (17-38): No visibility specified. Defaulting to "public". diff --git a/test/libsolidity/syntaxTests/visibility/function_no_visibility_050.sol b/test/libsolidity/syntaxTests/visibility/function_no_visibility_050.sol new file mode 100644 index 00000000..ec7c0937 --- /dev/null +++ b/test/libsolidity/syntaxTests/visibility/function_no_visibility_050.sol @@ -0,0 +1,6 @@ +pragma experimental "v0.5.0"; +contract C { + function f() pure { } +} +// ---- +// SyntaxError: (47-68): No visibility specified. |