diff --git a/packages/babel-plugin-proposal-function-bind/src/index.js b/packages/babel-plugin-proposal-function-bind/src/index.js index 0dea27804a15..4a26c705cf2f 100644 --- a/packages/babel-plugin-proposal-function-bind/src/index.js +++ b/packages/babel-plugin-proposal-function-bind/src/index.js @@ -15,7 +15,10 @@ export default declare(api => { function getStaticContext(bind, scope) { const object = bind.object || bind.callee.object; - return scope.isStatic(object) && object; + return ( + scope.isStatic(object) && + (t.isSuper(object) ? t.thisExpression() : object) + ); } function inferBindContext(bind, scope) { diff --git a/packages/babel-plugin-proposal-function-bind/test/fixtures/function-bind/super/input.js b/packages/babel-plugin-proposal-function-bind/test/fixtures/function-bind/super/input.js new file mode 100644 index 000000000000..5faf8f6f93c3 --- /dev/null +++ b/packages/babel-plugin-proposal-function-bind/test/fixtures/function-bind/super/input.js @@ -0,0 +1,6 @@ +class C { + foo() { + ::super.bar; + ::super.baz(123); + } +} diff --git a/packages/babel-plugin-proposal-function-bind/test/fixtures/function-bind/super/output.js b/packages/babel-plugin-proposal-function-bind/test/fixtures/function-bind/super/output.js new file mode 100644 index 000000000000..b249ce7a39bc --- /dev/null +++ b/packages/babel-plugin-proposal-function-bind/test/fixtures/function-bind/super/output.js @@ -0,0 +1,7 @@ +class C { + foo() { + super.bar.bind(this); + super.baz.call(this, 123); + } + +}