fixes #19795; fixes #11852; fixes #19974; remove parsing pipeline, Nim now parses the whole module at one time (#21379)
* 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
This commit is contained in:
parent
fdd7520257
commit
38f876dd48
31 changed files with 227 additions and 72 deletions
82
tests/overflow/toverflow.nim
Normal file
82
tests/overflow/toverflow.nim
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
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"
|
||||
Loading…
Add table
Add a link
Reference in a new issue