diff options
author | Fanael Linithien <fanael4@gmail.com> | 2020-11-12 09:28:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-12 09:28:32 +0100 |
commit | 7d4f70280ef33192dc5862f8b4c4d23e9d956b40 (patch) | |
tree | a0fd7459e3c74170f149854be61d9ca175aeb7a8 | |
parent | e5db5316c2101a27efd744ba10126fdb57a7eb7c (diff) | |
download | Nim-7d4f70280ef33192dc5862f8b4c4d23e9d956b40.tar.gz |
Fix #15909 (#15914)
-rw-r--r-- | compiler/varpartitions.nim | 1 | ||||
-rw-r--r-- | tests/arc/t15909.nim | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/compiler/varpartitions.nim b/compiler/varpartitions.nim index 2e781c041..63c18d94a 100644 --- a/compiler/varpartitions.nim +++ b/compiler/varpartitions.nim @@ -399,6 +399,7 @@ proc allRoots(n: PNode; result: var seq[PSym]; followDotExpr = true) = proc destMightOwn(c: var Partitions; dest: var VarIndex; n: PNode) = ## Analyse if 'n' is an expression that owns the data, if so mark 'dest' ## with 'ownsData'. + if n.typ == nil: return case n.kind of nkEmpty, nkCharLit..nkNilLit: # primitive literals including the empty are harmless: diff --git a/tests/arc/t15909.nim b/tests/arc/t15909.nim new file mode 100644 index 000000000..f25c89daf --- /dev/null +++ b/tests/arc/t15909.nim @@ -0,0 +1,16 @@ +discard """ + action: run + cmd: "nim c --gc:arc $file" +""" + +proc f1() {.noreturn.} = raise newException(CatchableError, "") + +proc f2(y: int): int = + if y != 0: + y + else: + f1() + +doAssert f2(5) == 5 +doAssertRaises(CatchableError): + discard f2(0) |