From 621ce3df20ad019cf3e86cc2bbae22a59610847f Mon Sep 17 00:00:00 2001 From: chriseth Date: Thu, 29 Nov 2018 17:59:34 +0100 Subject: Test. --- .../constructor/abstract_creation_forward_reference.sol | 15 +++++++++++++++ .../recursion/recursive_struct_forward_reference.sol | 11 +++++++++++ 2 files changed, 26 insertions(+) create mode 100644 test/libsolidity/syntaxTests/constructor/abstract_creation_forward_reference.sol create mode 100644 test/libsolidity/syntaxTests/structs/recursion/recursive_struct_forward_reference.sol diff --git a/test/libsolidity/syntaxTests/constructor/abstract_creation_forward_reference.sol b/test/libsolidity/syntaxTests/constructor/abstract_creation_forward_reference.sol new file mode 100644 index 00000000..2e6aeaa5 --- /dev/null +++ b/test/libsolidity/syntaxTests/constructor/abstract_creation_forward_reference.sol @@ -0,0 +1,15 @@ +// This used to cause an internal error because of the visitation order. +contract Test { + function createChild() public { + Child asset = new Child(); + } +} + +contract Parent { + constructor(address _address) public {} +} + +contract Child is Parent { +} +// ---- +// TypeError: (146-155): Trying to create an instance of an abstract contract. diff --git a/test/libsolidity/syntaxTests/structs/recursion/recursive_struct_forward_reference.sol b/test/libsolidity/syntaxTests/structs/recursion/recursive_struct_forward_reference.sol new file mode 100644 index 00000000..d2a411ec --- /dev/null +++ b/test/libsolidity/syntaxTests/structs/recursion/recursive_struct_forward_reference.sol @@ -0,0 +1,11 @@ +pragma experimental ABIEncoderV2; + +contract C { + function f(Data.S memory a) public {} +} +contract Data { + struct S { S x; } +} +// ---- +// Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments. +// TypeError: (63-78): Internal or recursive type is not allowed for public or external functions. -- cgit