nl_tokens: same could potentially be applied to FunctionDeclaration
pl_tokens: function inspectCallExpression ( emitted ) { let <mask> = emitted . node , callArgs = node . arguments ; if ( emitted . exit ) { return ; } let nodeCode = sourceCode . getText ( node ) ; //for a 0-argument call, ensure that name is followed by '()' if ( ! callArgs . length ) { for ( let i = nodeCode . length ; i > 0 ; i -- ) { if ( nodeCode [ i ] === ")" && nodeCode [ i - 1 ] === "(" ) { return ; } if ( / [\s\(\)] / . test ( nodeCode [ i ] ) ) { break ; } } return context . report ( { node : node , message : "\"" + nodeCode + "\": " + "A call without arguments should have brackets without any whitespace between them, like 'functionName ()'." } ) ; } let lastCallArg = callArgs . slice ( - 1 ) [ 0 ] ; //if call spans over multiple lines (due to too many arguments), below rules don't apply if ( sourceCode . getLine ( node ) !== sourceCode . getEndingLine ( lastCallArg ) ) { return ; } let charBeforeFirstArg = sourceCode . getPrevChar ( callArgs [ 0 ] ) , charAfterLastCallArg = sourceCode . getNextChar ( lastCallArg ) ; ( callArgs [ 0 ] . type !== "NameValueAssignment" && charBeforeFirstArg !== "(" ) && context . report ( { node : callArgs [ 0 ] , location : { column : sourceCode . getColumn ( callArgs [ 0 ] ) - 1 } , message : "'" + node . callee . name + "': The first argument must not be preceded by any whitespace or comments (only '(')." } ) ; ( lastCallArg . type !== "NameValueAssignment" && charAfterLastCallArg !== ")" ) && context . report ( { node : callArgs [ 0 ] , location : { column : sourceCode . getEndingColumn ( lastCallArg ) + 1 } , message : "'" + node . callee . name + "': The last argument must not be succeeded by any whitespace or comments (only ')')." } ) ; }