Files
Nim/tests/destructor/twasmoved_error.nim
ringabout a137e50150 fixes #19291; implements wasMoved hook (#21303)
* fixes #19291; implements `wasMoved` hook

* basics

* checkpoint

* finish `wasMoved`

* add a test for #19291

* add documentation and changelog

* work `attachedWasMoved` with generics

* fixes optimizer

* register `=wasMoved`

* handle wasMoved magcis

* check another round

* some patches

* try `op == nil`

* nicer

* generate `wasMoved` before `destroy`

* try again

* fixes tests

* default wasMoved

* Update tests/destructor/tv2_cast.nim

* Update tests/destructor/tv2_cast.nim

* Update tests/arc/topt_refcursors.nim
2023-03-02 05:29:40 +01:00

38 lines
729 B
Nim

discard """
cmd: '''nim c --mm:arc $file'''
errormsg: "'=wasMoved' is not available for type <Game>; routine: main"
"""
# bug #19291
const
screenWidth = 800
screenHeight = 450
var
ready = false
type
Game = object
proc `=destroy`(x: var Game) =
assert ready, "Window is already opened"
ready = false
proc `=sink`(x: var Game; y: Game) {.error.}
proc `=copy`(x: var Game; y: Game) {.error.}
proc `=wasMoved`(x: var Game) {.error.}
proc initGame(width, height: int32, title: string): Game =
assert not ready, "Window is already closed"
ready = true
proc update(x: Game) = discard
proc main =
var g = initGame(screenWidth, screenHeight, "Tetris raylib")
g.update()
var g2 = g
echo "hello"
main()