From 0109817be99f851dd8ee79d310c5c2af4004155a Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Mon, 6 Jan 2025 17:02:40 -0700 Subject: [PATCH 1/3] report error to user --- compiler/injectdestructors.nim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim index 013ab1c50600f..f9a7e1584e805 100644 --- a/compiler/injectdestructors.nim +++ b/compiler/injectdestructors.nim @@ -485,7 +485,8 @@ proc passCopyToSink(n: PNode; c: var Con; s: var Scope): PNode = ("cannot move '$1', passing '$1' to a sink parameter introduces an implicit copy") % $n) else: if c.graph.config.selectedGC in {gcArc, gcOrc, gcAtomicArc}: - assert(not containsManagedMemory(nTyp)) + localError(c.graph.config, n.info, errInternal, + "type contains managed memory: '$1' for '$2' " % [$nTyp, $n] ) if nTyp.skipTypes(abstractInst).kind in {tyOpenArray, tyVarargs}: localError(c.graph.config, n.info, "cannot create an implicit openArray copy to be passed to a sink parameter") result.add newTree(nkAsgn, tmp, p(n, c, s, normal)) From 5b63c81dc22c8b22a5c852750c3d9cb8c9fafc7d Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Mon, 6 Jan 2025 17:03:03 -0700 Subject: [PATCH 2/3] report error to user --- compiler/injectdestructors.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim index f9a7e1584e805..2958606131b36 100644 --- a/compiler/injectdestructors.nim +++ b/compiler/injectdestructors.nim @@ -486,7 +486,7 @@ proc passCopyToSink(n: PNode; c: var Con; s: var Scope): PNode = else: if c.graph.config.selectedGC in {gcArc, gcOrc, gcAtomicArc}: localError(c.graph.config, n.info, errInternal, - "type contains managed memory: '$1' for '$2' " % [$nTyp, $n] ) + "type contains managed memory: '$1' for '$2' " % [$nTyp, $n] ) if nTyp.skipTypes(abstractInst).kind in {tyOpenArray, tyVarargs}: localError(c.graph.config, n.info, "cannot create an implicit openArray copy to be passed to a sink parameter") result.add newTree(nkAsgn, tmp, p(n, c, s, normal)) From f6df680690d39ef3a8e2cb3f8c3ab1d8ff37302d Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Mon, 6 Jan 2025 17:33:37 -0700 Subject: [PATCH 3/3] fix copy and paste, forget if --- compiler/injectdestructors.nim | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim index 2958606131b36..6570483a941ef 100644 --- a/compiler/injectdestructors.nim +++ b/compiler/injectdestructors.nim @@ -485,8 +485,9 @@ proc passCopyToSink(n: PNode; c: var Con; s: var Scope): PNode = ("cannot move '$1', passing '$1' to a sink parameter introduces an implicit copy") % $n) else: if c.graph.config.selectedGC in {gcArc, gcOrc, gcAtomicArc}: - localError(c.graph.config, n.info, errInternal, - "type contains managed memory: '$1' for '$2' " % [$nTyp, $n] ) + if containsManagedMemory(nTyp): + localError(c.graph.config, n.info, errInternal, + "type contains managed memory: '$1' for '$2' " % [$nTyp, $n] ) if nTyp.skipTypes(abstractInst).kind in {tyOpenArray, tyVarargs}: localError(c.graph.config, n.info, "cannot create an implicit openArray copy to be passed to a sink parameter") result.add newTree(nkAsgn, tmp, p(n, c, s, normal))