Added more tests to toverflw
This commit is contained in:
parent
951157a4e9
commit
78cbf6734a
1 changed files with 69 additions and 6 deletions
|
|
@ -1,21 +1,84 @@
|
|||
discard """
|
||||
file: "toverflw.nim"
|
||||
output: "the computation overflowed"
|
||||
output: "ok"
|
||||
cmd: "nim $target -d:release $options $file"
|
||||
|
||||
"""
|
||||
# Tests nim's ability to detect overflows
|
||||
|
||||
{.push overflowChecks: on.}
|
||||
|
||||
var
|
||||
a, b: int
|
||||
a = high(int)
|
||||
b = -2
|
||||
a = high(int)
|
||||
b = -2
|
||||
overflowDetected = false
|
||||
|
||||
try:
|
||||
writeLine(stdout, b - a)
|
||||
except OverflowError:
|
||||
writeLine(stdout, "the computation overflowed")
|
||||
overflowDetected = true
|
||||
|
||||
{.pop.} # overflow check
|
||||
#OUT the computation overflowed
|
||||
|
||||
doAssert(overflowDetected)
|
||||
|
||||
block: # Overflow checks in a proc
|
||||
var
|
||||
a = high(int)
|
||||
b = -2
|
||||
overflowDetected = false
|
||||
|
||||
{.push overflowChecks: on.}
|
||||
proc foo() =
|
||||
let c = b - a
|
||||
{.pop.}
|
||||
|
||||
try:
|
||||
foo()
|
||||
except OverflowError:
|
||||
overflowDetected = true
|
||||
|
||||
doAssert(overflowDetected)
|
||||
|
||||
block: # Overflow checks in a forward declared proc
|
||||
var
|
||||
a = high(int)
|
||||
b = -2
|
||||
overflowDetected = false
|
||||
|
||||
proc foo()
|
||||
|
||||
{.push overflowChecks: on.}
|
||||
proc foo() =
|
||||
let c = b - a
|
||||
{.pop.}
|
||||
|
||||
try:
|
||||
foo()
|
||||
except OverflowError:
|
||||
overflowDetected = true
|
||||
|
||||
doAssert(overflowDetected)
|
||||
|
||||
block: # Overflow checks doesn't affect fwd declaration
|
||||
var
|
||||
a = high(int)
|
||||
b = -2
|
||||
overflowDetected = false
|
||||
|
||||
{.push overflowChecks: on.}
|
||||
proc foo()
|
||||
{.pop.}
|
||||
|
||||
proc foo() =
|
||||
let c = b - a
|
||||
|
||||
try:
|
||||
foo()
|
||||
except OverflowError:
|
||||
overflowDetected = true
|
||||
|
||||
doAssert(not overflowDetected)
|
||||
|
||||
|
||||
echo "ok"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue