diff options
Diffstat (limited to 'test/prove.go')
-rw-r--r-- | test/prove.go | 25 |
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) { } |