aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity/syntaxTests
diff options
context:
space:
mode:
authorDaniel Kirchner <daniel@ekpyron.org>2018-04-04 18:28:22 +0800
committerDaniel Kirchner <daniel@ekpyron.org>2018-04-09 21:26:05 +0800
commitb8fdb666e235bb6b19f11dba7740227026111598 (patch)
tree052d6a730b300e6c976759ac993d879153082c08 /test/libsolidity/syntaxTests
parent4e037281acaf74c907f68e6227d6aa1b8847c78d (diff)
downloaddexon-solidity-b8fdb666e235bb6b19f11dba7740227026111598.tar
dexon-solidity-b8fdb666e235bb6b19f11dba7740227026111598.tar.gz
dexon-solidity-b8fdb666e235bb6b19f11dba7740227026111598.tar.bz2
dexon-solidity-b8fdb666e235bb6b19f11dba7740227026111598.tar.lz
dexon-solidity-b8fdb666e235bb6b19f11dba7740227026111598.tar.xz
dexon-solidity-b8fdb666e235bb6b19f11dba7740227026111598.tar.zst
dexon-solidity-b8fdb666e235bb6b19f11dba7740227026111598.zip
Allow duplicated constructor calls, if no arguments; support for multiple inheritance; backwards compatibility.
# tmp
Diffstat (limited to 'test/libsolidity/syntaxTests')
-rw-r--r--test/libsolidity/syntaxTests/inheritance/allow_empty_duplicated_super_constructor_call.sol3
-rw-r--r--test/libsolidity/syntaxTests/inheritance/base_arguments_multiple_inheritance.sol9
-rw-r--r--test/libsolidity/syntaxTests/inheritance/duplicated_ancestor_constructor_call.sol5
-rw-r--r--test/libsolidity/syntaxTests/inheritance/duplicated_ancestor_constructor_call_V050.sol7
-rw-r--r--test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call.sol2
-rw-r--r--test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_V050.sol6
-rw-r--r--test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_empty.sol4
-rw-r--r--test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_multi.sol7
8 files changed, 38 insertions, 5 deletions
diff --git a/test/libsolidity/syntaxTests/inheritance/allow_empty_duplicated_super_constructor_call.sol b/test/libsolidity/syntaxTests/inheritance/allow_empty_duplicated_super_constructor_call.sol
new file mode 100644
index 00000000..1f580b1d
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/allow_empty_duplicated_super_constructor_call.sol
@@ -0,0 +1,3 @@
+contract A { constructor() public { } }
+contract B1 is A { constructor() A() public { } }
+contract B2 is A { constructor() A public { } }
diff --git a/test/libsolidity/syntaxTests/inheritance/base_arguments_multiple_inheritance.sol b/test/libsolidity/syntaxTests/inheritance/base_arguments_multiple_inheritance.sol
new file mode 100644
index 00000000..f63d0f02
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/base_arguments_multiple_inheritance.sol
@@ -0,0 +1,9 @@
+contract Base {
+ constructor(uint) public { }
+}
+contract Base1 is Base(3) {}
+contract Derived is Base, Base1 {
+ constructor(uint i) Base(i) public {}
+}
+// ----
+// Warning: Duplicated super constructor calls are deprecated.
diff --git a/test/libsolidity/syntaxTests/inheritance/duplicated_ancestor_constructor_call.sol b/test/libsolidity/syntaxTests/inheritance/duplicated_ancestor_constructor_call.sol
new file mode 100644
index 00000000..97f3f8ff
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/duplicated_ancestor_constructor_call.sol
@@ -0,0 +1,5 @@
+contract A { constructor(uint) public { } }
+contract B is A(2) { constructor() public { } }
+contract C is B { constructor() A(3) public { } }
+// ----
+// Warning: Duplicated super constructor calls are deprecated.
diff --git a/test/libsolidity/syntaxTests/inheritance/duplicated_ancestor_constructor_call_V050.sol b/test/libsolidity/syntaxTests/inheritance/duplicated_ancestor_constructor_call_V050.sol
new file mode 100644
index 00000000..933c9087
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/duplicated_ancestor_constructor_call_V050.sol
@@ -0,0 +1,7 @@
+pragma experimental "v0.5.0";
+
+contract A { constructor(uint) public { } }
+contract B is A(2) { constructor() public { } }
+contract C is B { constructor() A(3) public { } }
+// ----
+// DeclarationError: Duplicated super constructor call.
diff --git a/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call.sol b/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call.sol
index 95df1040..876b07ea 100644
--- a/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call.sol
+++ b/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call.sol
@@ -1,4 +1,4 @@
contract A { constructor(uint) public { } }
contract B is A(2) { constructor() A(3) public { } }
// ----
-// DeclarationError: Duplicated super constructor call.
+// Warning: Duplicated super constructor calls are deprecated.
diff --git a/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_V050.sol b/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_V050.sol
new file mode 100644
index 00000000..31a363fd
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_V050.sol
@@ -0,0 +1,6 @@
+pragma experimental "v0.5.0";
+
+contract A { constructor(uint) public { } }
+contract B is A(2) { constructor() A(3) public { } }
+// ----
+// DeclarationError: Duplicated super constructor call.
diff --git a/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_empty.sol b/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_empty.sol
deleted file mode 100644
index f8024ad6..00000000
--- a/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_empty.sol
+++ /dev/null
@@ -1,4 +0,0 @@
-contract A { constructor() public { } }
-contract B is A { constructor() A() public { } }
-// ----
-// DeclarationError: Duplicated super constructor call.
diff --git a/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_multi.sol b/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_multi.sol
new file mode 100644
index 00000000..caed18eb
--- /dev/null
+++ b/test/libsolidity/syntaxTests/inheritance/duplicated_super_constructor_call_multi.sol
@@ -0,0 +1,7 @@
+contract C { constructor(uint) public {} }
+contract A is C(2) {}
+contract B is C(2) {}
+contract D is A, B { constructor() C(3) public {} }
+// ----
+// Warning: Duplicated super constructor calls are deprecated.
+// Warning: Duplicated super constructor calls are deprecated.