Code review - remove 'isCallExpression' check

This commit is contained in:
iliashkolyar
2018-10-07 22:19:09 +03:00
parent 58b262e987
commit 6bd9b766b3
2 changed files with 28 additions and 5 deletions

View File

@@ -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 {

View File

@@ -0,0 +1,25 @@
/// <reference path='fourslash.ts' />
////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()!)();`
});