@@ -134,21 +134,19 @@ const getDestructuringLeftAndRight = node => {
134134 return { } ;
135135} ;
136136
137- const fixDestructuring = ( node , source , fixer ) => {
137+ function * fixDestructuring ( node , source , fixer ) {
138138 const { left} = getDestructuringLeftAndRight ( node ) ;
139139 const [ element ] = left . elements ;
140140
141141 const leftText = source . getText ( element . type === 'AssignmentPattern' ? element . left : element ) ;
142- const fixes = [ fixer . replaceText ( left , leftText ) ] ;
142+ yield fixer . replaceText ( left , leftText ) ;
143143
144144 // `AssignmentExpression` always starts with `[` or `(`, so we don't need check ASI
145145 if ( assignmentNeedParenthesize ( node , source ) ) {
146- fixes . push ( fixer . insertTextBefore ( node , '(' ) ) ;
147- fixes . push ( fixer . insertTextAfter ( node , ')' ) ) ;
146+ yield fixer . insertTextBefore ( node , '(' ) ;
147+ yield fixer . insertTextAfter ( node , ')' ) ;
148148 }
149-
150- return fixes ;
151- } ;
149+ }
152150
153151const hasDefaultValue = node => getDestructuringLeftAndRight ( node ) . left . elements [ 0 ] . type === 'AssignmentPattern' ;
154152
@@ -177,17 +175,17 @@ const fixDestructuringAndReplaceFilter = (source, node) => {
177175 { operator : '||' , messageId : SUGGESTION_LOGICAL_OR_OPERATOR }
178176 ] . map ( ( { messageId, operator} ) => ( {
179177 messageId,
180- fix : fixer => [
181- fixer . replaceText ( property , 'find' ) ,
182- fixDestructuringDefaultValue ( node , source , fixer , operator ) ,
183- ... fixDestructuring ( node , source , fixer )
184- ]
178+ * fix ( fixer ) {
179+ yield fixer . replaceText ( property , 'find' ) ;
180+ yield fixDestructuringDefaultValue ( node , source , fixer , operator ) ;
181+ yield * fixDestructuring ( node , source , fixer ) ;
182+ }
185183 } ) ) ;
186184 } else {
187- fix = fixer => [
188- fixer . replaceText ( property , 'find' ) ,
189- ... fixDestructuring ( node , source , fixer )
190- ] ;
185+ fix = function * ( fixer ) {
186+ yield fixer . replaceText ( property , 'find' ) ;
187+ yield * fixDestructuring ( node , source , fixer ) ;
188+ } ;
191189 }
192190
193191 return { fix, suggest} ;
@@ -278,20 +276,16 @@ const create = context => {
278276
279277 // `const [foo = bar] = baz` is not fixable
280278 if ( ! destructuringNodes . some ( node => hasDefaultValue ( node ) ) ) {
281- problem . fix = fixer => {
282- const fixes = [
283- fixer . replaceText ( node . init . callee . property , 'find' )
284- ] ;
279+ problem . fix = function * ( fixer ) {
280+ yield fixer . replaceText ( node . init . callee . property , 'find' ) ;
285281
286282 for ( const node of zeroIndexNodes ) {
287- fixes . push ( fixer . removeRange ( [ node . object . range [ 1 ] , node . range [ 1 ] ] ) ) ;
283+ yield fixer . removeRange ( [ node . object . range [ 1 ] , node . range [ 1 ] ] ) ;
288284 }
289285
290286 for ( const node of destructuringNodes ) {
291- fixes . push ( ... fixDestructuring ( node , source , fixer ) ) ;
287+ yield * fixDestructuring ( node , source , fixer ) ;
292288 }
293-
294- return fixes ;
295289 } ;
296290 }
297291
0 commit comments