From 81533a0014a8372207426dc9d067aff4b59db8af Mon Sep 17 00:00:00 2001 From: hlaaftana <10591326+hlaaftana@users.noreply.github.com> Date: Thu, 11 Feb 2021 19:04:32 +0300 Subject: [backport:1.4] JS cstring null fixes (#16979) * [backport:1.4] JS cstring null fixes * fix JS move string * make it look cleaner --- lib/system.nim | 18 ++++++++++++++++-- lib/system/jssys.nim | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/system.nim b/lib/system.nim index 82b8a6586..09a7faca9 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2029,8 +2029,14 @@ type when NimStackTraceMsgs: frameMsgLen*: int ## end position in frameMsgBuf for this frame. -when defined(js): +when defined(js) or defined(nimdoc): proc add*(x: var string, y: cstring) {.asmNoStackFrame.} = + ## Appends `y` to `x` in place. + runnableExamples: + var tmp = "" + tmp.add(cstring("ab")) + tmp.add(cstring("cd")) + doAssert tmp == "abcd" asm """ if (`x` === null) { `x` = []; } var off = `x`.length; @@ -2039,7 +2045,15 @@ when defined(js): `x`[off+i] = `y`.charCodeAt(i); } """ - proc add*(x: var cstring, y: cstring) {.magic: "AppendStrStr".} + proc add*(x: var cstring, y: cstring) {.magic: "AppendStrStr".} = + ## Appends `y` to `x` in place. + ## Only implemented for JS backend. + runnableExamples: + when defined(js): + var tmp: cstring = "" + tmp.add(cstring("ab")) + tmp.add(cstring("cd")) + doAssert tmp == cstring("abcd") elif hasAlloc: {.push stackTrace: off, profiler: off.} diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim index 64c766482..ef06437e5 100644 --- a/lib/system/jssys.nim +++ b/lib/system/jssys.nim @@ -645,7 +645,7 @@ proc genericReset(x: JSRef, ti: PNimType): JSRef {.compilerproc.} = asm "`result` = {m_type: `ti`};" else: asm "`result` = {};" - of tySequence, tyOpenArray: + of tySequence, tyOpenArray, tyString: asm """ `result` = []; """ -- cgit 1.4.1-2-gfad0 202b8838f15192b6fde940ea662'/>