Skip to content

Commit 082c03d

Browse files
fiskermysticatea
authored andcommitted
fix: remove eslint internal traverser (vuejs#910)
1 parent 4ff3c8a commit 082c03d

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

lib/rules/order-in-components.js

+18-6
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
'use strict'
66

77
const utils = require('../utils')
8-
const Traverser = require('eslint/lib/util/traverser')
8+
const traverseNodes = require('vue-eslint-parser').AST.traverseNodes
99

1010
const defaultOrder = [
1111
'el',
@@ -93,9 +93,14 @@ const LOGICAL_OPERATORS = ['&&', '||']
9393
*/
9494
function 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
}

0 commit comments

Comments
 (0)