diff --git a/packages/babel-helper-create-class-features-plugin/src/fields.js b/packages/babel-helper-create-class-features-plugin/src/fields.js index 80e1ec1b40..b3d2ccff0e 100644 --- a/packages/babel-helper-create-class-features-plugin/src/fields.js +++ b/packages/babel-helper-create-class-features-plugin/src/fields.js @@ -501,7 +501,9 @@ function replaceThisContext(path, ref, superRef, file, loose) { file, getObjectRef() { state.needsClassRef = true; - return path.node.static ? ref : t.thisExpression(); + return path.node.static + ? ref + : t.memberExpression(ref, t.identifier("prototype")); }, }); replacer.replace(); diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/exec.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/exec.js index 9fcc52c264..63d8fe8cdf 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/exec.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/exec.js @@ -1,10 +1,14 @@ class Base { superMethod() { - return 1017; + return 'good'; } } class Sub extends Base { + superMethod() { + return 'bad'; + } + #privateMethod() { return super.superMethod(); } @@ -14,4 +18,4 @@ class Sub extends Base { } } -expect((new Sub()).publicMethod()).toEqual(1017); \ No newline at end of file +expect((new Sub()).publicMethod()).toEqual('good'); diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/input.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/input.js index 57879b021e..d85e01133a 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/input.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/input.js @@ -1,10 +1,14 @@ class Base { superMethod() { - return 1017; + return 'good'; } } class Sub extends Base { + superMethod() { + return 'bad'; + } + #privateMethod() { return super.superMethod(); } @@ -12,4 +16,4 @@ class Sub extends Base { publicMethod() { return this.#privateMethod(); } -} \ No newline at end of file +} diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/output.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/output.js index b245ccca9f..f12c62348c 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/output.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method-loose/super/output.js @@ -1,6 +1,6 @@ class Base { superMethod() { - return 1017; + return 'good'; } } @@ -13,6 +13,10 @@ class Sub extends Base { }); } + superMethod() { + return 'bad'; + } + publicMethod() { return babelHelpers.classPrivateFieldLooseBase(this, _privateMethod)[_privateMethod](); } diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/exec.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/exec.js index 9fcc52c264..63d8fe8cdf 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/exec.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/exec.js @@ -1,10 +1,14 @@ class Base { superMethod() { - return 1017; + return 'good'; } } class Sub extends Base { + superMethod() { + return 'bad'; + } + #privateMethod() { return super.superMethod(); } @@ -14,4 +18,4 @@ class Sub extends Base { } } -expect((new Sub()).publicMethod()).toEqual(1017); \ No newline at end of file +expect((new Sub()).publicMethod()).toEqual('good'); diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/input.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/input.js index 57879b021e..d85e01133a 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/input.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/input.js @@ -1,10 +1,14 @@ class Base { superMethod() { - return 1017; + return 'good'; } } class Sub extends Base { + superMethod() { + return 'bad'; + } + #privateMethod() { return super.superMethod(); } @@ -12,4 +16,4 @@ class Sub extends Base { publicMethod() { return this.#privateMethod(); } -} \ No newline at end of file +} diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/output.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/output.js index 63878e0e22..d934fb365e 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/output.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-method/super/output.js @@ -1,6 +1,6 @@ class Base { superMethod() { - return 1017; + return 'good'; } } @@ -12,6 +12,10 @@ class Sub extends Base { _privateMethod.add(this); } + superMethod() { + return 'bad'; + } + publicMethod() { return babelHelpers.classPrivateMethodGet(this, _privateMethod, _privateMethod2).call(this); } @@ -21,5 +25,5 @@ class Sub extends Base { var _privateMethod = new WeakSet(); var _privateMethod2 = function _privateMethod2() { - return babelHelpers.get(babelHelpers.getPrototypeOf(this), "superMethod", this).call(this); + return babelHelpers.get(babelHelpers.getPrototypeOf(Sub.prototype), "superMethod", this).call(this); }; diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/exec.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/exec.js index 2793aa6e60..1d6f0c6355 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/exec.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/exec.js @@ -1,8 +1,14 @@ class Base { - static basePublicStaticMethod() { return 1017; } + static basePublicStaticMethod() { + return 'good'; + } } class Sub extends Base { + static basePublicStaticMethod() { + return 'bad'; + } + static #subStaticPrivateMethod() { return super.basePublicStaticMethod(); } @@ -12,4 +18,4 @@ class Sub extends Base { } } -expect(Sub.check()).toEqual(1017); \ No newline at end of file +expect(Sub.check()).toEqual('good'); diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/input.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/input.js index 2a8aba080f..e5fb0ecd5e 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/input.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/input.js @@ -1,8 +1,14 @@ class Base { - static basePublicStaticMethod() { return 1017; } + static basePublicStaticMethod() { + return 'good'; + } } class Sub extends Base { + static basePublicStaticMethod() { + return 'bad'; + } + static #subStaticPrivateMethod() { return super.basePublicStaticMethod(); } diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/output.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/output.js index 4f6bc36984..98be96809b 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/output.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method-loose/super/output.js @@ -1,11 +1,15 @@ class Base { static basePublicStaticMethod() { - return 1017; + return 'good'; } } class Sub extends Base { + static basePublicStaticMethod() { + return 'bad'; + } + static check() { babelHelpers.classPrivateFieldLooseBase(Sub, _subStaticPrivateMethod)[_subStaticPrivateMethod](); } diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/exec.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/exec.js index 2793aa6e60..1d6f0c6355 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/exec.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/exec.js @@ -1,8 +1,14 @@ class Base { - static basePublicStaticMethod() { return 1017; } + static basePublicStaticMethod() { + return 'good'; + } } class Sub extends Base { + static basePublicStaticMethod() { + return 'bad'; + } + static #subStaticPrivateMethod() { return super.basePublicStaticMethod(); } @@ -12,4 +18,4 @@ class Sub extends Base { } } -expect(Sub.check()).toEqual(1017); \ No newline at end of file +expect(Sub.check()).toEqual('good'); diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/input.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/input.js index 2a8aba080f..e5fb0ecd5e 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/input.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/input.js @@ -1,8 +1,14 @@ class Base { - static basePublicStaticMethod() { return 1017; } + static basePublicStaticMethod() { + return 'good'; + } } class Sub extends Base { + static basePublicStaticMethod() { + return 'bad'; + } + static #subStaticPrivateMethod() { return super.basePublicStaticMethod(); } diff --git a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/output.js b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/output.js index 156343f956..b9cdbb4d24 100644 --- a/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/output.js +++ b/packages/babel-plugin-proposal-private-methods/test/fixtures/private-static-method/super/output.js @@ -1,11 +1,15 @@ class Base { static basePublicStaticMethod() { - return 1017; + return 'good'; } } class Sub extends Base { + static basePublicStaticMethod() { + return 'bad'; + } + static check() { babelHelpers.classStaticPrivateMethodGet(Sub, Sub, _subStaticPrivateMethod).call(Sub); }