From 583e7156ba214c98096217d18f6270e4a46491d9 Mon Sep 17 00:00:00 2001 From: Leonardo Alt Date: Tue, 31 Jul 2018 11:44:39 +0200 Subject: Dynamic type as mapping key returns error instead of assertion fail --- .../syntaxTests/parsing/mapping_nonelementary_key_1.sol | 5 +++++ .../syntaxTests/parsing/mapping_nonelementary_key_2.sol | 8 ++++++++ .../syntaxTests/parsing/mapping_nonelementary_key_3.sol | 8 ++++++++ .../syntaxTests/parsing/mapping_nonelementary_key_4.sol | 5 +++++ .../libsolidity/syntaxTests/types/mapping/mapping_dynamic_key.sol | 3 +++ .../syntaxTests/types/mapping/mapping_dynamic_key_public.sol | 5 +++++ 6 files changed, 34 insertions(+) create mode 100644 test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_1.sol create mode 100644 test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_2.sol create mode 100644 test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_3.sol create mode 100644 test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_4.sol create mode 100644 test/libsolidity/syntaxTests/types/mapping/mapping_dynamic_key.sol create mode 100644 test/libsolidity/syntaxTests/types/mapping/mapping_dynamic_key_public.sol (limited to 'test') diff --git a/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_1.sol b/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_1.sol new file mode 100644 index 00000000..ea2d282c --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_1.sol @@ -0,0 +1,5 @@ +contract c { + mapping(uint[] => uint) data; +} +// ---- +// ParserError: (26-27): Expected '=>' but got '[' diff --git a/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_2.sol b/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_2.sol new file mode 100644 index 00000000..713cddeb --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_2.sol @@ -0,0 +1,8 @@ +contract c { + struct S { + uint x; + } + mapping(S => uint) data; +} +// ---- +// ParserError: (47-48): Expected elementary type name for mapping key type diff --git a/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_3.sol b/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_3.sol new file mode 100644 index 00000000..655af9de --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_3.sol @@ -0,0 +1,8 @@ +contract c { + struct S { + string s; + } + mapping(S => uint) data; +} +// ---- +// ParserError: (49-50): Expected elementary type name for mapping key type diff --git a/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_4.sol b/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_4.sol new file mode 100644 index 00000000..f4dcb00a --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/mapping_nonelementary_key_4.sol @@ -0,0 +1,5 @@ +contract c { + mapping(string[] => uint) data; +} +// ---- +// ParserError: (28-29): Expected '=>' but got '[' diff --git a/test/libsolidity/syntaxTests/types/mapping/mapping_dynamic_key.sol b/test/libsolidity/syntaxTests/types/mapping/mapping_dynamic_key.sol new file mode 100644 index 00000000..825ee09a --- /dev/null +++ b/test/libsolidity/syntaxTests/types/mapping/mapping_dynamic_key.sol @@ -0,0 +1,3 @@ +contract c { + mapping(string => uint) data; +} diff --git a/test/libsolidity/syntaxTests/types/mapping/mapping_dynamic_key_public.sol b/test/libsolidity/syntaxTests/types/mapping/mapping_dynamic_key_public.sol new file mode 100644 index 00000000..9fb575af --- /dev/null +++ b/test/libsolidity/syntaxTests/types/mapping/mapping_dynamic_key_public.sol @@ -0,0 +1,5 @@ +contract c { + mapping(string => uint) public data; +} +// ---- +// TypeError: (14-49): Dynamically-sized keys for public mappings are not supported. -- cgit v1.2.3