mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
* 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
38 lines
729 B
Nim
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()
|