From 0f5d0b6455cf2b135b4ebb2c53badc12357a4817 Mon Sep 17 00:00:00 2001 From: a3d4 Date: Wed, 19 Aug 2020 01:15:08 +0200 Subject: [PATCH] Improve error coverage of parser --- scripts/error_codes.py | 4 ++-- test/libsolidity/SolidityParser.cpp | 16 ---------------- .../parsing/multiple_modifier_overrides.sol | 5 +++++ .../parsing/multiple_visibility_specifiers.sol | 7 +++++++ 4 files changed, 14 insertions(+), 18 deletions(-) create mode 100644 test/libsolidity/syntaxTests/parsing/multiple_modifier_overrides.sol create mode 100644 test/libsolidity/syntaxTests/parsing/multiple_visibility_specifiers.sol diff --git a/scripts/error_codes.py b/scripts/error_codes.py index 6b28b1fc6..c834b3060 100755 --- a/scripts/error_codes.py +++ b/scripts/error_codes.py @@ -220,12 +220,12 @@ def examine_id_coverage(top_dir, source_id_to_file_names, new_ids_only=False): "1054", "1123", "1133", "1220", "1584", "1823", "1950", "1957", "1988", "2418", "2461", "2512", "2592", "2657", "2800", "2842", "2856", "3263", "3299", "3356", "3441", "3682", "3876", - "3893", "3997", "4010", "4110", "4802", "4805", "4828", + "3893", "3997", "4010", "4802", "4805", "4828", "4904", "4990", "5052", "5073", "5170", "5188", "5272", "5333", "5347", "5473", "5622", "6041", "6052", "6272", "6708", "6792", "6931", "7110", "7128", "7186", "7319", "7589", "7593", "7653", "7812", "7885", "8065", "8084", "8140", "8261", "8312", "8452", "8592", "8758", "9011", - "9085", "9102", "9390", "9439", "9440", "9547", "9551", "9615", "9980" + "9085", "9390", "9440", "9547", "9551", "9615", "9980" } new_source_only_ids = source_only_ids - old_source_only_ids if len(new_source_only_ids) != 0: diff --git a/test/libsolidity/SolidityParser.cpp b/test/libsolidity/SolidityParser.cpp index 6ad68d85b..53c93c726 100644 --- a/test/libsolidity/SolidityParser.cpp +++ b/test/libsolidity/SolidityParser.cpp @@ -511,22 +511,6 @@ BOOST_AUTO_TEST_CASE(contract_multiple_inheritance_with_arguments) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(multiple_visibility_specifiers) -{ - char const* text = R"( - contract c { - uint private internal a; - } - )"; - CHECK_PARSE_ERROR(text, "Visibility already specified as \"private\"."); - text = R"( - contract c { - function f() private external {} - } - )"; - CHECK_PARSE_ERROR(text, "Visibility already specified as \"private\"."); -} - BOOST_AUTO_TEST_CASE(keyword_is_reserved) { auto keywords = { diff --git a/test/libsolidity/syntaxTests/parsing/multiple_modifier_overrides.sol b/test/libsolidity/syntaxTests/parsing/multiple_modifier_overrides.sol new file mode 100644 index 000000000..8dbe4ac67 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/multiple_modifier_overrides.sol @@ -0,0 +1,5 @@ +contract C { + modifier f() override override {} +} +// ---- +// ParserError 9102: (39-47): Override already specified. diff --git a/test/libsolidity/syntaxTests/parsing/multiple_visibility_specifiers.sol b/test/libsolidity/syntaxTests/parsing/multiple_visibility_specifiers.sol new file mode 100644 index 000000000..c04558171 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/multiple_visibility_specifiers.sol @@ -0,0 +1,7 @@ +contract C { + uint private internal a; + function f() private external {} +} +// ---- +// ParserError 4110: (30-38): Visibility already specified as "private". +// ParserError 9439: (67-75): Visibility already specified as "private".