11'use strict' ;
22
3- function isAssert ( node ) {
4- return node . expression &&
5- node . expression . type === 'CallExpression' &&
6- node . expression . callee &&
7- node . expression . callee . name === 'assert' ;
8- }
9-
10- function getFirstArg ( expression ) {
11- return expression . arguments && expression . arguments [ 0 ] ;
12- }
3+ const astSelector = 'ExpressionStatement[expression.type="CallExpression"]' +
4+ '[expression.callee.name="assert"]' +
5+ '[expression.arguments.0.type="BinaryExpression"]' ;
136
147function parseError ( method , op ) {
158 return `'assert.${ method } ' should be used instead of '${ op } '` ;
@@ -24,15 +17,11 @@ const preferedAssertMethod = {
2417
2518module . exports = function ( context ) {
2619 return {
27- ExpressionStatement ( node ) {
28- if ( isAssert ( node ) ) {
29- const arg = getFirstArg ( node . expression ) ;
30- if ( arg && arg . type === 'BinaryExpression' ) {
31- const assertMethod = preferedAssertMethod [ arg . operator ] ;
32- if ( assertMethod ) {
33- context . report ( node , parseError ( assertMethod , arg . operator ) ) ;
34- }
35- }
20+ [ astSelector ] : function ( node ) {
21+ const arg = node . expression . arguments [ 0 ] ;
22+ const assertMethod = preferedAssertMethod [ arg . operator ] ;
23+ if ( assertMethod ) {
24+ context . report ( node , parseError ( assertMethod , arg . operator ) ) ;
3625 }
3726 }
3827 } ;
0 commit comments