* make fullpaths the default in error messages and stack traces for more convenient development * split up -d:release into -d:release and -d:danger flags * workaround a Nim config parser bug * fixes an old nim config parser bug * make megatest green again * make nimpretty tests work again * make nimsuggest green
82 lines
1.2 KiB
Nim
82 lines
1.2 KiB
Nim
discard """
|
|
output: "ok"
|
|
cmd: "nim $target --overflowChecks:off $options $file"
|
|
"""
|
|
# Tests nim's ability to detect overflows
|
|
|
|
{.push overflowChecks: on.}
|
|
|
|
var
|
|
a = high(int)
|
|
b = -2
|
|
overflowDetected = false
|
|
|
|
try:
|
|
writeLine(stdout, b - a)
|
|
except OverflowError:
|
|
overflowDetected = true
|
|
|
|
{.pop.} # overflow check
|
|
|
|
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"
|