summaryrefslogtreecommitdiff
path: root/Test/dafny0/IteratorResolution.dfy
diff options
context:
space:
mode:
authorGravatar Rustan Leino <leino@microsoft.com>2012-10-03 15:18:04 -0700
committerGravatar Rustan Leino <leino@microsoft.com>2012-10-03 15:18:04 -0700
commitaf925ecfdf7df7f36d0ce71ac423fd8934b41007 (patch)
treea5fffb242f3a6e75203ed0d888a3b0f3ce144afa /Test/dafny0/IteratorResolution.dfy
parent7f2783976dbdfe1392e40cf749922372f32e7ed7 (diff)
Dafny: good error locations for yield statements; other iterator improvements / bug fixes
Diffstat (limited to 'Test/dafny0/IteratorResolution.dfy')
-rw-r--r--Test/dafny0/IteratorResolution.dfy30
1 files changed, 30 insertions, 0 deletions
diff --git a/Test/dafny0/IteratorResolution.dfy b/Test/dafny0/IteratorResolution.dfy
index 64d1ebd3..60b1bc7e 100644
--- a/Test/dafny0/IteratorResolution.dfy
+++ b/Test/dafny0/IteratorResolution.dfy
@@ -106,3 +106,33 @@ module Mx {
}
}
}
+
+// --------------------------------- _decreases<n> fields
+
+class Cell
+{
+ var data: int;
+}
+
+iterator Dieter0(c: Cell)
+ requires c != null;
+ decreases c.data, c.data, c != null;
+{
+ assert _decreases0 == _decreases1;
+ assert _decreases2;
+ assert _decreases3 == null; // error: there is no _decreases3
+ assert _decreases0 == null; // error: type mismatch
+ _decreases2 := false; // error: the field is immutable
+}
+
+iterator Dieter1(c: Cell)
+ requires c != null;
+{
+ assert _decreases0 == c;
+ assert _decreases1; // error: there is no _decreases1
+}
+
+iterator Dieter2()
+{
+ assert _decreases0 == null; // error: there is no _decreases0
+}