mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
* allow defects to be caught even for --exceptions:goto (WIP) * implemented the new --panics:on|off switch; refs https://github.com/nim-lang/RFCs/issues/180 * new implementation for integer overflow checking * produce a warning if a user-defined exception type inherits from Exception directly * applied Timothee's suggestions; improved the documentation and replace the term 'checked runtime check' by 'panic' * fixes #13627 * don't inherit from Exception directly
40 lines
887 B
Nim
40 lines
887 B
Nim
discard """
|
|
cmd: "nim $target $options --excessiveStackTrace:off $file"
|
|
output: '''true'''
|
|
"""
|
|
|
|
const expected = """
|
|
tassert_c.nim(35) tassert_c
|
|
tassert_c.nim(34) foo
|
|
assertions.nim(29) failedAssertImpl
|
|
assertions.nim(22) raiseAssert
|
|
fatal.nim(49) sysFatal"""
|
|
|
|
proc tmatch(x, p: string): bool =
|
|
var i = 0
|
|
var k = 0
|
|
while i < p.len:
|
|
if p[i] == '*':
|
|
let oldk = k
|
|
while k < x.len and x[k] in {'0'..'9'}: inc k
|
|
# no digit skipped?
|
|
if oldk == k: return false
|
|
inc i
|
|
elif k < x.len and p[i] == x[k]:
|
|
inc i
|
|
inc k
|
|
else:
|
|
return false
|
|
while k < x.len and x[k] in {' ', '\L', '\C'}: inc k
|
|
result = i >= p.len and k >= x.len
|
|
|
|
|
|
try:
|
|
proc foo() =
|
|
assert(false)
|
|
foo()
|
|
except AssertionError:
|
|
let e = getCurrentException()
|
|
let trace = e.getStackTrace
|
|
echo tmatch(trace, expected)
|