mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-06 20:14:01 -06:00
Merge pull request #21397 from amcasey/PortGh20559
Port extract symbol fix to 2.7
This commit is contained in:
commit
3214ab380c
@ -365,6 +365,58 @@ switch (x) {
|
||||
refactor.extractSymbol.Messages.cannotExtractRange.message
|
||||
]);
|
||||
|
||||
testExtractRangeFailed("extractRangeFailed14",
|
||||
`
|
||||
switch(1) {
|
||||
case [#|1:
|
||||
break;|]
|
||||
}
|
||||
`,
|
||||
[
|
||||
refactor.extractSymbol.Messages.cannotExtractRange.message
|
||||
]);
|
||||
|
||||
testExtractRangeFailed("extractRangeFailed15",
|
||||
`
|
||||
switch(1) {
|
||||
case [#|1:
|
||||
break|];
|
||||
}
|
||||
`,
|
||||
[
|
||||
refactor.extractSymbol.Messages.cannotExtractRange.message
|
||||
]);
|
||||
|
||||
// Documentation only - it would be nice if the result were [$|1|]
|
||||
testExtractRangeFailed("extractRangeFailed16",
|
||||
`
|
||||
switch(1) {
|
||||
[#|case 1|]:
|
||||
break;
|
||||
}
|
||||
`,
|
||||
[
|
||||
refactor.extractSymbol.Messages.cannotExtractRange.message
|
||||
]);
|
||||
|
||||
// Documentation only - it would be nice if the result were [$|1|]
|
||||
testExtractRangeFailed("extractRangeFailed17",
|
||||
`
|
||||
switch(1) {
|
||||
[#|case 1:|]
|
||||
break;
|
||||
}
|
||||
`,
|
||||
[
|
||||
refactor.extractSymbol.Messages.cannotExtractRange.message
|
||||
]);
|
||||
|
||||
testExtractRangeFailed("extractRangeFailed18",
|
||||
`[#|{ 1;|] }`,
|
||||
[
|
||||
refactor.extractSymbol.Messages.cannotExtractRange.message
|
||||
]);
|
||||
|
||||
testExtractRangeFailed("extract-method-not-for-token-expression-statement", `[#|a|]`, [refactor.extractSymbol.Messages.cannotExtractIdentifier.message]);
|
||||
});
|
||||
}
|
||||
@ -235,6 +235,16 @@ namespace ts.refactor.extractSymbol {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!statements.length) {
|
||||
// https://github.com/Microsoft/TypeScript/issues/20559
|
||||
// Ranges like [|case 1: break;|] will fail to populate `statements` because
|
||||
// they will never find `start` in `start.parent.statements`.
|
||||
// Consider: We could support ranges like [|case 1:|] by refining them to just
|
||||
// the expression.
|
||||
return { errors: [createFileDiagnostic(sourceFile, span.start, length, Messages.cannotExtractRange)] };
|
||||
}
|
||||
|
||||
return { targetRange: { range: statements, facts: rangeFacts, declarations } };
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user