summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/semexprs.nim3
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim
index ef5315a61..820522f64 100644
--- a/compiler/semexprs.nim
+++ b/compiler/semexprs.nim
@@ -1519,7 +1519,8 @@ proc asgnToResultVar(c: PContext, n, le, ri: PNode) {.inline.} =
   # Special typing rule: do not allow to pass 'owned T' to 'T' in 'result = x':
   if ri.typ != nil and ri.typ.skipTypes(abstractInst).kind == tyOwned and
       le.typ != nil and le.typ.skipTypes(abstractInst).kind != tyOwned:
-    localError(c.config, n.info, "cannot return an owned pointer as an unowned pointer")
+    localError(c.config, n.info, "cannot return an owned pointer as an unowned pointer; " &
+      "use 'owned(" & typeToString(le.typ) & ")' as the return type")
 
 template resultTypeIsInferrable(typ: PType): untyped =
   typ.isMetaType and typ.kind != tyTypeDesc