From 39a8ab469a8596a413d75d85e3ed7587783b353d Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Fri, 21 Dec 2018 23:45:20 +0200 Subject: [PATCH] Fixed insert for nil seq in js (#10068) --- lib/system.nim | 2 +- tests/js/test1.nim | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/system.nim b/lib/system.nim index e998ffee0a..06aa253115 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1692,7 +1692,7 @@ proc insert*[T](x: var seq[T], item: T, i = 0.Natural) {.noSideEffect.} = else: when defined(js): var it : T - {.emit: "`x`.splice(`i`, 0, `it`);".} + {.emit: "`x` = `x` || []; `x`.splice(`i`, 0, `it`);".} else: defaultImpl() x[i] = item diff --git a/tests/js/test1.nim b/tests/js/test1.nim index 7f1d346f08..73e7a37ed2 100644 --- a/tests/js/test1.nim +++ b/tests/js/test1.nim @@ -20,3 +20,35 @@ proc onButtonClick(inputElement: string) {.exportc.} = onButtonClick(inputElement) +block: + var s: string + s.add("hi") + doAssert(s == "hi") + +block: + var s: string + s.insert("hi", 0) + doAssert(s == "hi") + +block: + var s: string + s.setLen(2) + s[0] = 'h' + s[1] = 'i' + doAssert(s == "hi") + +block: + var s: seq[int] + s.setLen(2) + doAssert(s == @[0, 0]) + +block: + var s: seq[int] + s.insert(2, 0) + doAssert(s == @[2]) + +block: + var s: seq[int] + s.add(2) + doAssert(s == @[2]) +