summaryrefslogtreecommitdiff
path: root/Test/dafny0/RefinementErrors.dfy
diff options
context:
space:
mode:
authorGravatar Rustan Leino <leino@microsoft.com>2012-01-09 23:16:37 -0800
committerGravatar Rustan Leino <leino@microsoft.com>2012-01-09 23:16:37 -0800
commitc7b6946ca6368f6ec307802b82b4e44a6cab83cd (patch)
treef87588b73461fb5281302ef8b0f67e433c1b4017 /Test/dafny0/RefinementErrors.dfy
parent4ccc3c70255b59a835b099e962ba1d011696a682 (diff)
Dafny: added support for simple superposition refinements
Diffstat (limited to 'Test/dafny0/RefinementErrors.dfy')
-rw-r--r--Test/dafny0/RefinementErrors.dfy65
1 files changed, 13 insertions, 52 deletions
diff --git a/Test/dafny0/RefinementErrors.dfy b/Test/dafny0/RefinementErrors.dfy
index de8694b3..b10c035e 100644
--- a/Test/dafny0/RefinementErrors.dfy
+++ b/Test/dafny0/RefinementErrors.dfy
@@ -1,57 +1,18 @@
-class A refines C {
-}
-
-class B refines A {
-}
-
-class C refines B {
-}
-
-
-class D {
- refines M()
- {
- }
-}
-
-class E {
- var x: int;
-
- method M()
- {
- x := 0;
- }
-}
-
-class F {
- replaces M by x == y;
-}
-
-class G refines E {
- var y: int;
- replaces x by x == y;
-
- refines M() returns (i: int)
- {
+module A {
+ class C {
+ method M(y: int) returns (x: int)
+ {
+ x := 6;
+ }
}
}
-class H refines E {
- var x: int;
-
- method M()
- {
+module B refines A {
+ class C {
+ var k: int;
+ method M(y: int) returns (x: int)
+ requires 0 <= y; // error: cannot add a precondition
+ modifies this; // error: cannot add a modifies clause
+ ensures 0 <= x; // fine
}
}
-
-class J refines E {
- var y: int;
- replaces x by x == y;
-
- refines M()
- {
- y := 1;
- }
-}
-
-