Quick fix for functions lacking return expressions (#26434)

* stash

* add surmise for return type

* add support for more case

* add more test case

* add more testcase and fix all test

* fix changed diagnosis

* fix broken test case

* add more case

* rename quickfix

* fix conflict

* fix fix desc

* fix semi

* Avoid replace brace with paren

* Split fix all action

* Add return work in same line

* fix test cases

* rename baseline

* refactor and handle comment

* Support semi

* make helper internal
This commit is contained in:
Wenlu Wang
2020-04-02 10:06:14 -07:00
committed by GitHub
parent 54b0e4acc5
commit afc41f095d
45 changed files with 947 additions and 30 deletions
+1 -3
View File
@@ -574,9 +574,7 @@ namespace ts {
},
getApparentType,
getUnionType,
isTypeAssignableTo: (source, target) => {
return isTypeAssignableTo(source, target);
},
isTypeAssignableTo,
createAnonymousType,
createSignature,
createSymbol,
+25
View File
@@ -5621,6 +5621,31 @@
"category": "Message",
"code": 95110
},
"Add a return statement": {
"category": "Message",
"code": 95111
},
"Remove block body braces": {
"category": "Message",
"code": 95112
},
"Wrap the following body with parentheses which should be an object literal": {
"category": "Message",
"code": 95113
},
"Add all missing return statement": {
"category": "Message",
"code": 95114
},
"Remove all incorrect body block braces": {
"category": "Message",
"code": 95115
},
"Wrap all object literal with parentheses": {
"category": "Message",
"code": 95116
},
"No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer.": {
"category": "Error",
"code": 18004
+20
View File
@@ -2057,6 +2057,26 @@ namespace ts {
: node;
}
/* @internal */
export function updateFunctionLikeBody(declaration: FunctionLikeDeclaration, body: Block): FunctionLikeDeclaration {
switch (declaration.kind) {
case SyntaxKind.FunctionDeclaration:
return createFunctionDeclaration(declaration.decorators, declaration.modifiers, declaration.asteriskToken, declaration.name, declaration.typeParameters, declaration.parameters, declaration.type, body);
case SyntaxKind.MethodDeclaration:
return createMethod(declaration.decorators, declaration.modifiers, declaration.asteriskToken, declaration.name, declaration.questionToken, declaration.typeParameters, declaration.parameters, declaration.type, body);
case SyntaxKind.GetAccessor:
return createGetAccessor(declaration.decorators, declaration.modifiers, declaration.name, declaration.parameters, declaration.type, body);
case SyntaxKind.SetAccessor:
return createSetAccessor(declaration.decorators, declaration.modifiers, declaration.name, declaration.parameters, body);
case SyntaxKind.Constructor:
return createConstructor(declaration.decorators, declaration.modifiers, declaration.parameters, body);
case SyntaxKind.FunctionExpression:
return createFunctionExpression(declaration.modifiers, declaration.asteriskToken, declaration.name, declaration.typeParameters, declaration.parameters, declaration.type, body);
case SyntaxKind.ArrowFunction:
return createArrowFunction(declaration.modifiers, declaration.typeParameters, declaration.parameters, declaration.type, declaration.equalsGreaterThanToken, body);
}
}
export function createClassDeclaration(
decorators: readonly Decorator[] | undefined,
modifiers: readonly Modifier[] | undefined,