diff --git a/lib/rules/no-iterator.js b/lib/rules/no-iterator.js index 0b01d3533d9..9ba1e7aefdb 100644 --- a/lib/rules/no-iterator.js +++ b/lib/rules/no-iterator.js @@ -5,6 +5,12 @@ "use strict"; +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const { getStaticPropertyName } = require("./utils/ast-utils"); + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -33,9 +39,7 @@ module.exports = { MemberExpression(node) { - if (node.property && - (node.property.type === "Identifier" && node.property.name === "__iterator__" && !node.computed) || - (node.property.type === "Literal" && node.property.value === "__iterator__")) { + if (getStaticPropertyName(node) === "__iterator__") { context.report({ node, messageId: "noIterator" diff --git a/lib/rules/no-proto.js b/lib/rules/no-proto.js index 80b96509416..aae481a7412 100644 --- a/lib/rules/no-proto.js +++ b/lib/rules/no-proto.js @@ -5,6 +5,12 @@ "use strict"; +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const { getStaticPropertyName } = require("./utils/ast-utils"); + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -28,10 +34,7 @@ module.exports = { return { MemberExpression(node) { - - if (node.property && - (node.property.type === "Identifier" && node.property.name === "__proto__" && !node.computed) || - (node.property.type === "Literal" && node.property.value === "__proto__")) { + if (getStaticPropertyName(node) === "__proto__") { context.report({ node, message: "The '__proto__' property is deprecated." }); } } diff --git a/tests/lib/rules/no-iterator.js b/tests/lib/rules/no-iterator.js index 3faf7fd89d7..04aa795c179 100644 --- a/tests/lib/rules/no-iterator.js +++ b/tests/lib/rules/no-iterator.js @@ -21,7 +21,9 @@ const ruleTester = new RuleTester(); ruleTester.run("no-iterator", rule, { valid: [ "var a = test[__iterator__];", - "var __iterator__ = null;" + "var __iterator__ = null;", + { code: "foo[`__iterator`] = null;", parserOptions: { ecmaVersion: 6 } }, + { code: "foo[`__iterator__\n`] = null;", parserOptions: { ecmaVersion: 6 } } ], invalid: [ { @@ -44,6 +46,22 @@ ruleTester.run("no-iterator", rule, { messageId: "noIterator", type: "MemberExpression" }] + }, + { + code: "var a = test[`__iterator__`];", + parserOptions: { ecmaVersion: 6 }, + errors: [{ + messageId: "noIterator", + type: "MemberExpression" + }] + }, + { + code: "test[`__iterator__`] = function () {};", + parserOptions: { ecmaVersion: 6 }, + errors: [{ + messageId: "noIterator", + type: "MemberExpression" + }] } ] }); diff --git a/tests/lib/rules/no-proto.js b/tests/lib/rules/no-proto.js index 0a013587c51..f6bea000a90 100644 --- a/tests/lib/rules/no-proto.js +++ b/tests/lib/rules/no-proto.js @@ -21,10 +21,14 @@ const ruleTester = new RuleTester(); ruleTester.run("no-proto", rule, { valid: [ "var a = test[__proto__];", - "var __proto__ = null;" + "var __proto__ = null;", + { code: "foo[`__proto`] = null;", parserOptions: { ecmaVersion: 6 } }, + { code: "foo[`__proto__\n`] = null;", parserOptions: { ecmaVersion: 6 } } ], invalid: [ { code: "var a = test.__proto__;", errors: [{ message: "The '__proto__' property is deprecated.", type: "MemberExpression" }] }, - { code: "var a = test['__proto__'];", errors: [{ message: "The '__proto__' property is deprecated.", type: "MemberExpression" }] } + { code: "var a = test['__proto__'];", errors: [{ message: "The '__proto__' property is deprecated.", type: "MemberExpression" }] }, + { code: "var a = test[`__proto__`];", parserOptions: { ecmaVersion: 6 }, errors: [{ message: "The '__proto__' property is deprecated.", type: "MemberExpression" }] }, + { code: "test[`__proto__`] = function () {};", parserOptions: { ecmaVersion: 6 }, errors: [{ message: "The '__proto__' property is deprecated.", type: "MemberExpression" }] } ] });