File tree 1 file changed +18
-6
lines changed
1 file changed +18
-6
lines changed Original file line number Diff line number Diff line change 5
5
'use strict'
6
6
7
7
const utils = require ( '../utils' )
8
- const Traverser = require ( 'eslint/lib/util/traverser' )
8
+ const traverseNodes = require ( 'vue- eslint-parser' ) . AST . traverseNodes
9
9
10
10
const defaultOrder = [
11
11
'el' ,
@@ -93,9 +93,14 @@ const LOGICAL_OPERATORS = ['&&', '||']
93
93
*/
94
94
function isNotSideEffectsNode ( node , visitorKeys ) {
95
95
let result = true
96
- new Traverser ( ) . traverse ( node , {
96
+ const noSideEffectsNodes = new Set ( )
97
+ traverseNodes ( node , {
97
98
visitorKeys,
98
- enter ( node , parent ) {
99
+ enterNode ( node , parent ) {
100
+ if ( ! result || noSideEffectsNodes . has ( node ) ) {
101
+ return
102
+ }
103
+
99
104
if (
100
105
node . type === 'FunctionExpression' ||
101
106
node . type === 'Identifier' ||
@@ -105,7 +110,14 @@ function isNotSideEffectsNode (node, visitorKeys) {
105
110
node . type === 'TemplateElement'
106
111
) {
107
112
// 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
+ } )
109
121
} else if (
110
122
node . type !== 'Property' &&
111
123
node . type !== 'ObjectExpression' &&
@@ -121,9 +133,9 @@ function isNotSideEffectsNode (node, visitorKeys) {
121
133
) {
122
134
// Can not be sure that a node has no side effects
123
135
result = false
124
- this . break ( )
125
136
}
126
- }
137
+ } ,
138
+ leaveNode ( ) { }
127
139
} )
128
140
return result
129
141
}
You can’t perform that action at this time.
0 commit comments