This commit is contained in:
Araq
2017-03-30 12:53:32 +02:00
parent 2740bcddaa
commit 30c99a8440
2 changed files with 32 additions and 2 deletions

View File

@@ -73,7 +73,8 @@ proc popSafePoint {.compilerRtl, inl.} =
excHandler = excHandler.prev
proc pushCurrentException(e: ref Exception) {.compilerRtl, inl.} =
e.parent = currException
#if e.parent.isNil:
# e.parent = currException
currException = e
proc popCurrentException {.compilerRtl, inl.} =
@@ -279,7 +280,7 @@ proc raiseExceptionAux(e: ref Exception) =
quitOrDebug()
proc raiseException(e: ref Exception, ename: cstring) {.compilerRtl.} =
e.name = ename
if e.name.isNil: e.name = ename
when hasSomeStackTrace:
e.trace = ""
rawWriteStackTrace(e.trace)

View File

@@ -0,0 +1,29 @@
discard """
output: '''Check passed
Check passed'''
"""
# bug #5628
proc checkException(ex: ref Exception) =
doAssert(ex.name == "ValueError")
doAssert(ex.msg == "SecondException")
doAssert(ex.parent != nil)
doAssert(ex.parent.name == "KeyError")
doAssert(ex.parent.msg == "FirstException")
echo "Check passed"
var e: ref Exception
try:
try:
raise newException(KeyError, "FirstException")
except:
raise newException(ValueError, "SecondException", getCurrentException())
except:
e = getCurrentException()
try:
checkException(e) # passes here
raise e
except ValueError:
checkException(getCurrentException()) # fails here