Fixes #8719 (onFailedAssert now works for doAssert) (#8731)

This commit is contained in:
awr1
2018-08-23 03:20:58 -05:00
committed by Andreas Rumpf
parent 52bee6baba
commit bf973d29da
2 changed files with 19 additions and 8 deletions

View File

@@ -3741,23 +3741,23 @@ template assert*(cond: bool, msg = "") =
## The compiler may not generate any code at all for ``assert`` if it is
## advised to do so through the ``-d:release`` or ``--assertions:off``
## `command line switches <nimc.html#command-line-switches>`_.
# NOTE: `true` is correct here; --excessiveStackTrace:on will control whether
# or not to output full paths.
bind instantiationInfo
mixin failedAssertImpl
when compileOption("assertions"):
{.line.}:
{.line: instantiationInfo(fullPaths = true).}:
when compileOption("assertions"):
if not cond: failedAssertImpl(astToStr(cond) & ' ' & msg)
template doAssert*(cond: bool, msg = "") =
## same as `assert` but is always turned on and not affected by the
## ``--assertions`` command line switch.
bind instantiationInfo
# NOTE: `true` is correct here; --excessiveStackTrace:on will control whether
# or not to output full paths.
{.line: instantiationInfo(-1, true).}:
if not cond:
raiseAssert(astToStr(cond) & ' ' &
instantiationInfo(-1, false).fileName & '(' &
$instantiationInfo(-1, false).line & ") " & msg)
bind instantiationInfo
mixin failedAssertImpl
{.line: instantiationInfo(fullPaths = true).}:
if not cond: failedAssertImpl(astToStr(cond) & ' ' & msg)
iterator items*[T](a: seq[T]): T {.inline.} =
## iterates over each item of `a`.

View File

@@ -0,0 +1,11 @@
discard """
cmd: "nim $target -d:release $options $file"
output: '''
assertion occured!!!!!! false
'''
"""
onFailedAssert(msg):
echo("assertion occured!!!!!! ", msg)
doAssert(1 == 2)