Skip to content

Bug when bundling commonjs when there is code before super() #1124

Description

@ST-DDT

I encountered a bug where I get a bug under very specific circumstances:

  • Only applies to CJS
  • when minify is enabled
  • when spliting is enabled
  • when there is code before and after calling super() in the constructor
  • when there is a field that is initialized on declaration (and not in the constructor)

Source

// src/index.ts
class Parent {
  constructor() {}
}

class Feature {
  constructor() {}
}

export class Child extends Parent {
  feature = new Feature();

  constructor() {
    console.log("before");

    super();

    console.log("after");
  }
}

Result

constructor(){console.log("before"),super();_class.prototype.__init.call(this);,console.log("after")}
                                                                               ^

Error (when using the built code)

SyntaxError: Unexpected token ','

Reproduction

  • Download and unpack super-bug.zip
  • pnpm install
  • pnpm run build
  • Open dist/index.js

Context

I found this bug while working on faker-js/faker#2838

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions