aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity
diff options
context:
space:
mode:
authorDaniel Kirchner <daniel@ekpyron.org>2018-04-12 16:39:13 +0800
committerDaniel Kirchner <daniel@ekpyron.org>2018-04-12 17:33:54 +0800
commitd42476e241489447e5dc4f5b1fafc8000e635fbc (patch)
treed78c025b95561c5a0a986e6c6bc6a68e214a2f9a /test/libsolidity
parent932915633bb7f5985023f80a8c704cf8c5f979fa (diff)
downloaddexon-solidity-d42476e241489447e5dc4f5b1fafc8000e635fbc.tar.gz
dexon-solidity-d42476e241489447e5dc4f5b1fafc8000e635fbc.tar.zst
dexon-solidity-d42476e241489447e5dc4f5b1fafc8000e635fbc.zip
Add test to check ConstantEvaluator for pure non-rational functions.
Diffstat (limited to 'test/libsolidity')
-rw-r--r--test/libsolidity/syntaxTests/constants/pure_non_rational.sol11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/libsolidity/syntaxTests/constants/pure_non_rational.sol b/test/libsolidity/syntaxTests/constants/pure_non_rational.sol
new file mode 100644
index 00000000..4b96f1c7
--- /dev/null
+++ b/test/libsolidity/syntaxTests/constants/pure_non_rational.sol
@@ -0,0 +1,11 @@
+// Tests that the ConstantEvaluator does not crash for pure non-rational functions.
+// Currently it does not evaluate such functions, but this may change in the future
+// causing a division by zero error for a.
+contract C {
+ uint constant a = 1 / (uint(keccak256([0])[0]) - uint(keccak256([0])[0]));
+ uint constant b = 1 / uint(keccak256([0]));
+ uint constant c = uint(keccak256([0]));
+ uint[c] mem;
+}
+// ----
+// TypeError: (392-393): Invalid array length, expected integer literal or constant expression.