mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 01:44:37 +00:00
* fixes #19795; remove parse pipeline * isScript * fixes nimscriptapi * don't touch reorder * check script * fixes tests * it seems implicit imports of system cause troubles * access the first child of `nkStmtList` * ignore comments * minor messages * perhaps increases hloLoopDetector * the module is a stmtList, which changes the errors * fixes nimdoc * fixes tlinter * fixes nim secret tests * fixes arc_misc * fixes nim secret tests again * safe; fixes one more test * GlobalError is the root cause too * fixes parsing errors * put emit types to the cfsForwardTypes section * fixes #11852; `{.push checks:off}` now works in procs * disable navigator * fixes nimdoc * add tests for JS * fixes nimsuggest
83 lines
1.2 KiB
Nim
83 lines
1.2 KiB
Nim
discard """
|
|
output: "ok"
|
|
matrix: "--overflowChecks:off; --overflowChecks:off --b:js"
|
|
"""
|
|
# Tests nim's ability to detect overflows
|
|
|
|
{.push overflowChecks: on.}
|
|
|
|
var
|
|
a = high(int)
|
|
b = -2
|
|
overflowDetected = false
|
|
|
|
try:
|
|
echo(b - a)
|
|
except OverflowDefect:
|
|
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 OverflowDefect:
|
|
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 OverflowDefect:
|
|
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 OverflowDefect:
|
|
overflowDetected = true
|
|
|
|
doAssert(not overflowDetected)
|
|
|
|
|
|
echo "ok"
|