From 6bd9b766b38939a5fdcfd732dbcd690eb6e30e0a Mon Sep 17 00:00:00 2001 From: iliashkolyar Date: Sun, 7 Oct 2018 22:19:09 +0300 Subject: [PATCH] Code review - remove 'isCallExpression' check --- .../codefixes/fixAddMissingNewOperator.ts | 8 +++--- .../cases/fourslash/codeFixAddMissingNew5.ts | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 tests/cases/fourslash/codeFixAddMissingNew5.ts diff --git a/src/services/codefixes/fixAddMissingNewOperator.ts b/src/services/codefixes/fixAddMissingNewOperator.ts index ce68659be72..5acaf6eb82e 100644 --- a/src/services/codefixes/fixAddMissingNewOperator.ts +++ b/src/services/codefixes/fixAddMissingNewOperator.ts @@ -16,11 +16,9 @@ namespace ts.codefix { function addMissingNewOperator(changes: textChanges.ChangeTracker, sourceFile: SourceFile, span: TextSpan): void { const call = cast(findAncestorMatchingSpan(sourceFile, span), isCallExpression); - changes.insertNodeAt(sourceFile, span.start, createToken(SyntaxKind.NewKeyword), { suffix: " " }); - if (isCallExpression(call.expression)) { - changes.insertNodeAt(sourceFile, call.expression.getStart(sourceFile), createToken(SyntaxKind.OpenParenToken)); - changes.insertNodeAt(sourceFile, call.expression.end, createToken(SyntaxKind.CloseParenToken)); - } + const newExpression = createNew(call.expression, call.typeArguments, call.arguments); + + changes.replaceNode(sourceFile, call, newExpression); } function findAncestorMatchingSpan(sourceFile: SourceFile, span: TextSpan): Node { diff --git a/tests/cases/fourslash/codeFixAddMissingNew5.ts b/tests/cases/fourslash/codeFixAddMissingNew5.ts new file mode 100644 index 00000000000..ecc5509a18a --- /dev/null +++ b/tests/cases/fourslash/codeFixAddMissingNew5.ts @@ -0,0 +1,25 @@ +/// + +////class C { +////} +//// +////function foo() { +//// return C; +////} +//// +////foo()!(); + + +verify.codeFix({ + description: "Add missing 'new' operator to call", + index: 0, + newFileContent: +`class C { +} + +function foo() { + return C; +} + +new (foo()!)();` +});