diff options
author | Clément Pit--Claudel <clement.pitclaudel@live.com> | 2015-08-23 00:06:17 -0700 |
---|---|---|
committer | Clément Pit--Claudel <clement.pitclaudel@live.com> | 2015-08-23 00:06:17 -0700 |
commit | 69f54c327bcc5a41a143bce88b5ba2327d7246a7 (patch) | |
tree | c6191afaaf21f10389f17a8c715905f5404066bf /Test/dafny0 | |
parent | 994a151bc3646b76283b1d5fafdb91a5a26c821c (diff) |
Fix: multi-dimensional OOB errors were sometimes reported on incorrect locations.
Diffstat (limited to 'Test/dafny0')
-rw-r--r-- | Test/dafny0/Matrix-OOB.dfy | 13 | ||||
-rw-r--r-- | Test/dafny0/Matrix-OOB.dfy.expect | 12 |
2 files changed, 25 insertions, 0 deletions
diff --git a/Test/dafny0/Matrix-OOB.dfy b/Test/dafny0/Matrix-OOB.dfy new file mode 100644 index 00000000..2e5c0366 --- /dev/null +++ b/Test/dafny0/Matrix-OOB.dfy @@ -0,0 +1,13 @@ +// RUN: %dafny /compile:0 /dprint:"%t.dprint" /printTooltips "%s" > "%t"
+// RUN: %diff "%s.expect" "%t"
+
+// This is a regression test: OOB errors for matrices used to be reported on the
+// quantifier that introduced the variables that constituted the invalid indices.
+
+// WISH: It would be even better to report the error on the variables inside the
+// array instead of the array itself.
+
+method M(m: array2<int>)
+ requires m != null
+ ensures forall i, j :: m[i, j] == 0
+{ }
diff --git a/Test/dafny0/Matrix-OOB.dfy.expect b/Test/dafny0/Matrix-OOB.dfy.expect new file mode 100644 index 00000000..94e77aa4 --- /dev/null +++ b/Test/dafny0/Matrix-OOB.dfy.expect @@ -0,0 +1,12 @@ +Matrix-OOB.dfy(12,26): Error: index 0 out of range
+Execution trace:
+ (0,0): anon0
+Matrix-OOB.dfy(12,26): Error: index 1 out of range
+Execution trace:
+ (0,0): anon0
+Matrix-OOB.dfy(13,0): Error BP5003: A postcondition might not hold on this return path.
+Matrix-OOB.dfy(12,10): Related location: This is the postcondition that might not hold.
+Execution trace:
+ (0,0): anon0
+
+Dafny program verifier finished with 0 verified, 3 errors
|