1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
discard """
targets: "c cpp"
output: '''Check passed
Check passed'''
"""
# bug #5628
proc checkException(ex: ref Exception) =
doAssert(ex.name == cstring"ValueError")
doAssert(ex.msg == "SecondException")
doAssert(ex.parent != nil)
doAssert(ex.parent.name == cstring"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
|