@@ -73,37 +73,33 @@ const rule: Rule.RuleModule = {
7373 context . report ( {
7474 message : formatMessage ( last , returnedIdentifier . name ) ,
7575 node : declaredIdentifier . init ,
76- fix : fixer => fix ( fixer , last , lastButOne , declaredIdentifier . init ) ,
76+ fix : fixer =>
77+ fix ( fixer , last , lastButOne , declaredIdentifier . init , returnedIdentifier ) ,
7778 } ) ;
7879 }
7980 }
8081 }
8182 }
8283
84+ // eslint-disable-next-line max-params
8385 function fix (
8486 fixer : TSESLint . RuleFixer ,
8587 last : TSESTree . Statement ,
8688 lastButOne : TSESTree . Statement ,
87- expression : TSESTree . Expression ,
89+ expressionToReturn : TSESTree . Expression ,
90+ returnedExpression : TSESTree . Expression ,
8891 ) : any {
89- const throwOrReturnKeyword = context . getSourceCode ( ) . getFirstToken ( last ) ;
90-
91- if ( lastButOne . range && last . range && throwOrReturnKeyword ) {
92- const expressionText = context . getSourceCode ( ) . getText ( expression ) ;
93- const fixedRangeStart = lastButOne . range [ 0 ] ;
94- const fixedRangeEnd = last . range [ 1 ] ;
95- const semicolonToken = context . getSourceCode ( ) . getLastToken ( last ) ;
96- const semicolon = semicolonToken && semicolonToken . value === ';' ? ';' : '' ;
97- return [
98- fixer . removeRange ( [ fixedRangeStart , fixedRangeEnd ] ) ,
99- fixer . insertTextAfterRange (
100- [ 1 , fixedRangeStart ] ,
101- `${ throwOrReturnKeyword . value } ${ expressionText } ${ semicolon } ` ,
102- ) ,
103- ] ;
104- } else {
105- return null ;
106- }
92+ const expressionText = context . getSourceCode ( ) . getText ( expressionToReturn ) ;
93+ const rangeToRemoveStart = lastButOne . range [ 0 ] ;
94+ const commentsBetweenStatements = context . getSourceCode ( ) . getCommentsAfter ( lastButOne ) ;
95+ const rangeToRemoveEnd =
96+ commentsBetweenStatements . length > 0
97+ ? commentsBetweenStatements [ 0 ] . range [ 0 ]
98+ : last . range [ 0 ] ;
99+ return [
100+ fixer . removeRange ( [ rangeToRemoveStart , rangeToRemoveEnd ] ) ,
101+ fixer . replaceText ( returnedExpression , expressionText ) ,
102+ ] ;
107103 }
108104
109105 function getOnlyReturnedVariable ( node : TSESTree . Statement ) {
0 commit comments