File tree Expand file tree Collapse file tree 1 file changed +18
-6
lines changed Expand file tree Collapse file tree 1 file changed +18
-6
lines changed Original file line number Diff line number Diff line change 55'use strict'
66
77const utils = require ( '../utils' )
8- const Traverser = require ( 'eslint/lib/util/traverser' )
8+ const traverseNodes = require ( 'vue- eslint-parser' ) . AST . traverseNodes
99
1010const defaultOrder = [
1111 'el' ,
@@ -93,9 +93,14 @@ const LOGICAL_OPERATORS = ['&&', '||']
9393 */
9494function isNotSideEffectsNode ( node , visitorKeys ) {
9595 let result = true
96- new Traverser ( ) . traverse ( node , {
96+ const noSideEffectsNodes = new Set ( )
97+ traverseNodes ( node , {
9798 visitorKeys,
98- enter ( node , parent ) {
99+ enterNode ( node , parent ) {
100+ if ( ! result || noSideEffectsNodes . has ( node ) ) {
101+ return
102+ }
103+
99104 if (
100105 node . type === 'FunctionExpression' ||
101106 node . type === 'Identifier' ||
@@ -105,7 +110,14 @@ function isNotSideEffectsNode (node, visitorKeys) {
105110 node . type === 'TemplateElement'
106111 ) {
107112 // no side effects node
108- this . skip ( )
113+ noSideEffectsNodes . add ( node )
114+ traverseNodes ( node , {
115+ visitorKeys,
116+ enterNode ( node ) {
117+ noSideEffectsNodes . add ( node )
118+ } ,
119+ leaveNode ( ) { }
120+ } )
109121 } else if (
110122 node . type !== 'Property' &&
111123 node . type !== 'ObjectExpression' &&
@@ -121,9 +133,9 @@ function isNotSideEffectsNode (node, visitorKeys) {
121133 ) {
122134 // Can not be sure that a node has no side effects
123135 result = false
124- this . break ( )
125136 }
126- }
137+ } ,
138+ leaveNode ( ) { }
127139 } )
128140 return result
129141}
You can’t perform that action at this time.
0 commit comments