summaryrefslogtreecommitdiff
path: root/Test/dafny0/RefinementModificationChecking.dfy
blob: e4bd4605e4e2c399517b6dab486aee64c34bfc24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

abstract module R1 {
  var f: int;
  method m(y: set<int>) returns (r: int)
    modifies this;
  {
    var t := y;
  }
}

abstract module R2 refines R1 {
  var g: nat;
  method m ...
  {
    ...;
    var x := 3;
    t := {1}; // error: previous local
    r := 3; // error: out parameter
    f := 4; // fine: all fields, will cause re-verification
    x := 6; // fine: new local
    g := 34;// fine: new field
  }
}