Skip to content

Commit

Permalink
Fix derived classes in Chrome <= 36 (#14072)
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed Dec 30, 2021
1 parent e77e3de commit 2810dc6
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions packages/babel-helpers/src/helpers.ts
Expand Up @@ -335,16 +335,17 @@ helpers.inherits = helper("7.0.0-beta.0")`
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
Object.defineProperty(subClass, "prototype", {
value: Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
}),
writable: false,
// We can't use defineProperty to set the prototype in a single step because it
// doesn't work in Chrome <= 36. https://github.com/babel/babel/issues/14056
// V8 bug: https://bugs.chromium.org/p/v8/issues/detail?id=3334
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
Object.defineProperty(subClass, "prototype", { writable: false });
if (superClass) setPrototypeOf(subClass, superClass);
}
`;
Expand Down

0 comments on commit 2810dc6

Please sign in to comment.