Skip to content

Commit ddee205

Browse files
authored
Merge pull request #781 from viperproject/meilers_update_tests
Adding and updating tests for recently fixed issues
2 parents e376940 + bc03c37 commit ddee205

3 files changed

Lines changed: 46 additions & 6 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Any copyright is dedicated to the Public Domain.
2+
// http://creativecommons.org/publicdomain/zero/1.0/
3+
4+
//:: IgnoreFile(/carbon/issue/428/)
5+
6+
field f: Int
7+
8+
method m(xs: Set[Ref], ys: Set[Ref])
9+
{
10+
inhale forall r: Ref :: r in xs ==> acc(r.f, r in ys ? 1/2 : none)
11+
12+
package true --* true {
13+
assert forall r: Ref :: r in xs ==> acc(r.f, r in ys ? 1/2 : none)
14+
}
15+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Any copyright is dedicated to the Public Domain.
2+
// http://creativecommons.org/publicdomain/zero/1.0/
3+
4+
5+
method keydict___init__() returns (self: Ref)
6+
ensures forall key: Ref :: {keydict___item__(self, key)} acc(keydict___item__(self, key).keydict_val) && !keydict___contains__(self, key)
7+
8+
function keydict___item__(self: Ref, key: Ref): Ref
9+
ensures keydict___item__inv(self, result) == key
10+
11+
function keydict___item__inv(self: Ref, val_ref: Ref): Ref
12+
13+
field keydict_val: Option[Ref]
14+
15+
16+
function keydict___contains__(self: Ref, key: Ref) : Bool
17+
requires acc(keydict___item__(self, key).keydict_val, wildcard)
18+
ensures result == keydict___item__(self, key).keydict_val.isSome
19+
20+
21+
22+
adt Option[T] {
23+
Some(value:T)
24+
None()
25+
}

src/test/resources/all/sequences/sequence_incompletenesses.vpr

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ method colourings1(a: Array)
9494
invariant 0 <= i && i <= |slot(a,n-1).val|
9595
invariant acc(slot(a,n).val)
9696
invariant |slot(a,n).val| == i
97-
invariant forall j:Int :: 0 <= j && j < |slot(a,n-1).val| ==>
98-
valid(slot(a,n-1).val[j],n-1,true)
97+
invariant forall j:Int, n1: Int :: { slot(a,n1).val[j] } n1 == n - 1 && 0 <= j && j < |slot(a,n-1).val| ==>
98+
valid(slot(a,n1).val[j],n - 1,true)
9999
invariant forall j : Int :: {slot(a,n).val[j]} 0 <= j && j < i ==> valid(slot(a,n).val[j],n,true)
100100
{
101101
var oldSoln : Seq[Int] := slot(a,n-1).val[i]
@@ -165,8 +165,8 @@ method colourings2(a: Array)
165165
invariant 0 <= i && i <= |slot(a,n-1).val|
166166
invariant acc(slot(a,n).val)
167167
invariant |slot(a,n).val| == i
168-
invariant forall j:Int :: 0 <= j && j < |slot(a,n-1).val| ==>
169-
valid(slot(a,n-1).val[j],n-1,true)
168+
invariant forall j:Int, n1: Int :: { slot(a,n1).val[j] } n1 == n - 1 && 0 <= j && j < |slot(a,n-1).val| ==>
169+
valid(slot(a,n1).val[j],n-1,true)
170170
invariant forall j : Int :: {slot(a,n).val[j]} 0 <= j && j < i ==> valid(slot(a,n).val[j],n,true)
171171
{
172172
var oldSoln : Seq[Int] := slot(a,n-1).val[i]
@@ -234,8 +234,8 @@ method colourings(a: Array)
234234
invariant 0 <= i && i <= |slot(a,n-1).val|
235235
invariant acc(slot(a,n).val)
236236
invariant |slot(a,n).val| == i
237-
invariant forall j:Int :: 0 <= j && j < |slot(a,n-1).val| ==>
238-
valid(slot(a,n-1).val[j],n-1,true)
237+
invariant forall j:Int, n1: Int :: { slot(a,n1).val[j] } n1 == n - 1 && 0 <= j && j < |slot(a,n-1).val| ==>
238+
valid(slot(a,n1).val[j],n-1,true)
239239
invariant forall j : Int :: {slot(a,n).val[j]} 0 <= j && j < i ==> valid(slot(a,n).val[j],n,true)
240240
{
241241
var oldSoln : Seq[Int] := slot(a,n-1).val[i]

0 commit comments

Comments
 (0)