From bc591e9456e2264c43754930f8a2b769aab30733 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 21 Jul 2016 16:38:38 -0700 Subject: [PATCH 1/2] tools: enforce loading required modules first Refs: https://github.com/nodejs/node/pull/7786 --- tools/eslint-rules/required-modules.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/tools/eslint-rules/required-modules.js b/tools/eslint-rules/required-modules.js index 3e4a8e8aadfc82..0fe2921c2f6780 100644 --- a/tools/eslint-rules/required-modules.js +++ b/tools/eslint-rules/required-modules.js @@ -1,5 +1,6 @@ /** - * @fileoverview Require usage of specified node modules. + * @fileoverview Require usage of specified node modules before any other + * modules are loaded. * @author Rich Trott */ 'use strict'; @@ -63,11 +64,16 @@ module.exports = function(context) { return { 'CallExpression': function(node) { - if (isRequireCall(node)) { + if (isRequireCall(node) && foundModules.length < requiredModules.length) { var requiredModuleName = getRequiredModuleName(node); if (requiredModuleName) { foundModules.push(requiredModuleName); + } else { + context.report( + node, + 'Module loaded before all required modules loaded.' + ); } } }, @@ -89,11 +95,3 @@ module.exports = function(context) { } }; }; - -module.exports.schema = { - 'type': 'array', - 'additionalItems': { - 'type': 'string' - }, - 'uniqueItems': true -}; From 106b38a2bded925364d803ce83923a483f688b60 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 21 Jul 2016 17:21:57 -0700 Subject: [PATCH 2/2] squash: micro-optimize --- tools/eslint-rules/required-modules.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/eslint-rules/required-modules.js b/tools/eslint-rules/required-modules.js index 0fe2921c2f6780..ad107132159b8d 100644 --- a/tools/eslint-rules/required-modules.js +++ b/tools/eslint-rules/required-modules.js @@ -64,7 +64,7 @@ module.exports = function(context) { return { 'CallExpression': function(node) { - if (isRequireCall(node) && foundModules.length < requiredModules.length) { + if (foundModules.length < requiredModules.length && isRequireCall(node)) { var requiredModuleName = getRequiredModuleName(node); if (requiredModuleName) {