* fix #4963 * lint code * fix more incorrectly paren stripping * always need parens when UnaryExpression in BindExpression * lint codemaster
parent
26fd292ece
commit
b0a33b7326
|
@ -140,6 +140,10 @@ function needsParens(path, options) {
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parent.type === "BindExpression" && parent.callee === node) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,6 +173,8 @@ function needsParens(path, options) {
|
||||||
);
|
);
|
||||||
|
|
||||||
case "BindExpression":
|
case "BindExpression":
|
||||||
|
return true;
|
||||||
|
|
||||||
case "MemberExpression":
|
case "MemberExpression":
|
||||||
return name === "object" && parent.object === node;
|
return name === "object" && parent.object === node;
|
||||||
|
|
||||||
|
@ -558,6 +564,39 @@ function needsParens(path, options) {
|
||||||
|
|
||||||
case "OptionalMemberExpression":
|
case "OptionalMemberExpression":
|
||||||
return parent.type === "MemberExpression";
|
return parent.type === "MemberExpression";
|
||||||
|
|
||||||
|
case "MemberExpression":
|
||||||
|
if (
|
||||||
|
parent.type === "BindExpression" &&
|
||||||
|
name === "callee" &&
|
||||||
|
parent.callee === node
|
||||||
|
) {
|
||||||
|
let object = node.object;
|
||||||
|
while (object) {
|
||||||
|
if (object.type === "CallExpression") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
object.type !== "MemberExpression" &&
|
||||||
|
object.type !== "BindExpression"
|
||||||
|
) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
object = object.object;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
case "BindExpression":
|
||||||
|
if (
|
||||||
|
(parent.type === "BindExpression" &&
|
||||||
|
name === "callee" &&
|
||||||
|
parent.callee === node) ||
|
||||||
|
parent.type === "MemberExpression"
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -30,10 +30,64 @@ exports[`bind_parens.js - babylon-verify 1`] = `
|
||||||
(a || b)::c;
|
(a || b)::c;
|
||||||
a || (b::c);
|
a || (b::c);
|
||||||
::obj.prop;
|
::obj.prop;
|
||||||
|
(void 0)::func();
|
||||||
|
(+0)::is(-0);
|
||||||
|
a::(b.c);
|
||||||
|
a::(b.c());
|
||||||
|
a::b.c();
|
||||||
|
a::(b.c()());
|
||||||
|
a::((b.c())());
|
||||||
|
a::(b.c())();
|
||||||
|
a::(b.c().d);
|
||||||
|
a::(c().d.e);
|
||||||
|
a::(b());
|
||||||
|
a::(b::c());
|
||||||
|
a::(b()::c);
|
||||||
|
a::(b().c::d);
|
||||||
|
a::(b.c::d);
|
||||||
|
a::(b::c.d);
|
||||||
|
a::(b.c::d::e);
|
||||||
|
a::(b::c::d);
|
||||||
|
a::(b::c::d.e);
|
||||||
|
a::((b::c::d).e);
|
||||||
|
a::(void 0);
|
||||||
|
a::(b.c()::d.e);
|
||||||
|
a::(b.c::d.e);
|
||||||
|
a::(b.c::d.e)::f.g;
|
||||||
|
b.c::d.e;
|
||||||
|
(b.c::d).e;
|
||||||
|
(b::c::d).e;
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
(a || b)::c;
|
(a || b)::c;
|
||||||
a || b::c;
|
a || b::c;
|
||||||
::obj.prop;
|
::obj.prop;
|
||||||
|
(void 0)::func();
|
||||||
|
(+0)::is(-0);
|
||||||
|
a::b.c;
|
||||||
|
a::(b.c());
|
||||||
|
a::b.c();
|
||||||
|
a::(b.c()());
|
||||||
|
a::(b.c()());
|
||||||
|
a::(b.c())();
|
||||||
|
a::(b.c().d);
|
||||||
|
a::(c().d.e);
|
||||||
|
a::(b());
|
||||||
|
a::(b::c());
|
||||||
|
a::(b()::c);
|
||||||
|
a::(b().c::d);
|
||||||
|
a::(b.c::d);
|
||||||
|
a::(b::c.d);
|
||||||
|
a::(b.c::d::e);
|
||||||
|
a::(b::c::d);
|
||||||
|
a::(b::c::d.e);
|
||||||
|
a::(b::c::d).e;
|
||||||
|
a::(void 0);
|
||||||
|
a::(b.c()::d.e);
|
||||||
|
a::(b.c::d.e);
|
||||||
|
a::(b.c::d.e)::f.g;
|
||||||
|
b.c::d.e;
|
||||||
|
(b.c::d).e;
|
||||||
|
(b::c::d).e;
|
||||||
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
@ -41,10 +95,64 @@ exports[`bind_parens.js - babylon-verify 2`] = `
|
||||||
(a || b)::c;
|
(a || b)::c;
|
||||||
a || (b::c);
|
a || (b::c);
|
||||||
::obj.prop;
|
::obj.prop;
|
||||||
|
(void 0)::func();
|
||||||
|
(+0)::is(-0);
|
||||||
|
a::(b.c);
|
||||||
|
a::(b.c());
|
||||||
|
a::b.c();
|
||||||
|
a::(b.c()());
|
||||||
|
a::((b.c())());
|
||||||
|
a::(b.c())();
|
||||||
|
a::(b.c().d);
|
||||||
|
a::(c().d.e);
|
||||||
|
a::(b());
|
||||||
|
a::(b::c());
|
||||||
|
a::(b()::c);
|
||||||
|
a::(b().c::d);
|
||||||
|
a::(b.c::d);
|
||||||
|
a::(b::c.d);
|
||||||
|
a::(b.c::d::e);
|
||||||
|
a::(b::c::d);
|
||||||
|
a::(b::c::d.e);
|
||||||
|
a::((b::c::d).e);
|
||||||
|
a::(void 0);
|
||||||
|
a::(b.c()::d.e);
|
||||||
|
a::(b.c::d.e);
|
||||||
|
a::(b.c::d.e)::f.g;
|
||||||
|
b.c::d.e;
|
||||||
|
(b.c::d).e;
|
||||||
|
(b::c::d).e;
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
;(a || b)::c
|
;(a || b)::c
|
||||||
a || b::c
|
a || b::c
|
||||||
;::obj.prop
|
;::obj.prop
|
||||||
|
;(void 0)::func()
|
||||||
|
;(+0)::is(-0)
|
||||||
|
;a::b.c
|
||||||
|
;a::(b.c())
|
||||||
|
;a::b.c()
|
||||||
|
;a::(b.c()())
|
||||||
|
;a::(b.c()())
|
||||||
|
;a::(b.c())()
|
||||||
|
;a::(b.c().d)
|
||||||
|
;a::(c().d.e)
|
||||||
|
;a::(b())
|
||||||
|
;a::(b::c())
|
||||||
|
;a::(b()::c)
|
||||||
|
;a::(b().c::d)
|
||||||
|
;a::(b.c::d)
|
||||||
|
;a::(b::c.d)
|
||||||
|
;a::(b.c::d::e)
|
||||||
|
;a::(b::c::d)
|
||||||
|
;a::(b::c::d.e)
|
||||||
|
;a::(b::c::d).e
|
||||||
|
;a::(void 0)
|
||||||
|
;a::(b.c()::d.e)
|
||||||
|
;a::(b.c::d.e)
|
||||||
|
;a::(b.c::d.e)::f.g
|
||||||
|
;b.c::d.e
|
||||||
|
;(b.c::d).e
|
||||||
|
;(b::c::d).e
|
||||||
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
@ -215,25 +323,3 @@ class X {
|
||||||
}
|
}
|
||||||
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`unary.js - babylon-verify 1`] = `
|
|
||||||
(void 0)::func();
|
|
||||||
|
|
||||||
(+0)::is(-0);
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
(void 0)::func();
|
|
||||||
|
|
||||||
(+0)::is(-0);
|
|
||||||
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`unary.js - babylon-verify 2`] = `
|
|
||||||
(void 0)::func();
|
|
||||||
|
|
||||||
(+0)::is(-0);
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
;(void 0)::func()
|
|
||||||
|
|
||||||
;(+0)::is(-0)
|
|
||||||
|
|
||||||
`;
|
|
||||||
|
|
|
@ -1,3 +1,30 @@
|
||||||
(a || b)::c;
|
(a || b)::c;
|
||||||
a || (b::c);
|
a || (b::c);
|
||||||
::obj.prop;
|
::obj.prop;
|
||||||
|
(void 0)::func();
|
||||||
|
(+0)::is(-0);
|
||||||
|
a::(b.c);
|
||||||
|
a::(b.c());
|
||||||
|
a::b.c();
|
||||||
|
a::(b.c()());
|
||||||
|
a::((b.c())());
|
||||||
|
a::(b.c())();
|
||||||
|
a::(b.c().d);
|
||||||
|
a::(c().d.e);
|
||||||
|
a::(b());
|
||||||
|
a::(b::c());
|
||||||
|
a::(b()::c);
|
||||||
|
a::(b().c::d);
|
||||||
|
a::(b.c::d);
|
||||||
|
a::(b::c.d);
|
||||||
|
a::(b.c::d::e);
|
||||||
|
a::(b::c::d);
|
||||||
|
a::(b::c::d.e);
|
||||||
|
a::((b::c::d).e);
|
||||||
|
a::(void 0);
|
||||||
|
a::(b.c()::d.e);
|
||||||
|
a::(b.c::d.e);
|
||||||
|
a::(b.c::d.e)::f.g;
|
||||||
|
b.c::d.e;
|
||||||
|
(b.c::d).e;
|
||||||
|
(b::c::d).e;
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
(void 0)::func();
|
|
||||||
|
|
||||||
(+0)::is(-0);
|
|
Loading…
Reference in New Issue