aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDaniel Kirchner <daniel@ekpyron.org>2018-04-12 20:57:14 +0800
committerDaniel Kirchner <daniel@ekpyron.org>2018-04-12 20:57:14 +0800
commit6862f2294357d18a4640e95e3f9235692e6c055e (patch)
tree8676110f4e82de0cebf5a91bf4547aa499184823 /test
parentc3dc67d0e0c311a907e7a27e159f9159d78af949 (diff)
downloaddexon-solidity-6862f2294357d18a4640e95e3f9235692e6c055e.tar.gz
dexon-solidity-6862f2294357d18a4640e95e3f9235692e6c055e.tar.zst
dexon-solidity-6862f2294357d18a4640e95e3f9235692e6c055e.zip
Fix internal compiler error when parsing ``var`` declaration without identifier.
Diffstat (limited to 'test')
-rw-r--r--test/libsolidity/SolidityParser.cpp22
-rw-r--r--test/libsolidity/syntaxTests/parsing/return_var.sol13
-rw-r--r--test/libsolidity/syntaxTests/parsing/var_in_function_arguments.sol13
3 files changed, 26 insertions, 22 deletions
diff --git a/test/libsolidity/SolidityParser.cpp b/test/libsolidity/SolidityParser.cpp
index 93e6bcaa..100b3662 100644
--- a/test/libsolidity/SolidityParser.cpp
+++ b/test/libsolidity/SolidityParser.cpp
@@ -557,16 +557,6 @@ BOOST_AUTO_TEST_CASE(variable_definition_with_initialization)
BOOST_CHECK(successParse(text));
}
-BOOST_AUTO_TEST_CASE(variable_definition_in_function_parameter)
-{
- char const* text = R"(
- contract test {
- function fun(var a) {}
- }
- )";
- CHECK_PARSE_ERROR(text, "Expected explicit type name");
-}
-
BOOST_AUTO_TEST_CASE(variable_definition_in_mapping)
{
char const* text = R"(
@@ -579,18 +569,6 @@ BOOST_AUTO_TEST_CASE(variable_definition_in_mapping)
CHECK_PARSE_ERROR(text, "Expected elementary type name for mapping key type");
}
-BOOST_AUTO_TEST_CASE(variable_definition_in_function_return)
-{
- char const* text = R"(
- contract test {
- function fun() returns(var d) {
- return 1;
- }
- }
- )";
- CHECK_PARSE_ERROR(text, "Expected explicit type name");
-}
-
BOOST_AUTO_TEST_CASE(operator_expression)
{
char const* text = R"(
diff --git a/test/libsolidity/syntaxTests/parsing/return_var.sol b/test/libsolidity/syntaxTests/parsing/return_var.sol
new file mode 100644
index 00000000..113032a7
--- /dev/null
+++ b/test/libsolidity/syntaxTests/parsing/return_var.sol
@@ -0,0 +1,13 @@
+contract C {
+ function f() returns(var) {}
+ function f() returns(var x) {}
+ function f() public pure returns (var storage) {}
+ function f() public pure returns (var storage x) {}
+}
+// ----
+// ParserError: (38-38): Expected explicit type name.
+// ParserError: (71-71): Expected explicit type name.
+// ParserError: (119-119): Expected explicit type name.
+// ParserError: (123-123): Location specifier needs explicit type name.
+// ParserError: (173-173): Expected explicit type name.
+// ParserError: (177-177): Location specifier needs explicit type name.
diff --git a/test/libsolidity/syntaxTests/parsing/var_in_function_arguments.sol b/test/libsolidity/syntaxTests/parsing/var_in_function_arguments.sol
new file mode 100644
index 00000000..cb166c7d
--- /dev/null
+++ b/test/libsolidity/syntaxTests/parsing/var_in_function_arguments.sol
@@ -0,0 +1,13 @@
+contract C {
+ function f(var) public pure {}
+ function f(var x) public pure {}
+ function f(var storage) public pure {}
+ function f(var storage x) public pure {}
+}
+// ----
+// ParserError: (28-28): Expected explicit type name.
+// ParserError: (63-63): Expected explicit type name.
+// ParserError: (100-100): Expected explicit type name.
+// ParserError: (104-104): Location specifier needs explicit type name.
+// ParserError: (143-143): Expected explicit type name.
+// ParserError: (147-147): Location specifier needs explicit type name.