summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2014-04-02 19:59:26 +0200
committerAndreas Rumpf <rumpf_a@web.de>2014-04-02 19:59:26 +0200
commite810c760fd602a2de0386714fc333a8a5df8afeb (patch)
tree80b84ec242d3ecb525d47e0da98f3061aaa270c4 /tests
parent207874aa2d80035d0f9e72981cec78ba3ab12260 (diff)
parentc75b247a90e7e51c4ca9e8bb6ecbd823c820609c (diff)
downloadNim-e810c760fd602a2de0386714fc333a8a5df8afeb.tar.gz
Merge pull request #1060 from EXetoC/vm-arithmetic-overflow
Arithmetic underflow/overflow checking for the VM
Diffstat (limited to 'tests')
-rw-r--r--tests/vm/toverflowopcaddimmint.nim11
-rw-r--r--tests/vm/toverflowopcaddint.nim12
-rw-r--r--tests/vm/toverflowopcmulint.nim11
-rw-r--r--tests/vm/toverflowopcsubimmint.nim10
-rw-r--r--tests/vm/toverflowopcsubint.nim12
5 files changed, 56 insertions, 0 deletions
diff --git a/tests/vm/toverflowopcaddimmint.nim b/tests/vm/toverflowopcaddimmint.nim
new file mode 100644
index 000000000..c36b9ed9b
--- /dev/null
+++ b/tests/vm/toverflowopcaddimmint.nim
@@ -0,0 +1,11 @@
+discard """
+  errormsg: "over- or underflow"
+"""
+
+static:
+  proc p =
+    var
+      x = int64.high
+    discard x + 1
+    assert false
+  p()
diff --git a/tests/vm/toverflowopcaddint.nim b/tests/vm/toverflowopcaddint.nim
new file mode 100644
index 000000000..6d96afc78
--- /dev/null
+++ b/tests/vm/toverflowopcaddint.nim
@@ -0,0 +1,12 @@
+discard """
+  errormsg: "over- or underflow"
+"""
+
+static:
+  proc p =
+    var
+      x = int64.high
+      y = 1
+    discard x + y
+    assert false
+  p()
diff --git a/tests/vm/toverflowopcmulint.nim b/tests/vm/toverflowopcmulint.nim
new file mode 100644
index 000000000..81b3234ba
--- /dev/null
+++ b/tests/vm/toverflowopcmulint.nim
@@ -0,0 +1,11 @@
+discard """
+  errormsg: "over- or underflow"
+"""
+
+static:
+  proc p =
+    var
+      x = 1 shl 62
+    discard x * 2
+    assert false
+  p()
diff --git a/tests/vm/toverflowopcsubimmint.nim b/tests/vm/toverflowopcsubimmint.nim
new file mode 100644
index 000000000..09d6f745b
--- /dev/null
+++ b/tests/vm/toverflowopcsubimmint.nim
@@ -0,0 +1,10 @@
+discard """
+  errormsg: "over- or underflow"
+"""
+
+static:
+  proc p =
+    var x = int64.low
+    discard x - 1
+    assert false
+  p()
diff --git a/tests/vm/toverflowopcsubint.nim b/tests/vm/toverflowopcsubint.nim
new file mode 100644
index 000000000..8d114f200
--- /dev/null
+++ b/tests/vm/toverflowopcsubint.nim
@@ -0,0 +1,12 @@
+discard """
+  errormsg: "over- or underflow"
+"""
+
+static:
+  proc p =
+    var
+      x = int64.low
+      y = 1
+    discard x - y
+    assert false
+  p()