diff --git a/compiler/semmagic.nim b/compiler/semmagic.nim index 4bca7bbb58..14e2f019ef 100644 --- a/compiler/semmagic.nim +++ b/compiler/semmagic.nim @@ -606,6 +606,7 @@ proc semMove(c: PContext; n: PNode): PNode = ensureMutable callee callee.magic = mNone setOwner(callee, c.module) + analyseIfAddressTakenInCall(c, result, false) proc magicsAfterOverloadResolution(c: PContext, n: PNode, flags: TExprFlags; expectedType: PType = nil): PNode = diff --git a/tests/destructor/twasmoved.nim b/tests/destructor/twasmoved.nim index 5663227022..be8df993f0 100644 --- a/tests/destructor/twasmoved.nim +++ b/tests/destructor/twasmoved.nim @@ -12,3 +12,34 @@ proc foo = doAssert m.id == 999 foo() + +block: + type Foo = object + a,b,c: int + + var dest: Foo + + # proc `=wasMoved`(x: var Foo) = + # debugEcho "wasMoved called" + + proc main() = + var x = Foo(a:11, b:12, c:13) + dest = move(x) + + main() + +block: + type Foo = object + a,b,c: int + + var dest: Foo + + proc `=wasMoved`(x: var Foo) = + discard "wasMoved called" + + proc main() = + var x = Foo(a:11, b:12, c:13) + dest = move(x) + + main() +