diff options
-rw-r--r-- | src/js_printer.zig | 37 | ||||
-rw-r--r-- | test/bun.js/event-emitter.test.ts | 16 |
2 files changed, 34 insertions, 19 deletions
diff --git a/src/js_printer.zig b/src/js_printer.zig index 08064c6e3..707161ffd 100644 --- a/src/js_printer.zig +++ b/src/js_printer.zig @@ -690,6 +690,19 @@ pub fn NewPrinter( p.printIndent(); } + if (import.default_name) |default| { + p.print("var "); + p.printSymbol(default.ref.?); + if (comptime Statement == void) { + p.print(" = "); + p.printRequireOrImportExpr(import.import_record_index, &.{}, Level.lowest, ExprFlag.None()); + } else { + p.print(" = "); + p.print(statement); + } + p.printSemicolonAfterStatement(); + } + if (import.items.len > 0) { p.print("var "); p.print("{ "); @@ -700,13 +713,6 @@ pub fn NewPrinter( p.printIndent(); } - if (import.default_name) |default_name| { - p.print("default:"); - p.printSpaceBeforeIdentifier(); - p.printSymbol(default_name.ref.?); - p.print(", "); - } - for (import.items) |item, i| { if (i > 0) { p.print(","); @@ -728,7 +734,7 @@ pub fn NewPrinter( p.printSpace(); } - if (import.star_name_loc == null) { + if (import.star_name_loc == null and import.default_name == null) { if (comptime Statement == void) { p.print("} = "); p.printRequireOrImportExpr(import.import_record_index, &.{}, Level.lowest, ExprFlag.None()); @@ -736,6 +742,10 @@ pub fn NewPrinter( p.print("} = "); p.print(statement); } + } else if (import.default_name) |name| { + p.print("} ="); + p.printSpaceBeforeIdentifier(); + p.printSymbol(name.ref.?); } else { p.print("} ="); p.printSpaceBeforeIdentifier(); @@ -743,17 +753,6 @@ pub fn NewPrinter( } p.printSemicolonAfterStatement(); - } else if (import.default_name) |default| { - p.print("var "); - p.printSymbol(default.ref.?); - if (comptime Statement == void) { - p.print(" = "); - p.printRequireOrImportExpr(import.import_record_index, &.{}, Level.lowest, ExprFlag.None()); - } else { - p.print(" = "); - p.print(statement); - } - p.printSemicolonAfterStatement(); } } diff --git a/test/bun.js/event-emitter.test.ts b/test/bun.js/event-emitter.test.ts new file mode 100644 index 000000000..4c8d70452 --- /dev/null +++ b/test/bun.js/event-emitter.test.ts @@ -0,0 +1,16 @@ +import { test, describe, expect } from "bun:test"; + +// this is also testing that imports with default and named imports in the same statement work +// our transpiler transform changes this to a var with import.meta.require +import EventEmitter, { getEventListeners } from "node:events"; + +describe("EventEmitter", () => { + test("getEventListeners", () => { + expect(getEventListeners(new EventEmitter(), "hey").length).toBe(0); + }); + test("EventEmitter constructor", () => { + var emitter = new EventEmitter(); + emitter.setMaxListeners(100); + expect(emitter.getMaxListeners()).toBe(100); + }); +}); |