aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity/syntaxTests
diff options
context:
space:
mode:
authorChristian Parpart <christian@parpart.family>2018-06-06 17:15:22 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2018-06-14 07:24:43 +0800
commita211b8911885ded6ddcd4d7400994a85235fe8e4 (patch)
treede225bc1e0f6f0dc29ab7984088752106dbfe5cd /test/libsolidity/syntaxTests
parent014bbc6c97a4abdf8eed5d0273d00c80308e355d (diff)
downloaddexon-solidity-a211b8911885ded6ddcd4d7400994a85235fe8e4.tar
dexon-solidity-a211b8911885ded6ddcd4d7400994a85235fe8e4.tar.gz
dexon-solidity-a211b8911885ded6ddcd4d7400994a85235fe8e4.tar.bz2
dexon-solidity-a211b8911885ded6ddcd4d7400994a85235fe8e4.tar.lz
dexon-solidity-a211b8911885ded6ddcd4d7400994a85235fe8e4.tar.xz
dexon-solidity-a211b8911885ded6ddcd4d7400994a85235fe8e4.tar.zst
dexon-solidity-a211b8911885ded6ddcd4d7400994a85235fe8e4.zip
Enforce disallowing empty structs
This patch enfoces an error when it encounters an empty struct, effectively eliminating the deprecation warning. Also adjust 419_interface_structs to explicitely test for (non-empty) structs, as this behaviour "may" change in the future.
Diffstat (limited to 'test/libsolidity/syntaxTests')
-rw-r--r--test/libsolidity/syntaxTests/empty_struct.sol2
-rw-r--r--test/libsolidity/syntaxTests/empty_struct_050.sol6
-rw-r--r--test/libsolidity/syntaxTests/nameAndTypeResolution/039_functions_with_identical_structs_in_interface.sol8
-rw-r--r--test/libsolidity/syntaxTests/nameAndTypeResolution/419_interface_structs.sol6
-rw-r--r--test/libsolidity/syntaxTests/specialFunctions/types_with_unspecified_encoding_types.sol11
5 files changed, 13 insertions, 20 deletions
diff --git a/test/libsolidity/syntaxTests/empty_struct.sol b/test/libsolidity/syntaxTests/empty_struct.sol
index 12655309..0a52fb72 100644
--- a/test/libsolidity/syntaxTests/empty_struct.sol
+++ b/test/libsolidity/syntaxTests/empty_struct.sol
@@ -2,4 +2,4 @@ contract test {
struct A {}
}
// ----
-// Warning: (17-28): Defining empty structs is deprecated.
+// SyntaxError: (17-28): Defining empty structs is disallowed.
diff --git a/test/libsolidity/syntaxTests/empty_struct_050.sol b/test/libsolidity/syntaxTests/empty_struct_050.sol
deleted file mode 100644
index 886f1f83..00000000
--- a/test/libsolidity/syntaxTests/empty_struct_050.sol
+++ /dev/null
@@ -1,6 +0,0 @@
-pragma experimental "v0.5.0";
-contract test {
- struct A {}
-}
-// ----
-// SyntaxError: (47-58): Defining empty structs is disallowed.
diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/039_functions_with_identical_structs_in_interface.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/039_functions_with_identical_structs_in_interface.sol
index df4f5879..0be0bb2b 100644
--- a/test/libsolidity/syntaxTests/nameAndTypeResolution/039_functions_with_identical_structs_in_interface.sol
+++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/039_functions_with_identical_structs_in_interface.sol
@@ -1,13 +1,11 @@
pragma experimental ABIEncoderV2;
contract C {
- struct S1 { }
- struct S2 { }
+ struct S1 { int i; }
+ struct S2 { int i; }
function f(S1) pure {}
function f(S2) pure {}
}
// ----
// Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments.
-// Warning: (52-65): Defining empty structs is deprecated.
-// Warning: (70-83): Defining empty structs is deprecated.
-// TypeError: (115-137): Function overload clash during conversion to external types for arguments.
+// TypeError: (129-151): Function overload clash during conversion to external types for arguments.
diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/419_interface_structs.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/419_interface_structs.sol
index 2afef06c..c74d52d3 100644
--- a/test/libsolidity/syntaxTests/nameAndTypeResolution/419_interface_structs.sol
+++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/419_interface_structs.sol
@@ -1,7 +1,9 @@
interface I {
struct A {
+ // This is currently expected to break, but it *may* change in the future.
+ int dummy;
}
}
// ----
-// Warning: (18-34): Defining empty structs is deprecated.
-// TypeError: (18-34): Structs cannot be defined in interfaces.
+// TypeError: (18-136): Structs cannot be defined in interfaces.
+// TypeError: (120-129): Variables cannot be declared in interfaces.
diff --git a/test/libsolidity/syntaxTests/specialFunctions/types_with_unspecified_encoding_types.sol b/test/libsolidity/syntaxTests/specialFunctions/types_with_unspecified_encoding_types.sol
index d10c1718..e46a9050 100644
--- a/test/libsolidity/syntaxTests/specialFunctions/types_with_unspecified_encoding_types.sol
+++ b/test/libsolidity/syntaxTests/specialFunctions/types_with_unspecified_encoding_types.sol
@@ -1,7 +1,7 @@
contract C {
struct S { uint x; }
S s;
- struct T { }
+ struct T { uint y; }
T t;
enum A { X, Y }
function f() public pure {
@@ -9,9 +9,8 @@ contract C {
}
}
// ----
-// Warning: (51-63): Defining empty structs is deprecated.
-// TypeError: (168-169): This type cannot be encoded.
-// TypeError: (171-172): This type cannot be encoded.
+// TypeError: (176-177): This type cannot be encoded.
// TypeError: (179-180): This type cannot be encoded.
-// TypeError: (182-186): This type cannot be encoded.
-// TypeError: (188-194): This type cannot be encoded.
+// TypeError: (187-188): This type cannot be encoded.
+// TypeError: (190-194): This type cannot be encoded.
+// TypeError: (196-202): This type cannot be encoded.