lib/rules/no-eval.js
function report(node) {
            const parent = node.parent;
            const locationNode = node.type === "MemberExpression"
                ? node.property
                : node;

            const reportNode = parent.type === "CallExpression" && parent.callee === node
                ? parent
                : node;

            context.report({
                node: reportNode,
                loc: locationNode.loc.start,
                messageId: "unexpected"
            });
        }
function report(node) {
            const parent = node.parent;
            const locationNode = node.type === "MemberExpression"
                ? node.property
                : node;

            const reportNode = parent.type === "CallExpression" && parent.callee === node
                ? parent
                : node;

            context.report({
                node: reportNode,
                loc: locationNode.loc.start,
                messageId: "unexpected"
            });
        }
function report ( node ) { const parent = node . parent ; const locationNode = node . type === "MemberExpression" ? node . property : node ; const reportNode = parent . type === "CallExpression" && parent . callee === node ? parent : node ; context . report ( { node : reportNode , loc : locationNode . loc . start , messageId : "unexpected" } ) ; }
Reports a given node.

`node` is `Identifier` or `MemberExpression`.
The parent of `node` might be `CallExpression`.

The location of the report is always `eval` `Identifier` (or possibly
`Literal`). The type of the report is `CallExpression` if the parent is
`CallExpression`. Otherwise, it's the given node type.

@param {ASTNode} node - A node to report.
@returns {void}
Reports a given node .