From 7b843e44b9365bec5257b99225543e3d40247d96 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Fri, 9 Apr 2021 14:27:28 +0800 Subject: [PATCH 1/3] Add test --- tests/lib/utils.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/lib/utils.js b/tests/lib/utils.js index c92d9f88..cd711378 100644 --- a/tests/lib/utils.js +++ b/tests/lib/utils.js @@ -122,6 +122,31 @@ describe('utils', () => { ); }); }); + + for (const scopeOptions of [ + { ignoreEval: true, ecmaVersion: 6, sourceType: 'script', nodejsScope: true }, + { ignoreEval: true, ecmaVersion: 6, sourceType: 'script' }, + { ignoreEval: true, ecmaVersion: 6, sourceType: 'module' }, + ]) { + const ast = espree.parse(` + const create = () => {}; + const meta = {}; + module.exports = { create, meta }; + `, { ecmaVersion: 6 }); + const expected = { + create: { type: 'Identifier' }, + meta: { type: 'Identifier' }, + isNewStyle: true, + }; + it(`ScopeOptions: ${JSON.stringify(scopeOptions)}`, () => { + const scope = escope.analyze(ast, scopeOptions); + const ruleInfo = utils.getRuleInfo(ast, scope); + assert( + lodash.isMatch(ruleInfo, expected), + `Expected \n${util.inspect(ruleInfo)}\nto match\n${util.inspect(expected)}` + ); + }); + } }); }); From b1c3aa9b6ac20bb8bfe64f415fc6d178765216ba Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Fri, 9 Apr 2021 15:35:54 +0800 Subject: [PATCH 2/3] Fix reference searching --- lib/utils.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/utils.js b/lib/utils.js index 40d38b84..1b3891ca 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -30,16 +30,22 @@ function isNormalFunctionExpressionReference (node, scopeManager) { } const scope = scopeManager.acquire(node) || scopeManager.globalScope; - if (!scope) { - return false; + const scopes = [scope]; + let createReference; + while (scopes.length > 0) { + const currentScope = scopes.shift(); + const found = currentScope.references.find(reference => { + return reference.resolved && reference.identifier === node; + }); + if (found) { + createReference = found; + break; + } else { + scopes.push(...currentScope.childScopes); + } } - const references = scope.references; - const createReference = references.find(reference => { - return reference.identifier === node; - }); - - if (!createReference || !createReference.resolved) { + if (!createReference) { return false; } From cd762f21d6f7c009e63d6d2bd84190071ac821e8 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Fri, 9 Apr 2021 15:55:26 +0800 Subject: [PATCH 3/3] Style --- lib/utils.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/utils.js b/lib/utils.js index 1b3891ca..fd92b1b5 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -37,12 +37,13 @@ function isNormalFunctionExpressionReference (node, scopeManager) { const found = currentScope.references.find(reference => { return reference.resolved && reference.identifier === node; }); + if (found) { createReference = found; break; - } else { - scopes.push(...currentScope.childScopes); } + + scopes.push(...currentScope.childScopes); } if (!createReference) {