nl_tokens: function params ( if on multiple lines )
pl_tokens: function inspectFunctionDeclaration ( emitted ) { let node = emitted . node , params = node . params || [ ] ; let startLine = sourceCode . getLine ( node ) , lastArgLine = params . length ? sourceCode . getEndingLine ( params . slice ( - 1 ) [ 0 ] ) : startLine , functionDeclarationLineText , currentIndent , currentIndentLevel ; function inspectParam ( paramIndent , paramIndentDesc , param ) { let indentRegExp = new RegExp ( "^" + paramIndent + "[^\\s(\/\*)]" ) , paramLineText = sourceCode . getTextOnLine ( sourceCode . getLine ( param ) ) ; //parameter declaration must be preceded by only correct level of indentation & no comments ! indentRegExp . test ( paramLineText ) && context . report ( { node : param , message : ` ${ paramIndentDesc } ` } ) ; } // If declaration args start & end on same line, exit now if ( emitted . exit || startLine === lastArgLine ) { return ; } functionDeclarationLineText = sourceCode . getTextOnLine ( startLine ) ; currentIndent = functionDeclarationLineText . slice ( 0 , functionDeclarationLineText . indexOf ( functionDeclarationLineText . trim ( ) ) ) ; currentIndentLevel = ( currentIndent . match ( BASE_INDENTATION_STYLE_REGEXP_GLOBAL ) || [ ] ) . <mask> ; //ensure that there is only whitespace of correct level on the line containing parameter if ( getIndentString ( BASE_INDENTATION_STYLE , currentIndentLevel ) !== currentIndent ) { return ; //exit now, we can' proceed further unless this is fixed } const paramIndent = getIndentString ( BASE_INDENTATION_STYLE , currentIndentLevel + 1 ) ; const paramIndentDesc = getIndentDescription ( BASE_INDENTATION_STYLE , currentIndentLevel + 1 ) ; params . forEach ( inspectParam . bind ( null , paramIndent , paramIndentDesc ) ) ; }