File tree Expand file tree Collapse file tree
main/scala/viper/silver/verifier
test/resources/all/issues Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -650,6 +650,14 @@ object reasons {
650650 def withNode (offendingNode : errors.ErrorNode = this .offendingNode) = NegativePermission (offendingNode.asInstanceOf [Exp ])
651651 }
652652
653+ case class NonPositivePermission (offendingNode : Exp ) extends AbstractErrorReason {
654+ val id = " permission.not.positive"
655+
656+ def readableMessage = s " Fraction $offendingNode might not be positive. "
657+
658+ def withNode (offendingNode : errors.ErrorNode = this .offendingNode) = NonPositivePermission (offendingNode.asInstanceOf [Exp ])
659+ }
660+
653661 case class InsufficientPermission (offendingNode : LocationAccess ) extends AbstractErrorReason {
654662 val id = " insufficient.permission"
655663 def readableMessage = s " There might be insufficient permission to access $offendingNode"
Original file line number Diff line number Diff line change 1- // Any copyright is dedicated to the Public Domain.
2- // http://creativecommons.org/publicdomain/zero/1.0/
3-
1+ // Any copyright is dedicated to the Public Domain.
2+ // http://creativecommons.org/publicdomain/zero/1.0/
3+
44field f: Int
55
66predicate P(x: Ref) { acc(x.f) }
77
88method test1(x: Ref) {
99 inhale P(x)
10- //:: ExpectedOutput(unfold.failed:negative. permission)
10+ //:: ExpectedOutput(unfold.failed:permission.not.positive )
1111 unfold acc(P(x), -(1/2))
1212}
1313
@@ -16,7 +16,7 @@ method test2(x: Ref) {
1616 assume p == -(1/2)
1717
1818 inhale P(x)
19- //:: ExpectedOutput(unfold.failed:negative. permission)
19+ //:: ExpectedOutput(unfold.failed:permission.not.positive )
2020 unfold acc(P(x), p)
2121}
2222
Original file line number Diff line number Diff line change 1- // Any copyright is dedicated to the Public Domain.
2- // http://creativecommons.org/publicdomain/zero/1.0/
3-
1+ // Any copyright is dedicated to the Public Domain.
2+ // http://creativecommons.org/publicdomain/zero/1.0/
3+
44field f: Int
55
66predicate token(x: Ref) {
@@ -16,14 +16,14 @@ method t_plus(x: Ref)
1616method t_minus_1(x: Ref)
1717 requires acc(x.f)
1818{
19- //:: ExpectedOutput(fold.failed:negative. permission)
19+ //:: ExpectedOutput(fold.failed:permission.not.positive )
2020 fold acc(token(x), (-1/1))
2121}
2222
2323method t_minus_2(x: Ref)
2424 requires acc(x.f)
2525{
26- //:: ExpectedOutput(fold.failed:negative. permission)
26+ //:: ExpectedOutput(fold.failed:permission.not.positive )
2727 fold acc(token(x), -(1/1))
2828}
2929
Original file line number Diff line number Diff line change 1+ // Any copyright is dedicated to the Public Domain.
2+ // http://creativecommons.org/publicdomain/zero/1.0/
3+
4+
5+ predicate falze()
6+ {
7+ false
8+ }
9+
10+ predicate tru()
11+ {
12+ true
13+ }
14+
15+ method test_unfold(){
16+ //:: ExpectedOutput(unfold.failed:permission.not.positive)
17+ unfold acc(falze(), none)
18+ assert false
19+ }
20+
21+ method test_unfold_unknown(p: Perm){
22+ assume p >= none
23+ //:: ExpectedOutput(unfold.failed:permission.not.positive)
24+ //:: ExpectedOutput(unfold.failed:insufficient.permission)
25+ //:: MissingOutput(unfold.failed:insufficient.permission, /Silicon/issue/34/)
26+ unfold acc(falze(), p)
27+ assert false
28+ }
29+
30+ method test_unfolding(){
31+ //:: ExpectedOutput(assert.failed:permission.not.positive)
32+ assert unfolding acc(falze(), none) in false
33+ }
34+
35+ method test_unfolding_unknown(p: Perm){
36+ assume p >= none
37+ //:: ExpectedOutput(assert.failed:permission.not.positive)
38+ //:: ExpectedOutput(assert.failed:insufficient.permission)
39+ //:: MissingOutput(assert.failed:insufficient.permission, /Silicon/issue/34/)
40+ assert unfolding acc(falze(), p) in false
41+ }
42+
43+ method test_fold(){
44+ //:: ExpectedOutput(fold.failed:permission.not.positive)
45+ fold acc(tru(), none)
46+ }
47+
48+ method test_fold_unknown(p: Perm){
49+ assume p >= none
50+ //:: ExpectedOutput(fold.failed:permission.not.positive)
51+ fold acc(tru(), p)
52+ }
Original file line number Diff line number Diff line change @@ -27,7 +27,7 @@ method test3b(x: Ref, p: Perm) {
2727
2828method test4(x: Ref, p: Perm) {
2929 inhale P(x)
30- //:: ExpectedOutput(unfold.failed:negative. permission)
30+ //:: ExpectedOutput(unfold.failed:permission.not.positive )
3131 //:: ExpectedOutput(unfold.failed:insufficient.permission)
3232 //:: MissingOutput(unfold.failed:insufficient.permission, /Silicon/issue/34/)
3333 unfold acc(P(x), p)
You can’t perform that action at this time.
0 commit comments