diff options
author | 2023-07-26 16:54:22 -0700 | |
---|---|---|
committer | 2023-07-26 16:54:36 -0700 | |
commit | 664ccec7d33cc94ba829f35fc7ef8ca7794095cc (patch) | |
tree | 8213b2ee01afa39c9bb1c9d26aa5cae6d13d0cdc | |
parent | 1a558ef7538a19545e5934dfc99edf86ec436892 (diff) | |
download | bun-664ccec7d33cc94ba829f35fc7ef8ca7794095cc.tar.gz bun-664ccec7d33cc94ba829f35fc7ef8ca7794095cc.tar.zst bun-664ccec7d33cc94ba829f35fc7ef8ca7794095cc.zip |
Disable concurrent transpiler in macros
-rw-r--r-- | src/bun.js/javascript.zig | 2 | ||||
-rw-r--r-- | src/bun.js/module_loader.zig | 3 | ||||
-rw-r--r-- | test/transpiler/macro-test.test.ts | 8 |
3 files changed, 12 insertions, 1 deletions
diff --git a/src/bun.js/javascript.zig b/src/bun.js/javascript.zig index a049f4263..d8043ca44 100644 --- a/src/bun.js/javascript.zig +++ b/src/bun.js/javascript.zig @@ -751,6 +751,7 @@ pub const VirtualMachine = struct { this.macro_mode = true; this.event_loop = &this.macro_event_loop; Analytics.Features.macros = true; + this.transpiler_store.enabled = false; } pub fn disableMacroMode(this: *VirtualMachine) void { @@ -758,6 +759,7 @@ pub const VirtualMachine = struct { this.bundler.resolver.caches.fs.use_alternate_source_cache = false; this.macro_mode = false; this.event_loop = &this.regular_event_loop; + this.transpiler_store.enabled = true; } pub fn getAPIGlobals() []js.JSClassRef { diff --git a/src/bun.js/module_loader.zig b/src/bun.js/module_loader.zig index 245b2ffa1..0e4cb5ba2 100644 --- a/src/bun.js/module_loader.zig +++ b/src/bun.js/module_loader.zig @@ -178,6 +178,7 @@ pub const RuntimeTranspilerStore = struct { generation_number: std.atomic.Atomic(u32) = std.atomic.Atomic(u32).init(0), store: TranspilerJob.Store, + enabled: bool = true, pub fn init(allocator: std.mem.Allocator) RuntimeTranspilerStore { return RuntimeTranspilerStore{ @@ -2035,7 +2036,7 @@ pub const ModuleLoader = struct { if (allow_promise and loader.isJavaScriptLike() and // Plugins make this complicated, // TODO: allow running concurrently when no onLoad handlers match a plugin. - jsc_vm.plugin_runner == null) + jsc_vm.plugin_runner == null and jsc_vm.transpiler_store.enabled) { if (!strings.eqlLong(specifier, jsc_vm.main, true)) { return jsc_vm.transpiler_store.transpile( diff --git a/test/transpiler/macro-test.test.ts b/test/transpiler/macro-test.test.ts index 2390fac64..7be1ab2a5 100644 --- a/test/transpiler/macro-test.test.ts +++ b/test/transpiler/macro-test.test.ts @@ -11,3 +11,11 @@ test("ascii string", () => { test("utf16 string", () => { expect(identity("😊 Smiling Face with Smiling Eyes Emoji")).toBe("😊 Smiling Face with Smiling Eyes Emoji"); }); + +test("template string ascii", () => { + expect(identity(`A${""}`)).toBe("A"); +}); + +test("template string latin1", () => { + expect(identity(`©${""}`)).toBe("©"); +}); |