From b629ff4204b50835ece228cd889aeaa1ab2fd2df Mon Sep 17 00:00:00 2001 From: Andy Date: Mon, 11 Dec 2017 09:45:20 -0800 Subject: [PATCH] Fix bug: FunctionDeclaration may have missing name (#20618) --- src/services/refactors/extractSymbol.ts | 7 +++---- ...ethod-in-anonymous-function-declaration.ts | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 tests/cases/fourslash/extract-method-in-anonymous-function-declaration.ts diff --git a/src/services/refactors/extractSymbol.ts b/src/services/refactors/extractSymbol.ts index f1a461b0088..d2e97c80813 100644 --- a/src/services/refactors/extractSymbol.ts +++ b/src/services/refactors/extractSymbol.ts @@ -658,11 +658,10 @@ namespace ts.refactor.extractSymbol { case SyntaxKind.Constructor: return "constructor"; case SyntaxKind.FunctionExpression: - return scope.name - ? `function expression '${scope.name.text}'` - : "anonymous function expression"; case SyntaxKind.FunctionDeclaration: - return `function '${scope.name.text}'`; + return scope.name + ? `function '${scope.name.text}'` + : "anonymous function"; case SyntaxKind.ArrowFunction: return "arrow function"; case SyntaxKind.MethodDeclaration: diff --git a/tests/cases/fourslash/extract-method-in-anonymous-function-declaration.ts b/tests/cases/fourslash/extract-method-in-anonymous-function-declaration.ts new file mode 100644 index 00000000000..6566d129874 --- /dev/null +++ b/tests/cases/fourslash/extract-method-in-anonymous-function-declaration.ts @@ -0,0 +1,20 @@ +/// + +////export default function() { +//// /*start*/0/*end*/ +////} + +goTo.select('start', 'end') +edit.applyRefactor({ + refactorName: "Extract Symbol", + actionName: "function_scope_0", + actionDescription: "Extract to inner function in anonymous function", + newContent: +`export default function() { + /*RENAME*/newFunction(); + + function newFunction() { + 0; + } +}` +});