diff options
-rw-r--r-- | compiler/semexprs.nim | 7 | ||||
-rw-r--r-- | tests/types/tauto_canbe_void.nim | 9 |
2 files changed, 15 insertions, 1 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 55d2656e0..dc02f6e06 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -1337,7 +1337,12 @@ proc semProcBody(c: PContext, n: PNode): PNode = if c.p.owner.kind notin {skMacro, skTemplate} and c.p.resultSym != nil and c.p.resultSym.typ.isMetaType: - localError(c.p.resultSym.info, errCannotInferReturnType) + if isEmptyType(result.typ): + # we inferred a 'void' return type: + c.p.resultSym.typ = nil + c.p.owner.typ.sons[0] = nil + else: + localError(c.p.resultSym.info, errCannotInferReturnType) closeScope(c) diff --git a/tests/types/tauto_canbe_void.nim b/tests/types/tauto_canbe_void.nim new file mode 100644 index 000000000..60e83c510 --- /dev/null +++ b/tests/types/tauto_canbe_void.nim @@ -0,0 +1,9 @@ + +import future + +template tempo(s: expr) = + s("arg") + +tempo((s: string)->auto => echo(s)) +tempo((s: string) => echo(s)) + |