| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- 'use strict';
 
- const {findVariable} = require('@eslint-community/eslint-utils');
 
- const getReferences = (scope, nodeOrName) => {
 
- 	const {references = []} = findVariable(scope, nodeOrName) || {};
 
- 	return references;
 
- };
 
- /**
 
- Check if `this`, `arguments`, or the function name is used inside of itself.
 
- @param {Node} functionNode - The function node.
 
- @param {Scope} functionScope - The scope of the function node.
 
- @returns {boolean}
 
- */
 
- function isFunctionSelfUsedInside(functionNode, functionScope) {
 
- 	/* c8 ignore next 3 */
 
- 	if (functionScope.block !== functionNode) {
 
- 		throw new Error('"functionScope" should be the scope of "functionNode".');
 
- 	}
 
- 	const {type, id} = functionNode;
 
- 	if (type === 'ArrowFunctionExpression') {
 
- 		return false;
 
- 	}
 
- 	if (functionScope.thisFound) {
 
- 		return true;
 
- 	}
 
- 	if (getReferences(functionScope, 'arguments').some(({from}) => from === functionScope)) {
 
- 		return true;
 
- 	}
 
- 	if (id && getReferences(functionScope, id).length > 0) {
 
- 		return true;
 
- 	}
 
- 	return false;
 
- }
 
- module.exports = isFunctionSelfUsedInside;
 
 
  |