@@ -16,7 +16,7 @@ const messages = {
1616 [ MESSAGE_ID_SUGGESTION_DATE ] : 'Switch to `String(new Date())`.' ,
1717} ;
1818
19- function enforceNewExpression ( { node, path : [ name ] } , sourceCode ) {
19+ function enforceNewExpression ( { node, path : [ name ] } , { sourceCode} ) {
2020 if ( name === 'Object' ) {
2121 const { parent} = node ;
2222 if (
@@ -63,7 +63,7 @@ function enforceNewExpression({node, path: [name]}, sourceCode) {
6363 } ;
6464}
6565
66- function enforceCallExpression ( { node, path : [ name ] } , sourceCode ) {
66+ function enforceCallExpression ( { node, path : [ name ] } , { sourceCode} ) {
6767 const problem = {
6868 node,
6969 messageId : 'disallow' ,
@@ -79,28 +79,21 @@ function enforceCallExpression({node, path: [name]}, sourceCode) {
7979 return problem ;
8080}
8181
82+ const newExpressionTracker = new GlobalReferenceTracker ( {
83+ objects : builtins . disallowNew ,
84+ type : GlobalReferenceTracker . CONSTRUCT ,
85+ handle : enforceCallExpression ,
86+ } ) ;
87+ const callExpressionTracker = new GlobalReferenceTracker ( {
88+ objects : builtins . enforceNew ,
89+ type : GlobalReferenceTracker . CALL ,
90+ handle : enforceNewExpression ,
91+ } ) ;
92+
8293/** @param {import('eslint').Rule.RuleContext } context */
8394const create = context => {
84- const { sourceCode} = context ;
85- const newExpressionTracker = new GlobalReferenceTracker ( {
86- objects : builtins . disallowNew ,
87- type : GlobalReferenceTracker . CONSTRUCT ,
88- handle : reference => enforceCallExpression ( reference , sourceCode ) ,
89- } ) ;
90- const callExpressionTracker = new GlobalReferenceTracker ( {
91- objects : builtins . enforceNew ,
92- type : GlobalReferenceTracker . CALL ,
93- handle : reference => enforceNewExpression ( reference , sourceCode ) ,
94- } ) ;
95-
96- return {
97- * 'Program:exit' ( program ) {
98- const scope = sourceCode . getScope ( program ) ;
99-
100- yield * newExpressionTracker . track ( scope ) ;
101- yield * callExpressionTracker . track ( scope ) ;
102- } ,
103- } ;
95+ newExpressionTracker . listen ( { context} ) ;
96+ callExpressionTracker . listen ( { context} ) ;
10497} ;
10598
10699/** @type {import('eslint').Rule.RuleModule } */
0 commit comments