destructors now work with overloaded assignment operators; fixes #2811; fixes #1632

This commit is contained in:
Araq 2015-08-05 21:27:53 +02:00
commit 0d8942d45e
7 changed files with 175 additions and 15 deletions

View file

@ -0,0 +1,20 @@
type
TDict[TK, TV] = object
k: TK
v: TV
PDict[TK, TV] = ref TDict[TK, TV]
proc fakeNew[T](x: var ref T, destroy: proc (a: ref T) {.nimcall.}) =
discard
proc destroyDict[TK, TV](a: PDict[TK, TV]) =
return
proc newDict[TK, TV](a: TK, b: TV): PDict[TK, TV] =
fakeNew(result, destroyDict[TK, TV])
# Problem: destroyDict is not instantiated when newDict is instantiated!
discard newDict("a", "b")