File tree 2 files changed +62
-0
lines changed
2 files changed +62
-0
lines changed Original file line number Diff line number Diff line change @@ -365,6 +365,58 @@ switch (x) {
365
365
refactor . extractSymbol . Messages . cannotExtractRange . message
366
366
] ) ;
367
367
368
+ testExtractRangeFailed ( "extractRangeFailed14" ,
369
+ `
370
+ switch(1) {
371
+ case [#|1:
372
+ break;|]
373
+ }
374
+ ` ,
375
+ [
376
+ refactor . extractSymbol . Messages . cannotExtractRange . message
377
+ ] ) ;
378
+
379
+ testExtractRangeFailed ( "extractRangeFailed15" ,
380
+ `
381
+ switch(1) {
382
+ case [#|1:
383
+ break|];
384
+ }
385
+ ` ,
386
+ [
387
+ refactor . extractSymbol . Messages . cannotExtractRange . message
388
+ ] ) ;
389
+
390
+ // Documentation only - it would be nice if the result were [$|1|]
391
+ testExtractRangeFailed ( "extractRangeFailed16" ,
392
+ `
393
+ switch(1) {
394
+ [#|case 1|]:
395
+ break;
396
+ }
397
+ ` ,
398
+ [
399
+ refactor . extractSymbol . Messages . cannotExtractRange . message
400
+ ] ) ;
401
+
402
+ // Documentation only - it would be nice if the result were [$|1|]
403
+ testExtractRangeFailed ( "extractRangeFailed17" ,
404
+ `
405
+ switch(1) {
406
+ [#|case 1:|]
407
+ break;
408
+ }
409
+ ` ,
410
+ [
411
+ refactor . extractSymbol . Messages . cannotExtractRange . message
412
+ ] ) ;
413
+
414
+ testExtractRangeFailed ( "extractRangeFailed18" ,
415
+ `[#|{ 1;|] }` ,
416
+ [
417
+ refactor . extractSymbol . Messages . cannotExtractRange . message
418
+ ] ) ;
419
+
368
420
testExtractRangeFailed ( "extract-method-not-for-token-expression-statement" , `[#|a|]` , [ refactor . extractSymbol . Messages . cannotExtractIdentifier . message ] ) ;
369
421
} ) ;
370
422
}
Original file line number Diff line number Diff line change @@ -235,6 +235,16 @@ namespace ts.refactor.extractSymbol {
235
235
break ;
236
236
}
237
237
}
238
+
239
+ if ( ! statements . length ) {
240
+ // https://github.com/Microsoft/TypeScript/issues/20559
241
+ // Ranges like [|case 1: break;|] will fail to populate `statements` because
242
+ // they will never find `start` in `start.parent.statements`.
243
+ // Consider: We could support ranges like [|case 1:|] by refining them to just
244
+ // the expression.
245
+ return { errors : [ createFileDiagnostic ( sourceFile , span . start , length , Messages . cannotExtractRange ) ] } ;
246
+ }
247
+
238
248
return { targetRange : { range : statements , facts : rangeFacts , declarations } } ;
239
249
}
240
250
You can’t perform that action at this time.
0 commit comments