@@ -214,7 +214,8 @@ export default createTestingLibraryRule<Options, MessageIds>({
214214 return ;
215215 }
216216
217- getSideEffectNodes ( node . body ) . forEach ( ( sideEffectNode ) =>
217+ const sideEffects = getSideEffectNodes ( node . body ) ;
218+ sideEffects . forEach ( ( sideEffectNode ) =>
218219 context . report ( {
219220 node : sideEffectNode ,
220221 messageId : 'noSideEffectsWaitFor' ,
@@ -223,11 +224,31 @@ export default createTestingLibraryRule<Options, MessageIds>({
223224 const targetNode = isAwaitExpression ( callExpressionNode . parent )
224225 ? callExpressionNode . parent
225226 : callExpressionNode ;
226- const lines = sourceCode . getText ( ) . split ( '\n' ) ;
227227
228+ const lines = sourceCode . getText ( ) . split ( '\n' ) ;
228229 const line = lines [ targetNode . loc . start . line - 1 ] ;
229-
230230 const indent = line . match ( / ^ \s * / ) ?. [ 0 ] ?? '' ;
231+ const sideEffectLines = lines . slice (
232+ sideEffectNode . loc . start . line - 1 ,
233+ sideEffectNode . loc . end . line
234+ ) ;
235+ const sideEffectNodeText = sideEffectLines . join ( '\n' ) . trimStart ( ) ;
236+ if (
237+ sideEffects . length === node . body . length &&
238+ sideEffects . length === 1
239+ ) {
240+ const tokenAfter = sourceCode . getTokenAfter ( targetNode ) ;
241+ return [
242+ fixer . insertTextBefore ( targetNode , sideEffectNodeText ) ,
243+ tokenAfter ?. value === ';'
244+ ? fixer . removeRange ( [
245+ targetNode . range [ 0 ] ,
246+ tokenAfter . range [ 1 ] ,
247+ ] )
248+ : fixer . remove ( targetNode ) ,
249+ ] ;
250+ }
251+
231252 const lineStart = sourceCode . getIndexFromLoc ( {
232253 line : sideEffectNode . loc . start . line ,
233254 column : 0 ,
@@ -237,15 +258,10 @@ export default createTestingLibraryRule<Options, MessageIds>({
237258 column : 0 ,
238259 } ) ;
239260
240- const sideEffectLines = lines . slice (
241- sideEffectNode . loc . start . line - 1 ,
242- sideEffectNode . loc . end . line
243- ) ;
244- const sideEffectNodeText = sideEffectLines . join ( '\n' ) ;
245261 return [
246262 fixer . insertTextBefore (
247263 targetNode ,
248- sideEffectNodeText . trimStart ( ) + '\n' + indent
264+ sideEffectNodeText + '\n' + indent
249265 ) ,
250266 fixer . removeRange ( [ lineStart , lineEnd ] ) ,
251267 ] ;
0 commit comments