Skip to content

Commit

Permalink
fixes #10889
Browse files Browse the repository at this point in the history
  • Loading branch information
Araq committed May 29, 2019
1 parent 950f2d7 commit 8951680
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 14 deletions.
14 changes: 0 additions & 14 deletions compiler/ast.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1753,20 +1753,6 @@ proc toObject*(typ: PType): PType =
if t.kind == tyRef: t.lastSon
else: typ

proc isException*(t: PType): bool =
# check if `y` is object type and it inherits from Exception
assert(t != nil)

if t.kind notin {tyObject, tyGenericInst}:
return false

var base = t
while base != nil and base.kind in {tyRef, tyObject, tyGenericInst}:
if base.sym != nil and base.sym.magic == mException:
return true
base = base.lastSon
return false

proc isImportedException*(t: PType; conf: ConfigRef): bool =
assert t != nil

Expand Down
11 changes: 11 additions & 0 deletions compiler/types.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1559,3 +1559,14 @@ proc isTupleRecursive(t: PType, cycleDetector: var IntSet): bool =
proc isTupleRecursive*(t: PType): bool =
var cycleDetector = initIntSet()
isTupleRecursive(t, cycleDetector)

proc isException*(t: PType): bool =
# check if `y` is object type and it inherits from Exception
assert(t != nil)

var t = t.skipTypes(abstractInst)
while t.kind == tyObject:
if t.sym != nil and t.sym.magic == mException: return true
if t.sons[0] == nil: break
t = skipTypes(t.sons[0], abstractPtrs)
return false

0 comments on commit 8951680

Please sign in to comment.