summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/system/jssys.nim14
1 files changed, 5 insertions, 9 deletions
diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim
index a6839c48e..eb6080d38 100644
--- a/lib/system/jssys.nim
+++ b/lib/system/jssys.nim
@@ -547,18 +547,14 @@ proc nimCopyAux(dest, src: JSRef, n: ptr TNimNode) {.compilerproc.} =
   of nkNone: sysAssert(false, "nimCopyAux")
   of nkSlot:
     asm """
-      var ddest = `dest`[`n`.offset];
-      if (ddest === undefined) ddest = null;
-      `dest`[`n`.offset] = nimCopy(ddest, `src`[`n`.offset], `n`.typ);
+      `dest`[`n`.offset] = nimCopy(`dest`[`n`.offset], `src`[`n`.offset], `n`.typ);
     """
   of nkList:
     for i in 0..n.len-1:
       nimCopyAux(dest, src, n.sons[i])
   of nkCase:
     asm """
-      var ddest = `dest`[`n`.offset];
-      if (ddest === undefined) ddest = null;
-      `dest`[`n`.offset] = nimCopy(ddest, `src`[`n`.offset], `n`.typ);
+      `dest`[`n`.offset] = nimCopy(`dest`[`n`.offset], `src`[`n`.offset], `n`.typ);
       for (var i = 0; i < `n`.sons.length; ++i) {
         nimCopyAux(`dest`, `src`, `n`.sons[i][1]);
       }
@@ -579,13 +575,13 @@ proc nimCopy(dest, src: JSRef, ti: PNimType): JSRef =
   of tyTuple, tyObject:
     if ti.base != nil: result = nimCopy(dest, src, ti.base)
     elif ti.kind == tyObject:
-      asm "`result` = (`dest` === null) ? {m_type: `ti`} : `dest`;"
+      asm "`result` = (`dest` === null || `dest` === undefined) ? {m_type: `ti`} : `dest`;"
     else:
-      asm "`result` = (`dest` === null) ? {} : `dest`;"
+      asm "`result` = (`dest` === null || `dest` === undefined) ? {} : `dest`;"
     nimCopyAux(result, src, ti.node)
   of tySequence, tyArrayConstr, tyOpenArray, tyArray:
     asm """
-      if (`dest` === null) {
+      if (`dest` === null || `dest` === undefined) {
         `dest` = new Array(`src`.length);
       }
       else {