diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2015-10-15 23:51:05 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2015-10-15 23:51:05 +0200 |
commit | 2f276f8559f103a8c4ea989822226d6dfe7530ea (patch) | |
tree | 2f0684b26509ba451f367ea31ca41e17db38845c /lib/system | |
parent | c97cbe7abd85d134e95ad1a7044fc314c60e5bed (diff) | |
parent | e7918fe6e545a424ea635d7c7a243a9394669c8f (diff) | |
download | Nim-2f276f8559f103a8c4ea989822226d6dfe7530ea.tar.gz |
Merge pull request #3451 from yglukhov/js-ret-by-var
JS: Fixed return by var. More fixes to copying.
Diffstat (limited to 'lib/system')
-rw-r--r-- | lib/system/jssys.nim | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim index eb6080d38..5bcddc5e6 100644 --- a/lib/system/jssys.nim +++ b/lib/system/jssys.nim @@ -532,7 +532,7 @@ proc nimMax(a, b: int): int {.compilerproc.} = return if a >= b: a else: b type NimString = string # hack for hti.nim include "system/hti" -type JSRef = int # Fake type. +type JSRef = ref RootObj # Fake type. proc isFatPointer(ti: PNimType): bool = # This has to be consistent with the code generator! @@ -569,8 +569,14 @@ proc nimCopy(dest, src: JSRef, ti: PNimType): JSRef = asm "`result` = [`src`[0], `src`[1]];" of tySet: asm """ - `result` = {}; - for (var key in `src`) { `result`[key] = `src`[key]; } + if (`dest` === null || `dest` === undefined) { + `dest` = {}; + } + else { + for (var key in `dest`) { delete `dest`[key]; } + } + for (var key in `src`) { `dest`[key] = `src`[key]; } + `result` = `dest`; """ of tyTuple, tyObject: if ti.base != nil: result = nimCopy(dest, src, ti.base) |