From 9ccfcf5dd2572c858913cf092a6a571a5e4a8df0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oscar=20Nihlg=C3=A5rd?= Date: Thu, 24 Oct 2019 11:04:04 +0200 Subject: [PATCH] Fix compiler crash caused by top level return (#12501) --- compiler/semexprs.nim | 2 +- tests/misc/t12480.nim | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 tests/misc/t12480.nim diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index ed38f66e11..2e9c5e1f55 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -1724,7 +1724,7 @@ proc semReturn(c: PContext, n: PNode): PNode = result = n checkSonsLen(n, 1, c.config) if c.p.owner.kind in {skConverter, skMethod, skProc, skFunc, skMacro} or - isClosureIterator(c.p.owner.typ): + (not c.p.owner.typ.isNil and isClosureIterator(c.p.owner.typ)): if n.sons[0].kind != nkEmpty: # transform ``return expr`` to ``result = expr; return`` if c.p.resultSym != nil: diff --git a/tests/misc/t12480.nim b/tests/misc/t12480.nim new file mode 100644 index 0000000000..992533ef60 --- /dev/null +++ b/tests/misc/t12480.nim @@ -0,0 +1,5 @@ +discard """ + errormsg: "'return' not allowed here" +""" + +return \ No newline at end of file