Make extractSymbol explicitly drop JSDoc nodes

Fixes #33332
This commit is contained in:
Andrew Casey
2019-09-16 19:08:01 -07:00
parent ed152b7b06
commit f10e38fea7
3 changed files with 11 additions and 0 deletions

View File

@@ -116,6 +116,7 @@ namespace ts.refactor.extractSymbol {
export const cannotExtractRange: DiagnosticMessage = createMessage("Cannot extract range.");
export const cannotExtractImport: DiagnosticMessage = createMessage("Cannot extract import statement.");
export const cannotExtractSuper: DiagnosticMessage = createMessage("Cannot extract super call.");
export const cannotExtractJSDoc: DiagnosticMessage = createMessage("Cannot extract JSDoc.");
export const cannotExtractEmpty: DiagnosticMessage = createMessage("Cannot extract empty range.");
export const expressionExpected: DiagnosticMessage = createMessage("expression expected.");
export const uselessConstantType: DiagnosticMessage = createMessage("No reason to extract constant of type.");
@@ -246,6 +247,10 @@ namespace ts.refactor.extractSymbol {
return { targetRange: { range: statements, facts: rangeFacts, declarations } };
}
if (isJSDoc(start)) {
return { errors: [createFileDiagnostic(sourceFile, span.start, length, Messages.cannotExtractJSDoc)] };
}
if (isReturnStatement(start) && !start.expression) {
// Makes no sense to extract an expression-less return statement.
return { errors: [createFileDiagnostic(sourceFile, span.start, length, Messages.cannotExtractRange)] };