aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity/syntaxTests/inheritance
diff options
context:
space:
mode:
authorDaniel Kirchner <daniel@ekpyron.org>2018-11-12 22:14:13 +0800
committerchriseth <chris@ethereum.org>2018-11-26 21:30:32 +0800
commit597174119a5f8ab03286c58581e7bf5ec52c14dc (patch)
treedb52ada3bcdb9827c5e8b39d3eed349b3c969113 /test/libsolidity/syntaxTests/inheritance
parent5ec634939e2207a264453feb1b975575a80cd545 (diff)
downloaddexon-solidity-597174119a5f8ab03286c58581e7bf5ec52c14dc.tar.gz
dexon-solidity-597174119a5f8ab03286c58581e7bf5ec52c14dc.tar.zst
dexon-solidity-597174119a5f8ab03286c58581e7bf5ec52c14dc.zip
Tests.
Diffstat (limited to 'test/libsolidity/syntaxTests/inheritance')
-rw-r--r--test/libsolidity/syntaxTests/inheritance/override/calldata_memory.sol13
-rw-r--r--test/libsolidity/syntaxTests/inheritance/override/calldata_memory_conflict.sol26
-rw-r--r--test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface.sol13
-rw-r--r--test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface_instantiate.sol12
-rw-r--r--test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface_struct.sol17
-rw-r--r--test/libsolidity/syntaxTests/inheritance/override/calldata_memory_struct.sol17
-rw-r--r--test/libsolidity/syntaxTests/inheritance/override/internal_external.sol7
-rw-r--r--test/libsolidity/syntaxTests/inheritance/override/internal_external_inheritance.sol9
8 files changed, 114 insertions, 0 deletions
diff --git a/test/libsolidity/syntaxTests/inheritance/override/calldata_memory.sol b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory.sol
new file mode 100644
index 00000000..e683ef39
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory.sol
@@ -0,0 +1,13 @@
+contract A {
+ uint dummy;
+ function f(uint[] calldata) external pure {}
+ function g(uint[] calldata) external view { dummy; }
+ function h(uint[] calldata) external { dummy = 42; }
+ function i(uint[] calldata) external payable {}
+}
+contract B is A {
+ function f(uint[] memory) public pure {}
+ function g(uint[] memory) public view { dummy; }
+ function h(uint[] memory) public { dummy = 42; }
+ function i(uint[] memory) public payable {}
+}
diff --git a/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_conflict.sol b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_conflict.sol
new file mode 100644
index 00000000..dc734d36
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_conflict.sol
@@ -0,0 +1,26 @@
+contract A {
+ uint dummy;
+ function f(uint[] calldata) external pure {}
+ function g(uint[] calldata) external view { dummy; }
+ function h(uint[] calldata) external { dummy = 42; }
+ function i(uint[] calldata) external payable {}
+}
+contract B is A {
+ function f(uint[] calldata) external pure {}
+ function g(uint[] calldata) external view { dummy; }
+ function h(uint[] calldata) external { dummy = 42; }
+ function i(uint[] calldata) external payable {}
+ function f(uint[] memory) public pure {}
+ function g(uint[] memory) public view { dummy; }
+ function h(uint[] memory) public { dummy = 42; }
+ function i(uint[] memory) public payable {}
+}
+// ----
+// DeclarationError: (268-312): Function with same name and arguments defined twice.
+// DeclarationError: (317-369): Function with same name and arguments defined twice.
+// DeclarationError: (374-426): Function with same name and arguments defined twice.
+// DeclarationError: (431-478): Function with same name and arguments defined twice.
+// TypeError: (268-312): Overriding function visibility differs.
+// TypeError: (317-369): Overriding function visibility differs.
+// TypeError: (374-426): Overriding function visibility differs.
+// TypeError: (431-478): Overriding function visibility differs.
diff --git a/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface.sol b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface.sol
new file mode 100644
index 00000000..7eecc079
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface.sol
@@ -0,0 +1,13 @@
+interface I {
+ function f(uint[] calldata) external pure;
+ function g(uint[] calldata) external view;
+ function h(uint[] calldata) external;
+ function i(uint[] calldata) external payable;
+}
+contract C is I {
+ uint dummy;
+ function f(uint[] memory) public pure {}
+ function g(uint[] memory) public view { dummy; }
+ function h(uint[] memory) public { dummy = 42; }
+ function i(uint[] memory) public payable {}
+}
diff --git a/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface_instantiate.sol b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface_instantiate.sol
new file mode 100644
index 00000000..4cdc3924
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface_instantiate.sol
@@ -0,0 +1,12 @@
+interface I {
+ function f(uint[] calldata) external pure;
+}
+contract A is I {
+ function f(uint[] memory) public pure {}
+}
+contract C {
+ function f() public {
+ I i = I(new A());
+ i.f(new uint[](1));
+ }
+} \ No newline at end of file
diff --git a/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface_struct.sol b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface_struct.sol
new file mode 100644
index 00000000..49b27fd7
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_interface_struct.sol
@@ -0,0 +1,17 @@
+pragma experimental ABIEncoderV2;
+interface I {
+ struct S { int a; }
+ function f(S calldata) external pure;
+ function g(S calldata) external view;
+ function h(S calldata) external;
+ function i(S calldata) external payable;
+}
+contract C is I {
+ uint dummy;
+ function f(S memory) public pure {}
+ function g(S memory) public view { dummy; }
+ function h(S memory) public { dummy = 42; }
+ function i(S memory) public payable {}
+}
+// ----
+// Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments.
diff --git a/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_struct.sol b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_struct.sol
new file mode 100644
index 00000000..42aebf30
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/override/calldata_memory_struct.sol
@@ -0,0 +1,17 @@
+pragma experimental ABIEncoderV2;
+contract A {
+ uint dummy;
+ struct S { int a; }
+ function f(S calldata) external pure {}
+ function g(S calldata) external view { dummy; }
+ function h(S calldata) external { dummy = 42; }
+ function i(S calldata) external payable {}
+}
+contract B is A {
+ function f(S memory) public pure {}
+ function g(S memory) public view { dummy; }
+ function h(S memory) public { dummy = 42; }
+ function i(S memory) public payable {}
+}
+// ----
+// Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments.
diff --git a/test/libsolidity/syntaxTests/inheritance/override/internal_external.sol b/test/libsolidity/syntaxTests/inheritance/override/internal_external.sol
new file mode 100644
index 00000000..90973ee7
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/override/internal_external.sol
@@ -0,0 +1,7 @@
+contract A {
+ function f(uint[] calldata) external pure {}
+ function f(uint[] memory) internal pure {}
+}
+// ----
+// DeclarationError: (17-61): Function with same name and arguments defined twice.
+// TypeError: (17-61): Overriding function visibility differs.
diff --git a/test/libsolidity/syntaxTests/inheritance/override/internal_external_inheritance.sol b/test/libsolidity/syntaxTests/inheritance/override/internal_external_inheritance.sol
new file mode 100644
index 00000000..c09a8000
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/override/internal_external_inheritance.sol
@@ -0,0 +1,9 @@
+contract A {
+ function f(uint[] calldata) external pure {}
+}
+contract B {
+ function f(uint[] memory) internal pure {}
+}
+contract C is A, B {}
+// ----
+// TypeError: (81-123): Overriding function visibility differs.