1/** 2 * @fileoverview Rule to flag usage of __iterator__ property 3 * @author Ian Christian Myers 4 */ 5 6"use strict"; 7 8//------------------------------------------------------------------------------ 9// Requirements 10//------------------------------------------------------------------------------ 11 12const { getStaticPropertyName } = require("./utils/ast-utils"); 13 14//------------------------------------------------------------------------------ 15// Rule Definition 16//------------------------------------------------------------------------------ 17 18module.exports = { 19 meta: { 20 type: "suggestion", 21 22 docs: { 23 description: "disallow the use of the `__iterator__` property", 24 category: "Best Practices", 25 recommended: false, 26 url: "https://eslint.org/docs/rules/no-iterator" 27 }, 28 29 schema: [], 30 31 messages: { 32 noIterator: "Reserved name '__iterator__'." 33 } 34 }, 35 36 create(context) { 37 38 return { 39 40 MemberExpression(node) { 41 42 if (getStaticPropertyName(node) === "__iterator__") { 43 context.report({ 44 node, 45 messageId: "noIterator" 46 }); 47 } 48 } 49 }; 50 51 } 52}; 53