Skip to content

Commit 2f8832c

Browse files
authored
Merge pull request #33469 from amcasey/gh33332
Make extractSymbol explicitly drop JSDoc nodes
2 parents 800eaed + f10e38f commit 2f8832c

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

src/compiler/utilities.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,8 @@ namespace ts {
975975
return getSpanOfTokenAtPosition(sourceFile, node.pos);
976976
}
977977

978+
Debug.assert(!isJSDoc(errorNode));
979+
978980
const isMissing = nodeIsMissing(errorNode);
979981
const pos = isMissing || isJsxText(node)
980982
? errorNode.pos

src/services/refactors/extractSymbol.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ namespace ts.refactor.extractSymbol {
116116
export const cannotExtractRange: DiagnosticMessage = createMessage("Cannot extract range.");
117117
export const cannotExtractImport: DiagnosticMessage = createMessage("Cannot extract import statement.");
118118
export const cannotExtractSuper: DiagnosticMessage = createMessage("Cannot extract super call.");
119+
export const cannotExtractJSDoc: DiagnosticMessage = createMessage("Cannot extract JSDoc.");
119120
export const cannotExtractEmpty: DiagnosticMessage = createMessage("Cannot extract empty range.");
120121
export const expressionExpected: DiagnosticMessage = createMessage("expression expected.");
121122
export const uselessConstantType: DiagnosticMessage = createMessage("No reason to extract constant of type.");
@@ -246,6 +247,10 @@ namespace ts.refactor.extractSymbol {
246247
return { targetRange: { range: statements, facts: rangeFacts, declarations } };
247248
}
248249

250+
if (isJSDoc(start)) {
251+
return { errors: [createFileDiagnostic(sourceFile, span.start, length, Messages.cannotExtractJSDoc)] };
252+
}
253+
249254
if (isReturnStatement(start) && !start.expression) {
250255
// Makes no sense to extract an expression-less return statement.
251256
return { errors: [createFileDiagnostic(sourceFile, span.start, length, Messages.cannotExtractRange)] };

src/testRunner/unittests/services/extract/ranges.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,10 @@ switch (x) {
380380
`[#|{ 1;|] }`,
381381
[refactor.extractSymbol.Messages.cannotExtractRange.message]);
382382

383+
testExtractRangeFailed("extractRangeFailed19",
384+
`[#|/** @type {number} */|] const foo = 1;`,
385+
[refactor.extractSymbol.Messages.cannotExtractJSDoc.message]);
386+
383387
testExtractRangeFailed("extract-method-not-for-token-expression-statement", `[#|a|]`, [refactor.extractSymbol.Messages.cannotExtractIdentifier.message]);
384388
});
385389
}

0 commit comments

Comments
 (0)