discard """ matrix: "--gc:refc; --gc:arc" """ # bug #16607 type O {.requiresInit.} = object initialized: bool proc `=destroy`(o: var O) = doAssert o.initialized, "O was destroyed before initialization!" proc initO(): O = O(initialized: true) proc pair(): tuple[a, b: O] = result = (a: initO(), b: initO()) proc main() = discard pair() main()