diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2023-03-02 12:29:40 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-02 05:29:40 +0100 |
commit | a137e50150cdbc48fcfb02064aa0c064fec4c7e8 (patch) | |
tree | 600d487e4989a715ade7bd15c0e0a3f0a39fe736 /tests/destructor/twasmoved_error.nim | |
parent | 9948fed919389229a48347aa9fa5adce9b7e0a98 (diff) | |
download | Nim-a137e50150cdbc48fcfb02064aa0c064fec4c7e8.tar.gz |
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
Diffstat (limited to 'tests/destructor/twasmoved_error.nim')
-rw-r--r-- | tests/destructor/twasmoved_error.nim | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/destructor/twasmoved_error.nim b/tests/destructor/twasmoved_error.nim new file mode 100644 index 000000000..1cd57e3df --- /dev/null +++ b/tests/destructor/twasmoved_error.nim @@ -0,0 +1,37 @@ +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() |