aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity/syntaxTests
diff options
context:
space:
mode:
authorliangdzou <liang.d.zou@gmail.com>2018-09-12 18:01:34 +0800
committerDaniel Kirchner <daniel@ekpyron.org>2018-09-14 14:42:40 +0800
commitf3cbdadec7a38626e5dd64c0faa981161b99bd80 (patch)
tree85320ca1805bfaad95c45b60160481d4fcb09e6c /test/libsolidity/syntaxTests
parent5f4a2d2cad56dee3f7f350d65d24b98d1f4b2b07 (diff)
downloaddexon-solidity-f3cbdadec7a38626e5dd64c0faa981161b99bd80.tar.gz
dexon-solidity-f3cbdadec7a38626e5dd64c0faa981161b99bd80.tar.zst
dexon-solidity-f3cbdadec7a38626e5dd64c0faa981161b99bd80.zip
Do not set to ref for explicit conversion and add assertion for array
type conversion. Also, add some test cases for #4901 and #4948.
Diffstat (limited to 'test/libsolidity/syntaxTests')
-rw-r--r--test/libsolidity/syntaxTests/conversion/allowed_conversion_to_bytes_array.sol9
-rw-r--r--test/libsolidity/syntaxTests/conversion/allowed_conversion_to_string.sol9
-rw-r--r--test/libsolidity/syntaxTests/conversion/explicit_conversion_from_storage_array_ref.sol10
-rw-r--r--test/libsolidity/syntaxTests/conversion/implicit_conversion_from_storage_array_ref.sol7
-rw-r--r--test/libsolidity/syntaxTests/conversion/not_allowed_conversion_to_int_array_pointer1.sol10
-rw-r--r--test/libsolidity/syntaxTests/conversion/not_allowed_conversion_to_int_array_pointer2.sol10
-rw-r--r--test/libsolidity/syntaxTests/dataLocations/memory_storage_data_location.sol12
7 files changed, 67 insertions, 0 deletions
diff --git a/test/libsolidity/syntaxTests/conversion/allowed_conversion_to_bytes_array.sol b/test/libsolidity/syntaxTests/conversion/allowed_conversion_to_bytes_array.sol
new file mode 100644
index 00000000..78c40e53
--- /dev/null
+++ b/test/libsolidity/syntaxTests/conversion/allowed_conversion_to_bytes_array.sol
@@ -0,0 +1,9 @@
+contract C {
+ bytes a;
+ bytes b;
+ function f() public view {
+ bytes storage c = a;
+ bytes memory d = b;
+ d = bytes(c);
+ }
+}
diff --git a/test/libsolidity/syntaxTests/conversion/allowed_conversion_to_string.sol b/test/libsolidity/syntaxTests/conversion/allowed_conversion_to_string.sol
new file mode 100644
index 00000000..f7e96f35
--- /dev/null
+++ b/test/libsolidity/syntaxTests/conversion/allowed_conversion_to_string.sol
@@ -0,0 +1,9 @@
+contract C {
+ string a;
+ string b;
+ function f() public view {
+ string storage c = a;
+ string memory d = b;
+ d = string(c);
+ }
+}
diff --git a/test/libsolidity/syntaxTests/conversion/explicit_conversion_from_storage_array_ref.sol b/test/libsolidity/syntaxTests/conversion/explicit_conversion_from_storage_array_ref.sol
new file mode 100644
index 00000000..458adda6
--- /dev/null
+++ b/test/libsolidity/syntaxTests/conversion/explicit_conversion_from_storage_array_ref.sol
@@ -0,0 +1,10 @@
+contract C {
+ int[10] x;
+ function f() public view {
+ int[](x);
+ int(x);
+ }
+}
+// ----
+// TypeError: (55-63): Explicit type conversion not allowed from "int256[10] storage ref" to "int256[] storage pointer".
+// TypeError: (67-73): Explicit type conversion not allowed from "int256[10] storage ref" to "int256".
diff --git a/test/libsolidity/syntaxTests/conversion/implicit_conversion_from_storage_array_ref.sol b/test/libsolidity/syntaxTests/conversion/implicit_conversion_from_storage_array_ref.sol
new file mode 100644
index 00000000..31e298d0
--- /dev/null
+++ b/test/libsolidity/syntaxTests/conversion/implicit_conversion_from_storage_array_ref.sol
@@ -0,0 +1,7 @@
+contract C {
+ int[10] x;
+ int[] y;
+ function f() public {
+ y = x;
+ }
+}
diff --git a/test/libsolidity/syntaxTests/conversion/not_allowed_conversion_to_int_array_pointer1.sol b/test/libsolidity/syntaxTests/conversion/not_allowed_conversion_to_int_array_pointer1.sol
new file mode 100644
index 00000000..3aa59612
--- /dev/null
+++ b/test/libsolidity/syntaxTests/conversion/not_allowed_conversion_to_int_array_pointer1.sol
@@ -0,0 +1,10 @@
+contract C {
+ uint[] a;
+ uint[] b;
+ function f() public view {
+ uint[] storage c = a;
+ uint[] storage d = b;
+ d = uint[](c);
+ }
+}
+// ----
diff --git a/test/libsolidity/syntaxTests/conversion/not_allowed_conversion_to_int_array_pointer2.sol b/test/libsolidity/syntaxTests/conversion/not_allowed_conversion_to_int_array_pointer2.sol
new file mode 100644
index 00000000..060c9707
--- /dev/null
+++ b/test/libsolidity/syntaxTests/conversion/not_allowed_conversion_to_int_array_pointer2.sol
@@ -0,0 +1,10 @@
+contract C {
+ uint[] a;
+ uint[] b;
+ function f() public view {
+ uint[] storage c = a;
+ uint[] memory d = b;
+ d = uint[](c);
+ }
+}
+// ----
diff --git a/test/libsolidity/syntaxTests/dataLocations/memory_storage_data_location.sol b/test/libsolidity/syntaxTests/dataLocations/memory_storage_data_location.sol
new file mode 100644
index 00000000..a441b540
--- /dev/null
+++ b/test/libsolidity/syntaxTests/dataLocations/memory_storage_data_location.sol
@@ -0,0 +1,12 @@
+contract C {
+ int[] x;
+ function f() public {
+ int[] storage a = x;
+ int[] memory b;
+ a = b;
+ a = int[](b);
+ }
+}
+// ----
+// TypeError: (93-94): Type int256[] memory is not implicitly convertible to expected type int256[] storage pointer.
+// TypeError: (102-110): Type int256[] memory is not implicitly convertible to expected type int256[] storage pointer.