File tree Expand file tree Collapse file tree 7 files changed +16
-57
lines changed Expand file tree Collapse file tree 7 files changed +16
-57
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,4 @@ const {
1313
1414exports . isMethod = ( node , name ) => "callee" in node && node . callee . type === MEMBER_EXPRESSION && node . callee . property . name === name ;
1515
16- exports . getParent = ( node ) => node . callee . object ;
17-
1816exports . isOnObject = ( node , name ) => "object" in node . callee && node . callee . object . type === IDENTIFIER && node . callee . object . name === name ;
Original file line number Diff line number Diff line change 77exports . MEMBER_EXPRESSION = "MemberExpression" ;
88exports . ARROW_FUNCTION_EXPRESSION = "ArrowFunctionExpression" ;
99exports . IDENTIFIER = "Identifier" ;
10- exports . SPREAD_ELEMENT = "SpreadElement" ;
Original file line number Diff line number Diff line change 44 */
55"use strict" ;
66
7- const {
8- isMethod,
9- getParent
10- } = require ( "../lib/helpers/call-expression" ) ,
7+ const { isMethod } = require ( "../lib/helpers/call-expression" ) ,
118
129 REPLACEMENTS = {
1310 indexOf : "lastIndexOf" ,
@@ -27,16 +24,12 @@ module.exports = {
2724 } ,
2825 create ( context ) {
2926 return {
30- "CallExpression:exit" ( node ) {
27+ 'CallExpression[callee.type="MemberExpression"] > MemberExpression > CallExpression[callee.property.name="reverse"]' ( node ) {
28+ const parent = node ;
29+ node = parent . parent . parent ;
3130 if ( Object . keys ( REPLACEMENTS ) . every ( ( m ) => ! isMethod ( node , m ) ) ) {
3231 return ;
3332 }
34-
35- const parent = getParent ( node ) ;
36- if ( ! isMethod ( parent , 'reverse' ) ) {
37- return ;
38- }
39-
4033 const reversed = REPLACEMENTS [ node . callee . property . name ] ;
4134
4235 context . report ( {
Original file line number Diff line number Diff line change 44 */
55"use strict" ;
66
7- const {
8- isMethod,
9- getParent,
10- isOnObject
11- } = require ( "../lib/helpers/call-expression" ) ,
12- { ARROW_FUNCTION_EXPRESSION } = require ( "../lib/type" ) ;
7+ const { ARROW_FUNCTION_EXPRESSION } = require ( "../lib/type" ) ;
138
149module . exports = {
1510 meta : {
@@ -22,16 +17,10 @@ module.exports = {
2217 } ,
2318 create ( context ) {
2419 return {
25- "CallExpression:exit" ( node ) {
26- if ( ! isMethod ( node , "map" ) ) {
27- return ;
28- }
29- const { callee } = node ,
30- parent = getParent ( node ) ;
31-
32- if ( ! isMethod ( parent , "from" ) || ! isOnObject ( parent , "Array" ) ) {
33- return ;
34- }
20+ 'CallExpression[callee.type="MemberExpression"] > MemberExpression[property.name="map"] > CallExpression[callee.type="MemberExpression"][callee.property.name="from"][callee.object.type="Identifier"][callee.object.name="Array"]' ( node ) {
21+ const parent = node ,
22+ callee = node . parent ;
23+ node = callee . parent ;
3524
3625 context . report ( {
3726 node : callee . property ,
Original file line number Diff line number Diff line change 44 */
55"use strict" ;
66
7- const { SPREAD_ELEMENT } = require ( "../lib/type" ) ,
8-
9- SINGLE_ELEMENT = 1 ,
10- firstElement = ( arr ) => {
11- const [ el ] = arr ;
12- return el ;
13- } ;
7+ const firstElement = ( arr ) => {
8+ const [ el ] = arr ;
9+ return el ;
10+ } ;
1411
1512module . exports = {
1613 meta : {
@@ -23,13 +20,10 @@ module.exports = {
2320 } ,
2421 create ( context ) {
2522 return {
26- "ArrayExpression:exit" ( node ) {
27- if ( node . elements . length !== SINGLE_ELEMENT || firstElement ( node . elements ) . type !== SPREAD_ELEMENT ) {
28- return ;
29- }
23+ "ArrayExpression > SpreadElement:first-child:last-child" ( node ) {
24+ node = node . parent ;
3025 context . report ( {
3126 node,
32- loc : node . loc ,
3327 message : "Use Array.from to convert from iterable to array" ,
3428 fix ( fixer ) {
3529 const sourceCode = context . getSourceCode ( ) ;
Original file line number Diff line number Diff line change 11import test from 'ava' ;
22import {
3- isMethod , getParent , isOnObject
3+ isMethod , isOnObject
44} from '../lib/helpers/call-expression' ;
55import {
66 MEMBER_EXPRESSION , IDENTIFIER
@@ -39,15 +39,6 @@ test('not is method', (t) => {
3939 } ) ) ;
4040} ) ;
4141
42- test ( 'get parent' , ( t ) => {
43- const parent = 'foo' ;
44- t . is ( getParent ( {
45- callee : {
46- object : parent
47- }
48- } ) , parent ) ;
49- } ) ;
50-
5142test ( 'is on object' , ( t ) => {
5243 const name = 'test' ;
5344 t . true ( isOnObject ( {
Original file line number Diff line number Diff line change 11import test from 'ava' ;
22import {
3- SPREAD_ELEMENT ,
43 ARROW_FUNCTION_EXPRESSION ,
54 MEMBER_EXPRESSION ,
65 IDENTIFIER
76} from '../lib/type' ;
87
9- test ( 'Spread element' , ( t ) => {
10- t . is ( SPREAD_ELEMENT , "SpreadElement" ) ;
11- } ) ;
12-
138test ( 'Arrow function expression' , ( t ) => {
149 t . is ( ARROW_FUNCTION_EXPRESSION , "ArrowFunctionExpression" ) ;
1510} ) ;
You can’t perform that action at this time.
0 commit comments