Skip to content

Commit 308cb54

Browse files
fix: check pattern that CallExpression's arguments include CallExpression (#1600)
1 parent 45218f7 commit 308cb54

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

lib/rules/no-use-computed-property-like-method.js

+3
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,9 @@ module.exports = {
228228

229229
if (node.parent.type !== 'MemberExpression') return
230230
if (node.parent.property.type !== 'Identifier') return
231+
if (node.parent.parent.type !== 'CallExpression') return
232+
if (node.parent.parent.callee.type !== 'MemberExpression') return
233+
if (!Object.is(node.parent.parent.callee, node.parent)) return
231234

232235
const thisMember = node.parent.property.name
233236

tests/lib/rules/no-use-computed-property-like-method.js

+64
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,26 @@ tester.run('no-use-computed-property-like-method', rule, {
418418
}
419419
</script>
420420
`
421+
},
422+
{
423+
filename: 'test.vue',
424+
code: `
425+
<script>
426+
export default {
427+
computed: {
428+
computedReturnArray() {
429+
return [1,2,3,4,5]
430+
},
431+
computedReturnArray2() {
432+
return [1,2,3,4,5]
433+
},
434+
computedReturnComputedReturnString() {
435+
return this.computedReturnArray.map(() => this.computedReturnArray2)
436+
}
437+
}
438+
}
439+
</script>
440+
`
421441
}
422442
],
423443
invalid: [
@@ -698,6 +718,50 @@ tester.run('no-use-computed-property-like-method', rule, {
698718
errors: [
699719
'Use this.computedReturnNothing instead of this.computedReturnNothing().'
700720
]
721+
},
722+
{
723+
filename: 'test.vue',
724+
code: `
725+
<script>
726+
export default {
727+
computed: {
728+
computedReturnString() {
729+
return 'computedReturnString'
730+
},
731+
computedReturnComputedReturnString() {
732+
return this.computedReturnString()
733+
}
734+
}
735+
}
736+
</script>
737+
`,
738+
errors: [
739+
'Use this.computedReturnString instead of this.computedReturnString().'
740+
]
741+
},
742+
{
743+
filename: 'test.vue',
744+
code: `
745+
<script>
746+
export default {
747+
computed: {
748+
computedReturnArray() {
749+
return [1,2,3,4,5]
750+
},
751+
computedReturnArray2() {
752+
return [1,2,3,4,5]
753+
},
754+
computedReturnComputedReturnString() {
755+
return this.computedReturnArray.map([...this.computedReturnArray(), ...this.computedReturnArray2()])
756+
}
757+
}
758+
}
759+
</script>
760+
`,
761+
errors: [
762+
'Use this.computedReturnArray instead of this.computedReturnArray().',
763+
'Use this.computedReturnArray2 instead of this.computedReturnArray2().'
764+
]
701765
}
702766
]
703767
})

0 commit comments

Comments
 (0)