Merge pull request #3334 from loganfsmyth/bind-callee-ref

Check BindExpression callee for reference - fixes T6984
This commit is contained in:
Logan Smyth 2016-02-10 22:42:50 -07:00
commit b53864c569
4 changed files with 46 additions and 1 deletions

View File

@ -0,0 +1,12 @@
function one(){}
function two(){}
class Test1 {
one(){
one::two(1, 2)
}
two(){
one::two(1, 2)
}
}

View File

@ -0,0 +1,26 @@
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _one() {}
function _two() {}
let Test1 = function () {
function Test1() {
_classCallCheck(this, Test1);
}
_createClass(Test1, [{
key: "one",
value: function one() {
_two.call(_one, 1, 2);
}
}, {
key: "two",
value: function two() {
_two.call(_one, 1, 2);
}
}]);
return Test1;
}();

View File

@ -0,0 +1,3 @@
{
"plugins": ["transform-function-bind", "transform-es2015-classes"]
}

View File

@ -32,12 +32,16 @@ export function isBinding(node: Object, parent: Object): boolean {
export function isReferenced(node: Object, parent: Object): boolean {
switch (parent.type) {
// yes: object::NODE
// yes: NODE::callee
case "BindExpression":
return parent.object === node || parent.callee === node;
// yes: PARENT[NODE]
// yes: NODE.child
// no: parent.NODE
case "MemberExpression":
case "JSXMemberExpression":
case "BindExpression":
if (parent.property === node && parent.computed) {
return true;
} else if (parent.object === node) {