From fb16775856e531afe08f37a596f0b569ed17dbfc Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Tue, 29 Aug 2023 20:28:04 +0800 Subject: [PATCH] Merge remote-tracking branch 'upstream/devel' into pr_base --- test.nim | 13 +++ test2.js | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ test2.nim | 13 +++ 3 files changed, 263 insertions(+) create mode 100644 test.nim create mode 100644 test2.js create mode 100644 test2.nim diff --git a/test.nim b/test.nim new file mode 100644 index 0000000000..4b23cc111a --- /dev/null +++ b/test.nim @@ -0,0 +1,13 @@ +type + ChunkObj = object + data: UncheckedArray[byte] + +proc alloc(size: int): ref ChunkObj = + unsafeNew(result, size) + +proc main() = + let buf = alloc(10) + buf.data[9] = 100 # index out of bounds, because one byte is occupied by the 'dummy' field, + # the actual usable size of data is 9 bytes + +main() diff --git a/test2.js b/test2.js new file mode 100644 index 0000000000..af9a9e9d64 --- /dev/null +++ b/test2.js @@ -0,0 +1,237 @@ +/* Generated by the Nim Compiler v2.1.1 */ +var framePtr = null; +var excHandler = 0; +var lastJSError = null; + +function toJSStr(s_33556886) { + var result_33556887 = null; + + var res_33556928 = newSeq_33556904((s_33556886).length); + var i_33556929 = 0; + var j_33556930 = 0; + Label1: { + Label2: while (true) { + if (!(i_33556929 < (s_33556886).length)) break Label2; + var c_33556931 = s_33556886[i_33556929]; + if ((c_33556931 < 128)) { + res_33556928[j_33556930] = String.fromCharCode(c_33556931); + i_33556929 += 1; + } + else { + var helper_33556943 = newSeq_33556904(0); + Label3: { + Label4: while (true) { + if (!true) break Label4; + var code_33556944 = c_33556931.toString(16); + if ((((code_33556944) == null ? 0 : (code_33556944).length) == 1)) { + helper_33556943.push("%0");; + } + else { + helper_33556943.push("%");; + } + + helper_33556943.push(code_33556944);; + i_33556929 += 1; + if ((((s_33556886).length <= i_33556929) || (s_33556886[i_33556929] < 128))) { + break Label3; + } + + c_33556931 = s_33556886[i_33556929]; + } + }; +++excHandler; + try { + res_33556928[j_33556930] = decodeURIComponent(helper_33556943.join("")); +--excHandler; +} catch (EXCEPTION) { + var prevJSError = lastJSError; + lastJSError = EXCEPTION; + --excHandler; + res_33556928[j_33556930] = helper_33556943.join(""); + lastJSError = prevJSError; + } finally { + } + } + + j_33556930 += 1; + } + }; + if (res_33556928.length < j_33556930) { for (var i = res_33556928.length ; i < j_33556930 ; ++i) res_33556928.push(null); } + else { res_33556928.length = j_33556930; }; + result_33556887 = res_33556928.join(""); + + return result_33556887; + +} + +function rawEcho() { + var buf = ""; + for (var i = 0; i < arguments.length; ++i) { + buf += toJSStr(arguments[i]); + } + console.log(buf); + + + +} +var F = {procname: "module macros", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/core/macros.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module macros", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/core/macros.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module bitops_utils", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/std/private/bitops_utils.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module bitops_utils", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/std/private/bitops_utils.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module countbits_impl", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/system/countbits_impl.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module countbits_impl", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/system/countbits_impl.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module bitops", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/pure/bitops.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module bitops", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/pure/bitops.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module fenv", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/pure/fenv.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module fenv", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/pure/fenv.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module math", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/pure/math.nim", line: 0}; +framePtr = F; +framePtr = F.prev; +var F = {procname: "module math", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/pure/math.nim", line: 0}; +framePtr = F; +framePtr = F.prev; + +function newSeq_33556904(len_33556906) { + var result_33556907 = []; + + var F = {procname: "newSeq.newSeq", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/system.nim", line: 0}; + framePtr = F; + F.line = 635; + F.filename = "system.nim"; + result_33556907 = new Array(len_33556906); for (var i = 0 ; i < len_33556906 ; ++i) { result_33556907[i] = null; } framePtr = F.prev; + + return result_33556907; + +} + +function add_33556361(x_33556362, x_33556362_Idx, y_33556363) { + if (x_33556362[x_33556362_Idx] === null) { x_33556362[x_33556362_Idx] = []; } + var off = x_33556362[x_33556362_Idx].length; + x_33556362[x_33556362_Idx].length += y_33556363.length; + for (var i = 0; i < y_33556363.length; ++i) { + x_33556362[x_33556362_Idx][off+i] = y_33556363.charCodeAt(i); + } + + + +} + +function nimFloatToString_385876115(a_385876116) { + var result_385876117 = null; + + var F = {procname: "formatfloat.nimFloatToString", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/std/formatfloat.nim", line: 0}; + framePtr = F; + F.line = 106; + F.filename = "formatfloat.nim"; + function nimOnlyDigitsOrMinus(n) { + return n.toString().match(/^-?\d+$/); + } + if (Number.isSafeInteger(a_385876116)) + result_385876117 = a_385876116 === 0 && 1 / a_385876116 < 0 ? "-0.0" : a_385876116+".0" + else { + result_385876117 = a_385876116+"" + if(nimOnlyDigitsOrMinus(result_385876117)){ + result_385876117 = a_385876116+".0" + } + } + + framePtr = F.prev; + + return result_385876117; + +} + +function addFloat_33557532(result_33557534, result_33557534_Idx, x_33557535) { + var F = {procname: "addFloat.addFloat", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/std/formatfloat.nim", line: 0}; + framePtr = F; + F.line = 136; + F.filename = "formatfloat.nim"; + add_33556361(result_33557534, result_33557534_Idx, nimFloatToString_385876115(x_33557535)); + framePtr = F.prev; + + +} + +function HEX24_33557528(x_33557530) { + var result_33557531 = [[]]; + + var F = {procname: "$.$", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/system/dollars.nim", line: 0}; + framePtr = F; + F.line = 14; + F.filename = "dollars.nim"; + addFloat_33557532(result_33557531, 0, x_33557530); + framePtr = F.prev; + + return result_33557531[0]; + +} + +function HEX2DHEX3D_520093703(x_520093705, x_520093705_Idx, y_520093706) { + var F = {procname: "-=.-=", prev: framePtr, filename: "/home/wind/.choosenim/toolchains/nim-#devel/lib/system/arithmetics.nim", line: 0}; + framePtr = F; + F.line = 335; + F.filename = "arithmetics.nim"; + x_520093705[x_520093705_Idx] = (x_520093705[x_520093705_Idx] - y_520093706); + framePtr = F.prev; + + +} + +function round_520093699(x_520093701) { + var result_520093702 = [0.0]; + + if ((0.0 <= x_520093701)) { + result_520093702[0] = Math.round(x_520093701); + } + else { + result_520093702[0] = Math.ceil(x_520093701); + if ((0.5 <= (result_520093702[0] - x_520093701))) { + HEX2DHEX3D_520093703(result_520093702, 0, 1.0); + } + + } + + + return result_520093702[0]; + +} + +function hello_520093698() { + var F = {procname: "test2.hello", prev: framePtr, filename: "/home/wind/prs/Nim/test2.nim", line: 0}; + framePtr = F; + F.line = 4; + F.filename = "test2.nim"; + rawEcho(HEX24_33557528(round_520093699(0.49999999999999994))); + framePtr = F.prev; + + +} +var F = {procname: "module test2", prev: framePtr, filename: "/home/wind/prs/Nim/test2.nim", line: 0}; +framePtr = F; +F.line = 7; +F.filename = "test2.nim"; +hello_520093698(); +framePtr = F.prev; +var F = {procname: "module test2", prev: framePtr, filename: "/home/wind/prs/Nim/test2.nim", line: 0}; +framePtr = F; +framePtr = F.prev; diff --git a/test2.nim b/test2.nim new file mode 100644 index 0000000000..1ac68ffb9b --- /dev/null +++ b/test2.nim @@ -0,0 +1,13 @@ +type + ChunkObj = object + data: UncheckedArray[byte] + +proc alloc(size: int): ref ChunkObj = + unsafeNew(result, size) + +proc main() = + let buf = alloc(10) + buf.data[9] = 100 # index out of bounds, because one byte is occupied by the 'dummy' field, + # the actual usable size of data is 9 bytes + +main() \ No newline at end of file