aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libsolidity/analysis/TypeChecker.cpp2
-rw-r--r--test/libsolidity/syntaxTests/types/encoding_fractional.sol7
-rw-r--r--test/libsolidity/syntaxTests/types/encoding_fractional_abiencoderv2.sol9
-rw-r--r--test/libsolidity/syntaxTests/types/encoding_packed_fractional.sol8
-rw-r--r--test/libsolidity/syntaxTests/types/encoding_packed_fractional_abiencoderv2.sol10
5 files changed, 35 insertions, 1 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp
index 3d671a71..7fa9933c 100644
--- a/libsolidity/analysis/TypeChecker.cpp
+++ b/libsolidity/analysis/TypeChecker.cpp
@@ -1487,7 +1487,7 @@ void TypeChecker::typeCheckABIEncodeFunctions(
{
m_errorReporter.typeError(
arguments[i]->location(),
- "Fixed point numbers cannot yet be encoded."
+ "Fractional numbers cannot yet be encoded."
);
continue;
}
diff --git a/test/libsolidity/syntaxTests/types/encoding_fractional.sol b/test/libsolidity/syntaxTests/types/encoding_fractional.sol
new file mode 100644
index 00000000..16c76d9a
--- /dev/null
+++ b/test/libsolidity/syntaxTests/types/encoding_fractional.sol
@@ -0,0 +1,7 @@
+contract C {
+ function f1() public pure returns (bytes memory) {
+ return abi.encode(0.1, 1);
+ }
+}
+// ----
+// TypeError: (92-95): Fractional numbers cannot yet be encoded.
diff --git a/test/libsolidity/syntaxTests/types/encoding_fractional_abiencoderv2.sol b/test/libsolidity/syntaxTests/types/encoding_fractional_abiencoderv2.sol
new file mode 100644
index 00000000..80efa9c5
--- /dev/null
+++ b/test/libsolidity/syntaxTests/types/encoding_fractional_abiencoderv2.sol
@@ -0,0 +1,9 @@
+pragma experimental ABIEncoderV2;
+contract C {
+ function f1() public pure returns (bytes memory) {
+ return abi.encode(0.1, 1);
+ }
+}
+// ----
+// Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments.
+// TypeError: (126-129): Fractional numbers cannot yet be encoded.
diff --git a/test/libsolidity/syntaxTests/types/encoding_packed_fractional.sol b/test/libsolidity/syntaxTests/types/encoding_packed_fractional.sol
new file mode 100644
index 00000000..71080cb0
--- /dev/null
+++ b/test/libsolidity/syntaxTests/types/encoding_packed_fractional.sol
@@ -0,0 +1,8 @@
+contract C {
+ function f1() public pure returns (bytes memory) {
+ return abi.encodePacked(0.1, 1);
+ }
+}
+// ----
+// TypeError: (98-101): Fractional numbers cannot yet be encoded.
+// TypeError: (103-104): Cannot perform packed encoding for a literal. Please convert it to an explicit type first.
diff --git a/test/libsolidity/syntaxTests/types/encoding_packed_fractional_abiencoderv2.sol b/test/libsolidity/syntaxTests/types/encoding_packed_fractional_abiencoderv2.sol
new file mode 100644
index 00000000..e82c3c9a
--- /dev/null
+++ b/test/libsolidity/syntaxTests/types/encoding_packed_fractional_abiencoderv2.sol
@@ -0,0 +1,10 @@
+pragma experimental ABIEncoderV2;
+contract C {
+ function f1() public pure returns (bytes memory) {
+ return abi.encodePacked(0.1, 1);
+ }
+}
+// ----
+// Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments.
+// TypeError: (132-135): Fractional numbers cannot yet be encoded.
+// TypeError: (137-138): Cannot perform packed encoding for a literal. Please convert it to an explicit type first.