Skip to content

Commit

Permalink
chore(ast): separate getAncestors helper
Browse files Browse the repository at this point in the history
  • Loading branch information
antongolub committed Apr 17, 2024
1 parent 87bf6c6 commit d87ada8
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 4 deletions.
3 changes: 2 additions & 1 deletion lib/rules/jsx-no-bind.js
Expand Up @@ -8,6 +8,7 @@
'use strict';

const propName = require('jsx-ast-utils/propName');
const astUtil = require('../util/ast');
const docsUrl = require('../util/docsUrl');
const jsxUtil = require('../util/jsx');
const report = require('../util/report');
Expand Down Expand Up @@ -123,7 +124,7 @@ module.exports = {
}

function getBlockStatementAncestors(node) {
return context.getAncestors(node).filter(
return astUtil.getAncestors(context, node).filter(
(ancestor) => ancestor.type === 'BlockStatement'
).reverse();
}
Expand Down
3 changes: 2 additions & 1 deletion lib/rules/no-is-mounted.js
Expand Up @@ -5,6 +5,7 @@

'use strict';

const astUtil = require('../util/ast');
const docsUrl = require('../util/docsUrl');
const report = require('../util/report');

Expand Down Expand Up @@ -40,7 +41,7 @@ module.exports = {
if (callee.object.type !== 'ThisExpression' || callee.property.name !== 'isMounted') {
return;
}
const ancestors = context.getAncestors(callee);
const ancestors = astUtil.getAncestors(context, callee);
for (let i = 0, j = ancestors.length; i < j; i++) {
if (ancestors[i].type === 'Property' || ancestors[i].type === 'MethodDefinition') {
report(context, messages.noIsMounted, 'noIsMounted', {
Expand Down
2 changes: 1 addition & 1 deletion lib/rules/require-render-return.js
Expand Up @@ -60,7 +60,7 @@ module.exports = {

return {
ReturnStatement(node) {
const ancestors = (context.sourceCode || context).getAncestors(node).reverse();
const ancestors = astUtil.getAncestors(context, node).reverse();
let depth = 0;
ancestors.forEach((ancestor) => {
if (/Function(Expression|Declaration)$/.test(ancestor.type)) {
Expand Down
2 changes: 2 additions & 0 deletions lib/types.d.ts
Expand Up @@ -16,6 +16,7 @@ declare global {
variableScope: Scope
childScopes: Scope[]
variables: Variable[]
upper: Scope | null
}
type Token = eslint.AST.Token;
type Fixer = eslint.Rule.RuleFixer;
Expand All @@ -26,6 +27,7 @@ declare global {

type SourceCode = eslint.SourceCode & {
getScope: (node: ASTNode) => Scope | null;
getAncestors: (node: ASTNode) => ASTNode[];
};
type Context = eslint.Rule.RuleContext & { sourceCode?: SourceCode };

Expand Down
11 changes: 11 additions & 0 deletions lib/util/ast.js
Expand Up @@ -214,6 +214,16 @@ function getScope(context, node) {
return context.getScope();
}

/**
* Get the ancestors of a node
* @param {Context} context
* @param {ASTNode} node
* @return {ASTNode[]}
*/
function getAncestors(context, node) {
return (context.sourceCode || context).getAncestors(node);
}

/**
* Checks if the node is the first in its line, excluding whitespace.
* @param {Object} context The node to check
Expand Down Expand Up @@ -445,6 +455,7 @@ function isTSTypeParameterInstantiation(node) {
module.exports = {
traverse,
findReturnStatement,
getAncestors,
getFirstNodeInLine,
getPropertyName,
getPropertyNameNode,
Expand Down
3 changes: 2 additions & 1 deletion lib/util/makeNoMethodSetStateRule.js
Expand Up @@ -7,6 +7,7 @@

const findLast = require('array.prototype.findlast');

const astUtil = require('./ast');
const docsUrl = require('./docsUrl');
const report = require('./report');
const testReactVersion = require('./version').testReactVersion;
Expand Down Expand Up @@ -93,7 +94,7 @@ module.exports = function makeNoMethodSetStateRule(methodName, shouldCheckUnsafe
) {
return;
}
const ancestors = context.getAncestors(callee);
const ancestors = astUtil.getAncestors(context, callee);
let depth = 0;
findLast(ancestors, (ancestor) => {
// ancestors.some((ancestor) => {
Expand Down

0 comments on commit d87ada8

Please sign in to comment.