aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-05-08 14:23:52 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-05-08 14:23:52 -0700
commit18794b18b32e5cfeb190f29fe29590d742a327e8 (patch)
treeb353a9a2f4893af782b5cdb95c68a338c26bd080
parente70ac2ce825ecf5f2d6aa16152801612bf23be8d (diff)
downloadbun-18794b18b32e5cfeb190f29fe29590d742a327e8.tar.gz
bun-18794b18b32e5cfeb190f29fe29590d742a327e8.tar.zst
bun-18794b18b32e5cfeb190f29fe29590d742a327e8.zip
Fix for loop initializer
Former-commit-id: 6b863d5d51f7f1bc293e56ed395fe4ad49174f63
-rw-r--r--.gitignore3
-rw-r--r--.vscode/launch.json2
-rw-r--r--.vscode/tasks.json2
-rw-r--r--pnpm-lock.yaml225
-rw-r--r--src/api/demo/lib/api.ts2
-rw-r--r--src/js_printer.zig6
-rw-r--r--src/logger.zig4
-rw-r--r--src/main_wasm.zig27
-rw-r--r--src/test/fixtures/for-loop-bug.js5
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");
+}