diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2018-06-16 01:59:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-16 01:59:06 +0200 |
commit | ee16e6206167a0cdaca43369371eeb3fb8300e88 (patch) | |
tree | 2879591a5ec17ed6df1f1dcd5cd8037e6338e4af /tests | |
parent | 97398edc05af108968b861ad39d4c7f9d7ba37ad (diff) | |
parent | 78cbf6734a2bb0514703232e623fac344f4b7b74 (diff) | |
download | Nim-ee16e6206167a0cdaca43369371eeb3fb8300e88.tar.gz |
Merge pull request #8039 from yglukhov/proc-pragmas
Fixed stacktrace/linetrace proc pragmas when appended by macro pragma
Diffstat (limited to 'tests')
-rw-r--r-- | tests/overflw/toverflw.nim | 75 |
1 files changed, 69 insertions, 6 deletions
diff --git a/tests/overflw/toverflw.nim b/tests/overflw/toverflw.nim index 771a43303..20bc56a53 100644 --- a/tests/overflw/toverflw.nim +++ b/tests/overflw/toverflw.nim @@ -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" |