From 4d15d918ef5d2c0380f7e2c60ba2244e770ebadd Mon Sep 17 00:00:00 2001 From: metagn Date: Tue, 24 Mar 2026 10:27:28 +0300 Subject: [PATCH] fix `@` for openarray on nimscript [backport:2.2] (#25641) Even on nimscript, the `else` branch of the `when nimvm` below compiles and gives an "undeclared identifier: copyMem" error. Regression since #25064. (cherry picked from commit 6f85d348f41fc380d22d1701aaabd6da1df129be) --- lib/system.nim | 2 +- tests/test_nimscript.nims | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/system.nim b/lib/system.nim index 3829e60627..e7cc426c0b 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1471,7 +1471,7 @@ when defined(nimHasTopDownInference): ## This is not as efficient as turning a fixed length array into a sequence ## as it always copies every element of `a`. let sz = a.len - when supportsCopyMem(T) and not defined(js): + when supportsCopyMem(T) and not defined(js) and not defined(nimscript): result = newSeqUninit[T](sz) when nimvm: for i in 0..sz-1: result[i] = a[i] diff --git a/tests/test_nimscript.nims b/tests/test_nimscript.nims index 15e9d878d8..02572cb5ac 100644 --- a/tests/test_nimscript.nims +++ b/tests/test_nimscript.nims @@ -143,3 +143,7 @@ proc discardableCall(cmd: string): int {.discardable.} = result = 123 discardableCall "echo hi" + +block: + let a = "abc" + doAssert @a == @['a', 'b', 'c']