summary refs log tree commit diff stats
path: root/tests/destructor
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2019-04-22 08:05:16 +0200
committerAraq <rumpf_a@web.de>2019-04-22 08:05:16 +0200
commit665fcb12dd0eef8637fb573b92a791021ba34740 (patch)
tree985a60fb57627589f7d99dbf0d2a1da833a89508 /tests/destructor
parentfabc2a7086bb83afc2abfd6d5841f25c8387609f (diff)
downloadNim-665fcb12dd0eef8637fb573b92a791021ba34740.tar.gz
fixes #11073
Diffstat (limited to 'tests/destructor')
-rw-r--r--tests/destructor/tdont_return_unowned_from_owned.nim35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/destructor/tdont_return_unowned_from_owned.nim b/tests/destructor/tdont_return_unowned_from_owned.nim
new file mode 100644
index 000000000..490134ee9
--- /dev/null
+++ b/tests/destructor/tdont_return_unowned_from_owned.nim
@@ -0,0 +1,35 @@
+discard """
+  cmd: "nim check --newruntime --hints:off $file"
+  nimout: '''tdont_return_unowned_from_owned.nim(24, 10) Error: cannot return an owned pointer as an unowned pointer; use 'owned(Obj)' as the return type
+tdont_return_unowned_from_owned.nim(27, 10) Error: cannot return an owned pointer as an unowned pointer; use 'owned(Obj)' as the return type
+tdont_return_unowned_from_owned.nim(30, 6) Error: type mismatch: got <Obj>
+but expected one of:
+proc new[T](a: var ref T; finalizer: proc (x: ref T) {.nimcall.})
+2 other mismatching symbols have been suppressed; compile with --showAllMismatches:on to see them
+
+expression: new(result)
+tdont_return_unowned_from_owned.nim(30, 6) Error: illformed AST:
+'''
+  errormsg: "illformed AST:"
+  line: 30
+"""
+
+
+
+# bug #11073
+type
+  Obj = ref object
+
+proc newObjA(): Obj =
+  result = new Obj
+
+proc newObjB(): Obj =
+  result = Obj()
+
+proc newObjC(): Obj =
+  new(result)
+
+let a = newObjA()
+let b = newObjB()
+let c = newObjC()
+