diff --git a/tests/arc/tarc_orc.nim b/tests/arc/tarc_orc.nim index 790511314c..08b56489af 100644 --- a/tests/arc/tarc_orc.nim +++ b/tests/arc/tarc_orc.nim @@ -186,3 +186,27 @@ block: # bug #24147 let oo = OO(val: "hello world") var ooCopy : OO `=copy`(ooCopy, oo) + +block: # bug #22305 + type + SharedPtr[T] = object + p: ptr T + + proc `=destroy`[T](self: SharedPtr[T]) = + discard + + type + SomethingObj[T] = object + Something[T] = SharedPtr[SomethingObj[T]] + + proc useSomething() = + # discard Something[int]() # When you uncomment this line, it will compile successfully. + discard Something[float]() + + proc fn() = + let thing = Something[int]() + proc closure() = + discard thing + closure() + + fn()