diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 0708607c96..2cf187e687 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -2842,9 +2842,6 @@ proc genMove(p: BProc; n: PNode; d: var TLoc) = var op = getAttachedOp(p.module.g.graph, n.typ, attachedWasMoved) if op == nil: resetLoc(p, a) - elif sfOverridden in op.flags: - internalError(p.config, n.info, - "overridden =wasMoved should be emitted by instantiated move") else: var b = initLocExpr(p, newSymNode(op)) case skipTypes(a.t, abstractVar+{tyStatic}).kind diff --git a/tests/destructor/twasmoved.nim b/tests/destructor/twasmoved.nim index be8df993f0..f9a0ad363a 100644 --- a/tests/destructor/twasmoved.nim +++ b/tests/destructor/twasmoved.nim @@ -43,3 +43,20 @@ block: main() + +import std/threadpool + +block: + type Foo = object + data: string + + proc `=wasMoved`(x: var Foo) = + discard + + proc work(x: Foo) = + discard + + var x = Foo(data: "hello") + spawn work(x) + sync() +