summaryrefslogtreecommitdiff
path: root/test/prove.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/prove.go')
-rw-r--r--test/prove.go25
1 files changed, 23 insertions, 2 deletions
diff --git a/test/prove.go b/test/prove.go
index 2f4fa5d308..13e18cd728 100644
--- a/test/prove.go
+++ b/test/prove.go
@@ -479,12 +479,33 @@ func sm1(b []int, x int) {
// Test constant argument to slicemask.
useSlice(b[2:8]) // ERROR "Proved slicemask not needed$"
// Test non-constant argument with known limits.
- // Right now prove only uses the unsigned limit.
- if uint(cap(b)) > 10 {
+ if cap(b) > 10 {
useSlice(b[2:]) // ERROR "Proved slicemask not needed$"
}
}
+func lim1(x, y, z int) {
+ // Test relations between signed and unsigned limits.
+ if x > 5 {
+ if uint(x) > 5 { // ERROR "Proved Greater64U$"
+ return
+ }
+ }
+ if y >= 0 && y < 4 {
+ if uint(y) > 4 { // ERROR "Disproved Greater64U$"
+ return
+ }
+ if uint(y) < 5 { // ERROR "Proved Less64U$"
+ return
+ }
+ }
+ if z < 4 {
+ if uint(z) > 4 { // Not provable without disjunctions.
+ return
+ }
+ }
+}
+
//go:noinline
func useInt(a int) {
}