diff options
author | 2021-05-08 14:23:52 -0700 | |
---|---|---|
committer | 2021-05-08 14:23:52 -0700 | |
commit | 18794b18b32e5cfeb190f29fe29590d742a327e8 (patch) | |
tree | b353a9a2f4893af782b5cdb95c68a338c26bd080 | |
parent | e70ac2ce825ecf5f2d6aa16152801612bf23be8d (diff) | |
download | bun-18794b18b32e5cfeb190f29fe29590d742a327e8.tar.gz bun-18794b18b32e5cfeb190f29fe29590d742a327e8.tar.zst bun-18794b18b32e5cfeb190f29fe29590d742a327e8.zip |
Fix for loop initializer
Former-commit-id: 6b863d5d51f7f1bc293e56ed395fe4ad49174f63
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | .vscode/launch.json | 2 | ||||
-rw-r--r-- | .vscode/tasks.json | 2 | ||||
-rw-r--r-- | pnpm-lock.yaml | 225 | ||||
-rw-r--r-- | src/api/demo/lib/api.ts | 2 | ||||
-rw-r--r-- | src/js_printer.zig | 6 | ||||
-rw-r--r-- | src/logger.zig | 4 | ||||
-rw-r--r-- | src/main_wasm.zig | 27 | ||||
-rw-r--r-- | src/test/fixtures/for-loop-bug.js | 5 |
9 files changed, 261 insertions, 15 deletions
diff --git a/.gitignore b/.gitignore index b8e503f95..8a49cc27d 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ dist /package-lock.json build *.wat -zig-out
\ No newline at end of file +zig-out +pnpm-lock.yaml
\ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index ec36642d7..ac4131710 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,7 +5,7 @@ "type": "lldb", "request": "launch", "name": "Launch", - "program": "${workspaceFolder}/zig-cache/bin/test", + "program": "${workspaceFolder}/zig-out/bin/test", "preLaunchTask": "test", "args": ["/usr/local/bin/zig"], "cwd": "${workspaceFolder}", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 41b6c24e7..345c1e3c3 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -30,7 +30,7 @@ "${file}", "--main-pkg-path", "${workspaceFolder}", - "-femit-bin=${workspaceFolder}/zig-cache/bin/test", + "-femit-bin=${workspaceFolder}/zig-out/bin/test", ";", "true" ], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 677f050f7..c725b0c8f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,10 +2,16 @@ lockfileVersion: 5.3 specifiers: '@babel/preset-react': ^7.13.13 + '@swc/cli': ^0.1.39 + '@swc/core': ^1.2.55 + '@swc/wasm': ^1.2.54 esbuild-wasm: ^0.11.19 dependencies: '@babel/preset-react': 7.13.13 + '@swc/cli': 0.1.39_@swc+core@1.2.55 + '@swc/core': 1.2.55 + '@swc/wasm': 1.2.55 esbuild-wasm: 0.11.19 packages: @@ -99,13 +105,232 @@ packages: to-fast-properties: 2.0.0 dev: false + /@napi-rs/triples/1.0.2: + resolution: {integrity: sha512-EL3SiX43m9poFSnhDx4d4fn9SSaqyO2rHsCNhETi9bWPmjXK3uPJ0QpPFtx39FEdHcz1vJmsiW41kqc0AgvtzQ==} + dev: false + + /@node-rs/helper/1.1.0: + resolution: {integrity: sha512-r43YnnrY5JNzDuXJdW3sBJrKzvejvFmFWbiItUEoBJsaPzOIWFMhXB7i5j4c9EMXcFfxveF4l7hT+rLmwtjrVQ==} + dependencies: + '@napi-rs/triples': 1.0.2 + tslib: 2.2.0 + dev: false + + /@swc/cli/0.1.39_@swc+core@1.2.55: + resolution: {integrity: sha512-qTI+HIjSgKUJUKZ3xGA6zAEkHryirmKrzj4zWrCg4FQnAEFGPOIx58/qRs3aURSOS3BnbVE33sqAxEN+v8qZpw==} + engines: {node: '>= 12.13'} + hasBin: true + peerDependencies: + '@swc/core': ^1.2.4 + chokidar: ^3.0.0 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + '@swc/core': 1.2.55 + commander: 7.2.0 + convert-source-map: 1.7.0 + glob: 7.1.7 + lodash: 4.17.21 + slash: 3.0.0 + source-map: 0.7.3 + dev: false + + /@swc/core-android-arm64/1.2.56: + resolution: {integrity: sha512-yXiqbuEnpotpYdGL8rFvRQzkK7JQ1rhZAdGTcCvwUF7L8Ujm1NxJlrNaiMiK7uKvCYOynwe32Ddykaew8ggEFQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [android] + dev: false + optional: true + + /@swc/core-darwin-arm64/1.2.56: + resolution: {integrity: sha512-Ub74q6rKxJy909mXoBJQ7dF5dUJnqrq3XpGHWexv3WUr7C/sTbcwZDwgFMqgDHOf0TSPTge+qwPNOIxcSYv/Kg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + dev: false + optional: true + + /@swc/core-darwin-x64/1.2.56: + resolution: {integrity: sha512-vxHo9eAyEVykTXM9tJGOYdlsxWq43po5mDeB1dEEjdwefpRCeV+xv3xL6GfVxoVn26w+LZgT4R+BpP0Hx7kATQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + dev: false + optional: true + + /@swc/core-linux-arm-gnueabihf/1.2.56: + resolution: {integrity: sha512-Chmj/OQB1ie/UY5Cdt9e8VkUTE5lDAPGg4eN2O71j0UlZux3TwR+L/tiGuS9S87lqF9qtZAmZ+WTldeiVFdVqQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + dev: false + optional: true + + /@swc/core-linux-arm64-gnu/1.2.56: + resolution: {integrity: sha512-WCze10brrFmWrJUKmmZVQPfgVnfkvfXbKbs24cgjFSzsV2iBZ4/NVqe+5covYTOkaFvnrqERHqq+ntm1wjDT1A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + dev: false + optional: true + + /@swc/core-linux-x64-gnu/1.2.56: + resolution: {integrity: sha512-B+Rr6NXUNe8RmgBNEh3ATZt77muFssaXbzIYTn+Yovw/s+xh27TFHaoZkfKJFNY/uWxL3S22ZVAxv5ugwS4++g==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + dev: false + optional: true + + /@swc/core-linux-x64-musl/1.2.56: + resolution: {integrity: sha512-W1BA8Zjz4pkFmAg3PqKsdTyySkJcUiPWi18Ok0qBx2xemgkEKpERpwI51NwWm3YQUSJKTH2MFiwfDLtCE+Ieng==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + dev: false + optional: true + + /@swc/core-win32-ia32-msvc/1.2.56: + resolution: {integrity: sha512-sSpruAaA3y0CXO1yMPfDxo4p9wtrS7cVOM7P9IryKIUGZBtoM3U0W2NAUE3h5GNrx7xv2GBxqtzfoYW6I8T9bw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + dev: false + optional: true + + /@swc/core-win32-x64-msvc/1.2.56: + resolution: {integrity: sha512-eSqajMZ6fAfHAy1h9Bh8oN90faCy3zsj3VcgjhEbJQnjUIN32eOLlWb70pAb58ckP+c2pBejaRuRElVjaViVjw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + dev: false + optional: true + + /@swc/core/1.2.55: + resolution: {integrity: sha512-ZtyxJ0IT0dv4jq0oPrlQytRN9HoSocT5Xig6y/Yx28uFRGJOlqaP1NrkNyZhB65c29gwXoedxN54uVqmXe+aFQ==} + engines: {node: '>=10'} + dependencies: + '@node-rs/helper': 1.1.0 + optionalDependencies: + '@swc/core-android-arm64': 1.2.56 + '@swc/core-darwin-arm64': 1.2.56 + '@swc/core-darwin-x64': 1.2.56 + '@swc/core-linux-arm-gnueabihf': 1.2.56 + '@swc/core-linux-arm64-gnu': 1.2.56 + '@swc/core-linux-x64-gnu': 1.2.56 + '@swc/core-linux-x64-musl': 1.2.56 + '@swc/core-win32-ia32-msvc': 1.2.56 + '@swc/core-win32-x64-msvc': 1.2.56 + dev: false + + /@swc/wasm/1.2.55: + resolution: {integrity: sha512-otrxYNDmKSKVK8QVsGynACyvSL8XOYYXsh7cyaXPSKGnTTPjeWhYvI1d5uFnZyASfFXUpk1eFEE6AMJWIwKJhA==} + dev: false + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: false + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: false + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + + /concat-map/0.0.1: + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + dev: false + + /convert-source-map/1.7.0: + resolution: {integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /esbuild-wasm/0.11.19: resolution: {integrity: sha512-d4s3fcIBG9CL/h5kKfXHpkztyMhs71anqdszND1Zfr4na1bhMGAb+VyEMBbt2/0ft5HtcsOYBqXsjNPNWTC29w==} engines: {node: '>=8'} hasBin: true dev: false + /fs.realpath/1.0.0: + resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + dev: false + + /glob/7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /inflight/1.0.6: + resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: false + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /minimatch/3.0.4: + resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + dependencies: + brace-expansion: 1.1.11 + dev: false + + /once/1.4.0: + resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + dependencies: + wrappy: 1.0.2 + dev: false + + /path-is-absolute/1.0.1: + resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + engines: {node: '>=0.10.0'} + dev: false + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: false + + /source-map/0.7.3: + resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} + engines: {node: '>= 8'} + dev: false + /to-fast-properties/2.0.0: resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} engines: {node: '>=4'} dev: false + + /tslib/2.2.0: + resolution: {integrity: sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==} + dev: false + + /wrappy/1.0.2: + resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + dev: false diff --git a/src/api/demo/lib/api.ts b/src/api/demo/lib/api.ts index d2e19218e..e8a626b10 100644 --- a/src/api/demo/lib/api.ts +++ b/src/api/demo/lib/api.ts @@ -176,7 +176,7 @@ export class ESDev { const resp_ptr = ESDev.wasm_exports.transform(ptr); var _bb = new ByteBuffer(this._wasmPtrToSlice(resp_ptr)); const response = Schema.decodeTransformResponse(_bb); - ESDev.wasm_exports.cycle(); + ESDev.wasm_exports.cycle(ptr, resp_ptr); return response; } } diff --git a/src/js_printer.zig b/src/js_printer.zig index 8322d8e3a..c858a45f2 100644 --- a/src/js_printer.zig +++ b/src/js_printer.zig @@ -2305,6 +2305,12 @@ pub fn NewPrinter(comptime ascii_only: bool) type { p.printSpace(); p.print("("); + if (s.init) |init_| { + p.printForLoopInit(init_); + } + + p.print(";"); + if (s.test_) |test_| { p.printExpr(test_, .lowest, ExprFlag.None()); } diff --git a/src/logger.zig b/src/logger.zig index c82f2d85d..1b286380f 100644 --- a/src/logger.zig +++ b/src/logger.zig @@ -480,8 +480,8 @@ test "ErrorPosition" { const source = Source{ .contents = @embedFile("./test/fixtures/simple.jsx"), .path = fs.Path.init("/src/test/fixtures/simple.jsx"), .identifier_name = "simple" }; const error_position = source.initErrorPosition(Loc{ .start = 979 }); - std.testing.expectEqual(973, error_position.line_start); - std.testing.expectEqual(1016, error_position.line_end); + std.testing.expectEqual(@as(usize, 973), @as(usize, error_position.line_start)); + std.testing.expectEqual(@as(usize, 1016), @as(usize, error_position.line_end)); var msgs = ArrayList(Msg).init(std.testing.allocator); var log = Log{ .msgs = msgs }; diff --git a/src/main_wasm.zig b/src/main_wasm.zig index 026e310eb..250f5c444 100644 --- a/src/main_wasm.zig +++ b/src/main_wasm.zig @@ -147,7 +147,7 @@ pub extern fn console_warn(abi: Uint8Array.Abi) void; pub extern fn console_info(abi: Uint8Array.Abi) void; const ZeeAlloc = zee.ZeeAlloc(.{}); -var arena: std.heap.ArenaAllocator = undefined; +var zee_instance: ZeeAlloc = undefined; pub const Exports = struct { fn init() callconv(.C) i32 { // const Gpa = std.heap.GeneralPurposeAllocator(.{}); @@ -183,11 +183,10 @@ pub const Exports = struct { ) catch return -1; if (alloc.needs_setup) { - arena = std.heap.ArenaAllocator.init(ZeeAlloc.wasm_allocator); - alloc.setup(&arena.allocator) catch return -1; + alloc.setup(ZeeAlloc.wasm_allocator) catch return -1; } - _ = @wasmMemoryGrow(0, 300); + _ = @wasmMemoryGrow(0, 600); Output.printErrorable("Initialized.", .{}) catch |err| { var name = alloc.static.alloc(u8, @errorName(err).len) catch unreachable; @@ -204,14 +203,24 @@ pub const Exports = struct { // Output.print("Req {s}", .{req}); // alloc.dynamic.free(Uint8Array.toSlice(abi)); const resp = api.?.transform(req) catch return Uint8Array.empty(); - return Uint8Array.encode(Schema.TransformResponse, resp) catch return Uint8Array.empty(); + alloc.dynamic.free(req.contents); + + if (req.path) |path| alloc.dynamic.free(path); + + var res = Uint8Array.encode(Schema.TransformResponse, resp) catch return Uint8Array.empty(); + // this is stupid. + for (resp.files) |file| { + alloc.dynamic.free(file.data); + alloc.dynamic.free(file.path); + } + + return res; } // Reset - fn cycle() callconv(.C) void { - arena.deinit(); - arena = std.heap.ArenaAllocator.init(ZeeAlloc.wasm_allocator); - alloc.setup(&arena.allocator) catch return; + fn cycle(req: Uint8Array.Abi, res: Uint8Array.Abi) callconv(.C) void { + alloc.dynamic.free(Uint8Array.toSlice(res)); + alloc.dynamic.free(Uint8Array.toSlice(req)); } fn malloc(size: usize) callconv(.C) ?*c_void { diff --git a/src/test/fixtures/for-loop-bug.js b/src/test/fixtures/for-loop-bug.js new file mode 100644 index 000000000..6539caaa0 --- /dev/null +++ b/src/test/fixtures/for-loop-bug.js @@ -0,0 +1,5 @@ +// For loop was missing initializer +for (let i = 0; i < 100; i++) { + console.log("hi"); + console.log("hey"); +} |