From 98d52beba3f989b3a5eeaba2d257de8de5df60a7 Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Wed, 16 May 2018 17:18:30 +0200 Subject: Adds syntax tests, documentation and changelog entry. Refines comment for array utility function. --- test/libsolidity/syntaxTests/array/array_pop.sol | 7 ++++++ .../syntaxTests/array/array_pop_arg.sol | 8 +++++++ test/libsolidity/syntaxTests/array/bytes_pop.sol | 7 ++++++ .../syntaxTests/array/dynamic_memory_array_pop.sol | 8 +++++++ ...ength_cannot_be_constant_function_parameter.sol | 7 ++++++ .../array/length/can_be_constant_in_function.sol | 8 +++++++ .../array/length/can_be_constant_in_struct.sol | 7 ++++++ .../array/length/can_be_recursive_constant.sol | 6 ++++++ .../array/length/cannot_be_function.sol | 6 ++++++ .../array/length/cannot_be_function_call.sol | 7 ++++++ .../array/length/complex_cyclic_constant.sol | 10 +++++++++ .../array/length/const_cannot_be_fractional.sol | 6 ++++++ .../syntaxTests/array/length/constant_var.sol | 5 +++++ .../syntaxTests/array/length/cyclic_constant.sol | 8 +++++++ .../syntaxTests/array/length/inline_array.sol | 5 +++++ .../array/length/invalid_expression_1.sol | 5 +++++ .../array/length/invalid_expression_2.sol | 5 +++++ .../array/length/invalid_expression_3.sol | 5 +++++ .../array/length/invalid_expression_4.sol | 5 +++++ .../array/length/invalid_expression_5.sol | 5 +++++ .../array/length/non_integer_constant_var.sol | 6 ++++++ .../array/length/not_convertible_to_integer.sol | 5 +++++ .../syntaxTests/array/length/parentheses.sol | 25 ++++++++++++++++++++++ .../syntaxTests/array/length/pure_functions.sol | 6 ++++++ .../syntaxTests/array/length/too_large.sol | 5 +++++ .../syntaxTests/array/length/tuples.sol | 5 +++++ .../libsolidity/syntaxTests/array/no_array_pop.sol | 8 +++++++ .../syntaxTests/array/static_storage_array_pop.sol | 8 +++++++ test/libsolidity/syntaxTests/array/string_pop.sol | 8 +++++++ 29 files changed, 206 insertions(+) create mode 100644 test/libsolidity/syntaxTests/array/array_pop.sol create mode 100644 test/libsolidity/syntaxTests/array/array_pop_arg.sol create mode 100644 test/libsolidity/syntaxTests/array/bytes_pop.sol create mode 100644 test/libsolidity/syntaxTests/array/dynamic_memory_array_pop.sol create mode 100644 test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol create mode 100644 test/libsolidity/syntaxTests/array/length/can_be_constant_in_function.sol create mode 100644 test/libsolidity/syntaxTests/array/length/can_be_constant_in_struct.sol create mode 100644 test/libsolidity/syntaxTests/array/length/can_be_recursive_constant.sol create mode 100644 test/libsolidity/syntaxTests/array/length/cannot_be_function.sol create mode 100644 test/libsolidity/syntaxTests/array/length/cannot_be_function_call.sol create mode 100644 test/libsolidity/syntaxTests/array/length/complex_cyclic_constant.sol create mode 100644 test/libsolidity/syntaxTests/array/length/const_cannot_be_fractional.sol create mode 100644 test/libsolidity/syntaxTests/array/length/constant_var.sol create mode 100644 test/libsolidity/syntaxTests/array/length/cyclic_constant.sol create mode 100644 test/libsolidity/syntaxTests/array/length/inline_array.sol create mode 100644 test/libsolidity/syntaxTests/array/length/invalid_expression_1.sol create mode 100644 test/libsolidity/syntaxTests/array/length/invalid_expression_2.sol create mode 100644 test/libsolidity/syntaxTests/array/length/invalid_expression_3.sol create mode 100644 test/libsolidity/syntaxTests/array/length/invalid_expression_4.sol create mode 100644 test/libsolidity/syntaxTests/array/length/invalid_expression_5.sol create mode 100644 test/libsolidity/syntaxTests/array/length/non_integer_constant_var.sol create mode 100644 test/libsolidity/syntaxTests/array/length/not_convertible_to_integer.sol create mode 100644 test/libsolidity/syntaxTests/array/length/parentheses.sol create mode 100644 test/libsolidity/syntaxTests/array/length/pure_functions.sol create mode 100644 test/libsolidity/syntaxTests/array/length/too_large.sol create mode 100644 test/libsolidity/syntaxTests/array/length/tuples.sol create mode 100644 test/libsolidity/syntaxTests/array/no_array_pop.sol create mode 100644 test/libsolidity/syntaxTests/array/static_storage_array_pop.sol create mode 100644 test/libsolidity/syntaxTests/array/string_pop.sol (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/array_pop.sol b/test/libsolidity/syntaxTests/array/array_pop.sol new file mode 100644 index 00000000..3804f911 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/array_pop.sol @@ -0,0 +1,7 @@ +contract C { + uint[] data; + function test() public { + data.pop(); + } +} +// ---- diff --git a/test/libsolidity/syntaxTests/array/array_pop_arg.sol b/test/libsolidity/syntaxTests/array/array_pop_arg.sol new file mode 100644 index 00000000..bb7803e2 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/array_pop_arg.sol @@ -0,0 +1,8 @@ +contract C { + uint[] data; + function test() public { + data.pop(5); + } +} +// ---- +// TypeError: (65-76): Wrong argument count for function call: 1 arguments given but expected 0. diff --git a/test/libsolidity/syntaxTests/array/bytes_pop.sol b/test/libsolidity/syntaxTests/array/bytes_pop.sol new file mode 100644 index 00000000..cd5aa0eb --- /dev/null +++ b/test/libsolidity/syntaxTests/array/bytes_pop.sol @@ -0,0 +1,7 @@ +contract C { + bytes data; + function test() public { + data.pop(); + } +} +// ---- diff --git a/test/libsolidity/syntaxTests/array/dynamic_memory_array_pop.sol b/test/libsolidity/syntaxTests/array/dynamic_memory_array_pop.sol new file mode 100644 index 00000000..5a79afc9 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/dynamic_memory_array_pop.sol @@ -0,0 +1,8 @@ +contract C { + function test() public { + uint[] memory data; + data.pop(); + } +} +// ---- +// TypeError: (74-82): Member "pop" is not available in uint256[] memory outside of storage. diff --git a/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol b/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol new file mode 100644 index 00000000..11d40f26 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol @@ -0,0 +1,7 @@ +contract C { + function f(uint constant LEN) { + uint[LEN] a; + } +} +// ---- +// TypeError: (62-65): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/can_be_constant_in_function.sol b/test/libsolidity/syntaxTests/array/length/can_be_constant_in_function.sol new file mode 100644 index 00000000..92536dd5 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/can_be_constant_in_function.sol @@ -0,0 +1,8 @@ +contract C { + uint constant LEN = 10; + function f() public pure { + uint[LEN] memory a; + a; + } +} +// ---- diff --git a/test/libsolidity/syntaxTests/array/length/can_be_constant_in_struct.sol b/test/libsolidity/syntaxTests/array/length/can_be_constant_in_struct.sol new file mode 100644 index 00000000..89e174f2 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/can_be_constant_in_struct.sol @@ -0,0 +1,7 @@ +contract C { + uint constant LEN = 10; + struct Test { + uint[LEN] ids; + } +} +// ---- diff --git a/test/libsolidity/syntaxTests/array/length/can_be_recursive_constant.sol b/test/libsolidity/syntaxTests/array/length/can_be_recursive_constant.sol new file mode 100644 index 00000000..6810a9d6 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/can_be_recursive_constant.sol @@ -0,0 +1,6 @@ +contract C { + uint constant L = 5; + uint constant LEN = L + 4 * L; + uint[LEN] ids; +} +// ---- diff --git a/test/libsolidity/syntaxTests/array/length/cannot_be_function.sol b/test/libsolidity/syntaxTests/array/length/cannot_be_function.sol new file mode 100644 index 00000000..ac3abc4c --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/cannot_be_function.sol @@ -0,0 +1,6 @@ +contract C { + function f() {} + uint[f] ids; +} +// ---- +// TypeError: (42-43): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/cannot_be_function_call.sol b/test/libsolidity/syntaxTests/array/length/cannot_be_function_call.sol new file mode 100644 index 00000000..a6863955 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/cannot_be_function_call.sol @@ -0,0 +1,7 @@ +contract C { + function f(uint x) {} + uint constant LEN = f(); + uint[LEN] ids; +} +// ---- +// TypeError: (77-80): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/complex_cyclic_constant.sol b/test/libsolidity/syntaxTests/array/length/complex_cyclic_constant.sol new file mode 100644 index 00000000..254f9f02 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/complex_cyclic_constant.sol @@ -0,0 +1,10 @@ +contract C { + uint constant L2 = LEN - 10; + uint constant L1 = L2 / 10; + uint constant LEN = 10 + L1 * 5; + function f() { + uint[LEN] a; + } +} +// ---- +// TypeError: (36-39): Cyclic constant definition (or maximum recursion depth exhausted). diff --git a/test/libsolidity/syntaxTests/array/length/const_cannot_be_fractional.sol b/test/libsolidity/syntaxTests/array/length/const_cannot_be_fractional.sol new file mode 100644 index 00000000..397bbbcd --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/const_cannot_be_fractional.sol @@ -0,0 +1,6 @@ +contract C { + fixed constant L = 10.5; + uint[L] ids; +} +// ---- +// TypeError: (51-52): Array with fractional length specified. diff --git a/test/libsolidity/syntaxTests/array/length/constant_var.sol b/test/libsolidity/syntaxTests/array/length/constant_var.sol new file mode 100644 index 00000000..41750250 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/constant_var.sol @@ -0,0 +1,5 @@ +contract C { + uint constant LEN = 10; + uint[LEN] ids; +} +// ---- \ No newline at end of file diff --git a/test/libsolidity/syntaxTests/array/length/cyclic_constant.sol b/test/libsolidity/syntaxTests/array/length/cyclic_constant.sol new file mode 100644 index 00000000..91ba9045 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/cyclic_constant.sol @@ -0,0 +1,8 @@ +contract C { + uint constant LEN = LEN; + function f() { + uint[LEN] a; + } +} +// ---- +// TypeError: (37-40): Cyclic constant definition (or maximum recursion depth exhausted). diff --git a/test/libsolidity/syntaxTests/array/length/inline_array.sol b/test/libsolidity/syntaxTests/array/length/inline_array.sol new file mode 100644 index 00000000..a30745d3 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/inline_array.sol @@ -0,0 +1,5 @@ +contract C { + uint[[2]] a15; +} +// ---- +// TypeError: (22-25): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/invalid_expression_1.sol b/test/libsolidity/syntaxTests/array/length/invalid_expression_1.sol new file mode 100644 index 00000000..c92861eb --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/invalid_expression_1.sol @@ -0,0 +1,5 @@ +contract C { + uint[-true] ids; +} +// ---- +// TypeError: (22-27): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/invalid_expression_2.sol b/test/libsolidity/syntaxTests/array/length/invalid_expression_2.sol new file mode 100644 index 00000000..92e3c3cf --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/invalid_expression_2.sol @@ -0,0 +1,5 @@ +contract C { + uint[true/1] ids; +} +// ---- +// TypeError: (22-28): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/invalid_expression_3.sol b/test/libsolidity/syntaxTests/array/length/invalid_expression_3.sol new file mode 100644 index 00000000..26add45c --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/invalid_expression_3.sol @@ -0,0 +1,5 @@ +contract C { + uint[1/true] ids; +} +// ---- +// TypeError: (22-28): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/invalid_expression_4.sol b/test/libsolidity/syntaxTests/array/length/invalid_expression_4.sol new file mode 100644 index 00000000..a0d58f4a --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/invalid_expression_4.sol @@ -0,0 +1,5 @@ +contract C { + uint[1.111111E1111111111111] ids; +} +// ---- +// TypeError: (22-44): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/invalid_expression_5.sol b/test/libsolidity/syntaxTests/array/length/invalid_expression_5.sol new file mode 100644 index 00000000..38a80867 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/invalid_expression_5.sol @@ -0,0 +1,5 @@ +contract C { + uint[3/0] ids; +} +// ---- +// TypeError: (22-25): Operator / not compatible with types int_const 3 and int_const 0 diff --git a/test/libsolidity/syntaxTests/array/length/non_integer_constant_var.sol b/test/libsolidity/syntaxTests/array/length/non_integer_constant_var.sol new file mode 100644 index 00000000..7a853a34 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/non_integer_constant_var.sol @@ -0,0 +1,6 @@ +contract C { + bool constant LEN = true; + uint[LEN] ids; +} +// ---- +// TypeError: (52-55): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/not_convertible_to_integer.sol b/test/libsolidity/syntaxTests/array/length/not_convertible_to_integer.sol new file mode 100644 index 00000000..b44ccfe9 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/not_convertible_to_integer.sol @@ -0,0 +1,5 @@ +contract C { + uint[true] ids; +} +// ---- +// TypeError: (22-26): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/parentheses.sol b/test/libsolidity/syntaxTests/array/length/parentheses.sol new file mode 100644 index 00000000..40f55ad6 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/parentheses.sol @@ -0,0 +1,25 @@ +contract C { + uint constant L1 = (2); + uint constant L2 = ((2)); + uint constant L3 = ((((2)))); + uint constant L4 = (2 + 1); + uint constant L5 = ((2 + 1)); + uint constant L6 = (((2) + ((1)))); + uint constant L7 = (2 + 1) / 1; + uint constant L8 = (2 + ((1))) / (1); + uint[L1] a1; + uint[L2] a2; + uint[L3] a3; + uint[L4] a4; + uint[L5] a5; + uint[L6] a6; + uint[L7] a7; + uint[L8] a8; + uint[(2)] a9; + uint[(2 + 1)] a10; + uint[(2 + 1) + 1] a11; + uint[((2) + 1) + 1] a12; + uint[(2 + 1) + ((1))] a13; + uint[(((2) + 1)) + (((1)))] a14; + uint[((((2) + 1)) + (((1))))%1] a15; +} diff --git a/test/libsolidity/syntaxTests/array/length/pure_functions.sol b/test/libsolidity/syntaxTests/array/length/pure_functions.sol new file mode 100644 index 00000000..b620db76 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/pure_functions.sol @@ -0,0 +1,6 @@ +contract C { + uint constant LEN = keccak256(ripemd160(33)); + uint[LEN] ids; +} +// ---- +// TypeError: (72-75): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/too_large.sol b/test/libsolidity/syntaxTests/array/length/too_large.sol new file mode 100644 index 00000000..c90a7494 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/too_large.sol @@ -0,0 +1,5 @@ +contract C { + uint[8**90] ids; +} +// ---- +// TypeError: (22-27): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/tuples.sol b/test/libsolidity/syntaxTests/array/length/tuples.sol new file mode 100644 index 00000000..bc10b3b5 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/tuples.sol @@ -0,0 +1,5 @@ +contract C { + uint[(1,2)] a15; +} +// ---- +// TypeError: (22-27): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/no_array_pop.sol b/test/libsolidity/syntaxTests/array/no_array_pop.sol new file mode 100644 index 00000000..44e54ad2 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/no_array_pop.sol @@ -0,0 +1,8 @@ +contract C { + uint data; + function test() public { + data.pop(); + } +} +// ---- +// TypeError: (63-71): Member "pop" not found or not visible after argument-dependent lookup in uint256 diff --git a/test/libsolidity/syntaxTests/array/static_storage_array_pop.sol b/test/libsolidity/syntaxTests/array/static_storage_array_pop.sol new file mode 100644 index 00000000..0af171ad --- /dev/null +++ b/test/libsolidity/syntaxTests/array/static_storage_array_pop.sol @@ -0,0 +1,8 @@ +contract C { + uint[3] data; + function test() public { + data.pop(); + } +} +// ---- +// TypeError: (66-74): Member "pop" not found or not visible after argument-dependent lookup in uint256[3] storage ref diff --git a/test/libsolidity/syntaxTests/array/string_pop.sol b/test/libsolidity/syntaxTests/array/string_pop.sol new file mode 100644 index 00000000..2a46d0c3 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/string_pop.sol @@ -0,0 +1,8 @@ +contract C { + string data; + function test() public { + data.pop(); + } +} +// ---- +// TypeError: (65-73): Member "pop" not found or not visible after argument-dependent lookup in string storage ref -- cgit v1.2.3 From 2e0d019ef09ac4f168a4e528f8b4a051a942a479 Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Mon, 2 Jul 2018 17:47:48 +0200 Subject: Adds default visibility specifier to syntax tests. --- .../length/array_length_cannot_be_constant_function_parameter.sol | 4 ++-- test/libsolidity/syntaxTests/array/length/cannot_be_function.sol | 4 ++-- test/libsolidity/syntaxTests/array/length/cannot_be_function_call.sol | 4 ++-- test/libsolidity/syntaxTests/array/length/complex_cyclic_constant.sol | 2 +- test/libsolidity/syntaxTests/array/length/cyclic_constant.sol | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol b/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol index 11d40f26..5add9106 100644 --- a/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol +++ b/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol @@ -1,7 +1,7 @@ contract C { - function f(uint constant LEN) { + function f(uint constant LEN) public { uint[LEN] a; } } // ---- -// TypeError: (62-65): Invalid array length, expected integer literal or constant expression. +// TypeError: (69-72): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/cannot_be_function.sol b/test/libsolidity/syntaxTests/array/length/cannot_be_function.sol index ac3abc4c..2ad97d27 100644 --- a/test/libsolidity/syntaxTests/array/length/cannot_be_function.sol +++ b/test/libsolidity/syntaxTests/array/length/cannot_be_function.sol @@ -1,6 +1,6 @@ contract C { - function f() {} + function f() public {} uint[f] ids; } // ---- -// TypeError: (42-43): Invalid array length, expected integer literal or constant expression. +// TypeError: (49-50): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/cannot_be_function_call.sol b/test/libsolidity/syntaxTests/array/length/cannot_be_function_call.sol index a6863955..bb8cc599 100644 --- a/test/libsolidity/syntaxTests/array/length/cannot_be_function_call.sol +++ b/test/libsolidity/syntaxTests/array/length/cannot_be_function_call.sol @@ -1,7 +1,7 @@ contract C { - function f(uint x) {} + function f(uint x) public {} uint constant LEN = f(); uint[LEN] ids; } // ---- -// TypeError: (77-80): Invalid array length, expected integer literal or constant expression. +// TypeError: (84-87): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/complex_cyclic_constant.sol b/test/libsolidity/syntaxTests/array/length/complex_cyclic_constant.sol index 254f9f02..ee107078 100644 --- a/test/libsolidity/syntaxTests/array/length/complex_cyclic_constant.sol +++ b/test/libsolidity/syntaxTests/array/length/complex_cyclic_constant.sol @@ -2,7 +2,7 @@ contract C { uint constant L2 = LEN - 10; uint constant L1 = L2 / 10; uint constant LEN = 10 + L1 * 5; - function f() { + function f() public { uint[LEN] a; } } diff --git a/test/libsolidity/syntaxTests/array/length/cyclic_constant.sol b/test/libsolidity/syntaxTests/array/length/cyclic_constant.sol index 91ba9045..3adc0e9b 100644 --- a/test/libsolidity/syntaxTests/array/length/cyclic_constant.sol +++ b/test/libsolidity/syntaxTests/array/length/cyclic_constant.sol @@ -1,6 +1,6 @@ contract C { uint constant LEN = LEN; - function f() { + function f() public { uint[LEN] a; } } -- cgit v1.2.3 From 46d6454b1f47e53c791d71aba26bb953ec667433 Mon Sep 17 00:00:00 2001 From: Daniel Kirchner Date: Tue, 3 Jul 2018 15:10:39 +0200 Subject: Update tests. --- test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol b/test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol new file mode 100644 index 00000000..363d8147 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol @@ -0,0 +1,9 @@ +contract C { + function f() { + uint[] storage x; + uint[10] storage y; + } +} +// ---- +// DeclarationError: (31-47): Uninitialized storage pointer. +// DeclarationError: (51-69): Uninitialized storage pointer. -- cgit v1.2.3 From 63b6f1532ebb8e877c2d9afb8688d518bcfed86b Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Wed, 11 Jul 2018 15:57:34 +0200 Subject: Specifies visibility in syntax test. --- test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol b/test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol index 363d8147..f3be9071 100644 --- a/test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol +++ b/test/libsolidity/syntaxTests/array/uninitialized_storage_var.sol @@ -1,9 +1,9 @@ contract C { - function f() { + function f() public { uint[] storage x; uint[10] storage y; } } // ---- -// DeclarationError: (31-47): Uninitialized storage pointer. -// DeclarationError: (51-69): Uninitialized storage pointer. +// DeclarationError: (38-54): Uninitialized storage pointer. +// DeclarationError: (58-76): Uninitialized storage pointer. -- cgit v1.2.3 From fdfdddd8dc34a3a31dd254b75c4b032e4b85679b Mon Sep 17 00:00:00 2001 From: Leonardo Alt Date: Mon, 16 Jul 2018 16:11:39 +0100 Subject: Add missing period in the end of error messages --- test/libsolidity/syntaxTests/array/no_array_pop.sol | 2 +- test/libsolidity/syntaxTests/array/static_storage_array_pop.sol | 2 +- test/libsolidity/syntaxTests/array/string_pop.sol | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/no_array_pop.sol b/test/libsolidity/syntaxTests/array/no_array_pop.sol index 44e54ad2..79a68ef1 100644 --- a/test/libsolidity/syntaxTests/array/no_array_pop.sol +++ b/test/libsolidity/syntaxTests/array/no_array_pop.sol @@ -5,4 +5,4 @@ contract C { } } // ---- -// TypeError: (63-71): Member "pop" not found or not visible after argument-dependent lookup in uint256 +// TypeError: (63-71): Member "pop" not found or not visible after argument-dependent lookup in uint256. diff --git a/test/libsolidity/syntaxTests/array/static_storage_array_pop.sol b/test/libsolidity/syntaxTests/array/static_storage_array_pop.sol index 0af171ad..8414f43d 100644 --- a/test/libsolidity/syntaxTests/array/static_storage_array_pop.sol +++ b/test/libsolidity/syntaxTests/array/static_storage_array_pop.sol @@ -5,4 +5,4 @@ contract C { } } // ---- -// TypeError: (66-74): Member "pop" not found or not visible after argument-dependent lookup in uint256[3] storage ref +// TypeError: (66-74): Member "pop" not found or not visible after argument-dependent lookup in uint256[3] storage ref. diff --git a/test/libsolidity/syntaxTests/array/string_pop.sol b/test/libsolidity/syntaxTests/array/string_pop.sol index 2a46d0c3..700fda16 100644 --- a/test/libsolidity/syntaxTests/array/string_pop.sol +++ b/test/libsolidity/syntaxTests/array/string_pop.sol @@ -5,4 +5,4 @@ contract C { } } // ---- -// TypeError: (65-73): Member "pop" not found or not visible after argument-dependent lookup in string storage ref +// TypeError: (65-73): Member "pop" not found or not visible after argument-dependent lookup in string storage ref. -- cgit v1.2.3 From 13905a2094d454aa94259412a3cf20a5f8176fff Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 7 Aug 2018 19:12:49 +0200 Subject: Update tests. --- .../array/length/array_length_cannot_be_constant_function_parameter.sol | 1 + 1 file changed, 1 insertion(+) (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol b/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol index 5add9106..59328140 100644 --- a/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol +++ b/test/libsolidity/syntaxTests/array/length/array_length_cannot_be_constant_function_parameter.sol @@ -4,4 +4,5 @@ contract C { } } // ---- +// DeclarationError: (28-45): The "constant" keyword can only be used for state variables. // TypeError: (69-72): Invalid array length, expected integer literal or constant expression. -- cgit v1.2.3 From ff5be1799088ca51fb51e9c86031bd2d88fe3bce Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Fri, 21 Sep 2018 18:26:19 +0200 Subject: Disallows fixed-size multidim. arrays with zero-length. --- test/libsolidity/syntaxTests/array/multi_dim_zero_length.sol | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 test/libsolidity/syntaxTests/array/multi_dim_zero_length.sol (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/multi_dim_zero_length.sol b/test/libsolidity/syntaxTests/array/multi_dim_zero_length.sol new file mode 100644 index 00000000..2f487cde --- /dev/null +++ b/test/libsolidity/syntaxTests/array/multi_dim_zero_length.sol @@ -0,0 +1,6 @@ +contract C { + bytes[0] a; + function f() public pure returns(bytes32[0][500] memory) {} +} +// ---- +// TypeError: (62-84): Fixed-size multidimensional arrays are not allowed to have zero length. -- cgit v1.2.3 From d821cbdff5a483b3f7a7bd07758bf5e11a7cd762 Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Sat, 22 Sep 2018 00:18:22 +0200 Subject: Moves length check to reference resolver. --- .../array/length/fixed_size_multidim_zero_length.sol | 15 +++++++++++++++ .../syntaxTests/array/length/fixed_size_zero_length.sol | 15 +++++++++++++++ test/libsolidity/syntaxTests/array/length/parentheses.sol | 2 +- .../syntaxTests/array/multi_dim_zero_length.sol | 6 ------ 4 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 test/libsolidity/syntaxTests/array/length/fixed_size_multidim_zero_length.sol create mode 100644 test/libsolidity/syntaxTests/array/length/fixed_size_zero_length.sol delete mode 100644 test/libsolidity/syntaxTests/array/multi_dim_zero_length.sol (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/length/fixed_size_multidim_zero_length.sol b/test/libsolidity/syntaxTests/array/length/fixed_size_multidim_zero_length.sol new file mode 100644 index 00000000..fd8f3078 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/fixed_size_multidim_zero_length.sol @@ -0,0 +1,15 @@ +contract C { + function a() public pure returns(int[0][500] memory) {} + function b() public pure returns(uint[0][500] memory) {} + function c() public pure returns(byte[0][500] memory) {} + function d() public pure returns(bytes32[0][500] memory) {} + function e() public pure returns(bytes[0][500] memory) {} + function e() public pure returns(string[0][500] memory) {} +} +// ---- +// TypeError: (52-53): Array with zero length specified. +// TypeError: (111-112): Array with zero length specified. +// TypeError: (170-171): Array with zero length specified. +// TypeError: (232-233): Array with zero length specified. +// TypeError: (292-293): Array with zero length specified. +// TypeError: (353-354): Array with zero length specified. diff --git a/test/libsolidity/syntaxTests/array/length/fixed_size_zero_length.sol b/test/libsolidity/syntaxTests/array/length/fixed_size_zero_length.sol new file mode 100644 index 00000000..b38939e3 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/fixed_size_zero_length.sol @@ -0,0 +1,15 @@ +contract C { + int[0] a; + uint[0] b; + byte[0] c; + bytes32[0] d; + bytes[0] e; + string[0] f; +} +// ---- +// TypeError: (19-20): Array with zero length specified. +// TypeError: (32-33): Array with zero length specified. +// TypeError: (45-46): Array with zero length specified. +// TypeError: (61-62): Array with zero length specified. +// TypeError: (75-76): Array with zero length specified. +// TypeError: (90-91): Array with zero length specified. diff --git a/test/libsolidity/syntaxTests/array/length/parentheses.sol b/test/libsolidity/syntaxTests/array/length/parentheses.sol index 40f55ad6..8dbcc0a4 100644 --- a/test/libsolidity/syntaxTests/array/length/parentheses.sol +++ b/test/libsolidity/syntaxTests/array/length/parentheses.sol @@ -21,5 +21,5 @@ contract C { uint[((2) + 1) + 1] a12; uint[(2 + 1) + ((1))] a13; uint[(((2) + 1)) + (((1)))] a14; - uint[((((2) + 1)) + (((1))))%1] a15; + uint[((((3) + 1)) + (((1))))%2] a15; } diff --git a/test/libsolidity/syntaxTests/array/multi_dim_zero_length.sol b/test/libsolidity/syntaxTests/array/multi_dim_zero_length.sol deleted file mode 100644 index 2f487cde..00000000 --- a/test/libsolidity/syntaxTests/array/multi_dim_zero_length.sol +++ /dev/null @@ -1,6 +0,0 @@ -contract C { - bytes[0] a; - function f() public pure returns(bytes32[0][500] memory) {} -} -// ---- -// TypeError: (62-84): Fixed-size multidimensional arrays are not allowed to have zero length. -- cgit v1.2.3 From 3e24a3d81b2ff0dd7a2a55235bdd1b6aa417773b Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Wed, 10 Oct 2018 23:18:32 +0200 Subject: Adds syntax tests for array index access. --- test/libsolidity/syntaxTests/array/length/bytes32_too_large.sol | 5 +++++ .../syntaxTests/array/length/bytes32_too_large_multidim.sol | 5 +++++ .../libsolidity/syntaxTests/array/length/uint_too_large_multidim.sol | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 test/libsolidity/syntaxTests/array/length/bytes32_too_large.sol create mode 100644 test/libsolidity/syntaxTests/array/length/bytes32_too_large_multidim.sol create mode 100644 test/libsolidity/syntaxTests/array/length/uint_too_large_multidim.sol (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/length/bytes32_too_large.sol b/test/libsolidity/syntaxTests/array/length/bytes32_too_large.sol new file mode 100644 index 00000000..1742c80d --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/bytes32_too_large.sol @@ -0,0 +1,5 @@ +contract C { + bytes32[8**90] ids; +} +// ---- +// TypeError: (25-30): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/bytes32_too_large_multidim.sol b/test/libsolidity/syntaxTests/array/length/bytes32_too_large_multidim.sol new file mode 100644 index 00000000..1344574c --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/bytes32_too_large_multidim.sol @@ -0,0 +1,5 @@ +contract C { + bytes32[8**90][500] ids; +} +// ---- +// TypeError: (25-30): Invalid array length, expected integer literal or constant expression. diff --git a/test/libsolidity/syntaxTests/array/length/uint_too_large_multidim.sol b/test/libsolidity/syntaxTests/array/length/uint_too_large_multidim.sol new file mode 100644 index 00000000..901bc28a --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/uint_too_large_multidim.sol @@ -0,0 +1,5 @@ +contract C { + uint[8**90][500] ids; +} +// ---- +// TypeError: (22-27): Invalid array length, expected integer literal or constant expression. -- cgit v1.2.3 From 1d8e9af407fc8c47cae6401fb71463771d397d30 Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Wed, 10 Oct 2018 17:06:48 +0200 Subject: Fixes crash while encoding too large arrays. --- .../syntaxTests/array/length/parameter_too_large.sol | 5 +++++ .../syntaxTests/array/length/parameter_too_large_multidim.sol | 11 +++++++++++ .../array/length/parameter_too_large_multidim_ABIv2.sol | 10 ++++++++++ 3 files changed, 26 insertions(+) create mode 100644 test/libsolidity/syntaxTests/array/length/parameter_too_large.sol create mode 100644 test/libsolidity/syntaxTests/array/length/parameter_too_large_multidim.sol create mode 100644 test/libsolidity/syntaxTests/array/length/parameter_too_large_multidim_ABIv2.sol (limited to 'test/libsolidity/syntaxTests/array') diff --git a/test/libsolidity/syntaxTests/array/length/parameter_too_large.sol b/test/libsolidity/syntaxTests/array/length/parameter_too_large.sol new file mode 100644 index 00000000..02e0a7cc --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/parameter_too_large.sol @@ -0,0 +1,5 @@ +contract C { + function f(bytes32[1263941234127518272] memory) public pure {} +} +// ---- +// TypeError: (26-61): Array is too large to be encoded. diff --git a/test/libsolidity/syntaxTests/array/length/parameter_too_large_multidim.sol b/test/libsolidity/syntaxTests/array/length/parameter_too_large_multidim.sol new file mode 100644 index 00000000..5f96ecd5 --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/parameter_too_large_multidim.sol @@ -0,0 +1,11 @@ +contract C { + function f(bytes32[1263941234127518272][500] memory) public pure {} + function f(uint[2**30][] memory) public pure {} + function f(uint[2**30][2**30][] memory) public pure {} + function f(uint[2**16][2**16][] memory) public pure {} +} +// ---- +// TypeError: (26-66): Array is too large to be encoded. +// TypeError: (96-116): Array is too large to be encoded. +// TypeError: (146-173): Array is too large to be encoded. +// TypeError: (203-230): Array is too large to be encoded. diff --git a/test/libsolidity/syntaxTests/array/length/parameter_too_large_multidim_ABIv2.sol b/test/libsolidity/syntaxTests/array/length/parameter_too_large_multidim_ABIv2.sol new file mode 100644 index 00000000..de1fde3f --- /dev/null +++ b/test/libsolidity/syntaxTests/array/length/parameter_too_large_multidim_ABIv2.sol @@ -0,0 +1,10 @@ +pragma experimental ABIEncoderV2; + +contract C { + function f(bytes32[1263941234127518272][500] memory) public pure {} + function f(uint[2**30][2**30][][] memory) public pure {} +} +// ---- +// Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments. +// TypeError: (61-101): Array is too large to be encoded. +// TypeError: (131-160): Array is too large to be encoded. -- cgit v1.2.3