Skip to content

Commit a00367a

Browse files
committed
refactor: optimize code
1 parent c2be9f1 commit a00367a

File tree

1 file changed

+30
-27
lines changed

1 file changed

+30
-27
lines changed

lib/rules/no-ref-as-operand.js

+30-27
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,16 @@ module.exports = {
101101
})
102102
}
103103

104+
/**
105+
* @param {CallExpression} node
106+
*/
107+
function reportWrappedIdentifiers(node) {
108+
const nodes = node.arguments.filter((node) => node.type === 'Identifier')
109+
for (const node of nodes) {
110+
reportIfRefWrapped(node)
111+
}
112+
}
113+
104114
const programNode = context.getSourceCode().ast
105115

106116
const callVisitor = {
@@ -117,35 +127,27 @@ module.exports = {
117127

118128
// verify setup context
119129
const setupContext = setupContexts.get(info ? info.node : programNode)
120-
if (setupContext) {
121-
const { contextReferenceIds, emitReferenceIds } = setupContext
130+
if (!setupContext) {
131+
return
132+
}
133+
134+
const { contextReferenceIds, emitReferenceIds } = setupContext
135+
if (
136+
node.callee.type === 'Identifier' &&
137+
emitReferenceIds.has(node.callee)
138+
) {
139+
// verify setup(props,{emit}) {emit()}
140+
reportWrappedIdentifiers(node)
141+
} else {
142+
const emit = getCalleeMemberNode(node)
122143
if (
123-
node.callee.type === 'Identifier' &&
124-
emitReferenceIds.has(node.callee)
144+
emit &&
145+
emit.name === 'emit' &&
146+
emit.member.object.type === 'Identifier' &&
147+
contextReferenceIds.has(emit.member.object)
125148
) {
126-
// verify setup(props,{emit}) {emit()}
127-
const nodes = node.arguments.filter(
128-
(node) => node.type === 'Identifier'
129-
)
130-
for (const node of nodes) {
131-
reportIfRefWrapped(node)
132-
}
133-
} else {
134-
const emit = getCalleeMemberNode(node)
135-
if (
136-
emit &&
137-
emit.name === 'emit' &&
138-
emit.member.object.type === 'Identifier' &&
139-
contextReferenceIds.has(emit.member.object)
140-
) {
141-
// verify setup(props,context) {context.emit()}
142-
const nodes = node.arguments.filter(
143-
(node) => node.type === 'Identifier'
144-
)
145-
for (const node of nodes) {
146-
reportIfRefWrapped(node)
147-
}
148-
}
149+
// verify setup(props,context) {context.emit()}
150+
reportWrappedIdentifiers(node)
149151
}
150152
}
151153
}
@@ -285,6 +287,7 @@ module.exports = {
285287
// cannot check
286288
return
287289
}
290+
288291
const contextReferenceIds = new Set()
289292
const emitReferenceIds = new Set()
290293
if (contextParam.type === 'ObjectPattern') {

0 commit comments

Comments
 (0)