File tree Expand file tree Collapse file tree 2 files changed +53
-6
lines changed Expand file tree Collapse file tree 2 files changed +53
-6
lines changed Original file line number Diff line number Diff line change @@ -315,6 +315,13 @@ function postprocessMessages
315315 return true ;
316316 }
317317
318+ function adjustFixRange ( fix , eslintEnvInfos )
319+ {
320+ const range = convertToOriginalRange ( fix . range , eslintEnvInfos ) ;
321+ if ( range ) fix . range = range ;
322+ return range ;
323+ }
324+
318325 const postprocessedMessages = [ ] ;
319326 for ( const message of messages )
320327 {
@@ -342,14 +349,20 @@ function postprocessMessages
342349 adjustLocation ( message , 'endLine' , 'endColumn' )
343350 )
344351 {
345- const { fix } = message ;
346- if ( fix )
352+ const { fix, suggestions } = message ;
353+ if ( fix && ! adjustFixRange ( fix , eslintEnvInfos ) ) delete message . fix ;
354+ if ( suggestions )
347355 {
348- const range = convertToOriginalRange ( fix . range , eslintEnvInfos ) ;
349- if ( range )
350- fix . range = range ;
356+ const processedSuggestions = [ ] ;
357+ for ( const suggestion of suggestions )
358+ {
359+ if ( adjustFixRange ( suggestion . fix , eslintEnvInfos ) )
360+ processedSuggestions . push ( suggestion ) ;
361+ }
362+ if ( processedSuggestions . length )
363+ message . suggestions = processedSuggestions ;
351364 else
352- delete message . fix ;
365+ delete message . suggestions ;
353366 }
354367 postprocessedMessages . push ( message ) ;
355368 }
Original file line number Diff line number Diff line change @@ -724,5 +724,39 @@ describe
724724 ) ;
725725
726726 // #endregion
727+
728+ // #region Suggestions
729+
730+ it
731+ (
732+ 'adjusts suggestion locations' ,
733+ ( ) =>
734+ {
735+ const code = '/* eslint-env jquery */ !a in b' ;
736+ const config = { rules : { 'no-unsafe-negation' : 'error' } } ;
737+ const lintMessages = verifyWithProcessor ( code , config ) ;
738+ assert . equal ( lintMessages . length , 1 ) ;
739+ assert . equal ( lintMessages [ 0 ] . ruleId , 'no-unsafe-negation' ) ;
740+ assert . equal ( lintMessages [ 0 ] . suggestions . length , 2 ) ;
741+ assert . deepEqual ( lintMessages [ 0 ] . suggestions [ 0 ] . fix . range , [ 25 , 31 ] ) ;
742+ assert . deepEqual ( lintMessages [ 0 ] . suggestions [ 1 ] . fix . range , [ 24 , 26 ] ) ;
743+ } ,
744+ ) ;
745+
746+ it
747+ (
748+ 'suppresses suggestions' ,
749+ ( ) =>
750+ {
751+ const code = 'foo /* eslint-env jquery */ .isPrototypeOf(bar);' ;
752+ const config = { rules : { 'no-prototype-builtins' : 'error' } } ;
753+ const lintMessages = verifyWithProcessor ( code , config ) ;
754+ assert . equal ( lintMessages . length , 1 ) ;
755+ assert . equal ( lintMessages [ 0 ] . ruleId , 'no-prototype-builtins' ) ;
756+ assert . equal ( lintMessages [ 0 ] . suggestions , undefined ) ;
757+ } ,
758+ ) ;
759+
760+ // #endregion
727761 } ,
728762) ;
You can’t perform that action at this time.
0 commit comments