Skip to content

Commit bac30fc

Browse files
author
Andy
authored
In convertFunctionToEs6Class.ts, share code for getting symbol (microsoft#19160)
1 parent 8d47ef6 commit bac30fc

1 file changed

Lines changed: 15 additions & 12 deletions

File tree

src/services/refactors/convertFunctionToEs6Class.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ namespace ts.refactor.convertFunctionToES6Class {
1717
return undefined;
1818
}
1919

20-
const start = context.startPosition;
21-
const node = getTokenAtPosition(context.file, start, /*includeJsDocComment*/ false);
22-
const checker = context.program.getTypeChecker();
23-
let symbol = checker.getSymbolAtLocation(node);
20+
let symbol = getConstructorSymbol(context);
21+
if (!symbol) {
22+
return undefined;
23+
}
2424

25-
if (symbol && isDeclarationOfFunctionOrClassExpression(symbol)) {
25+
if (isDeclarationOfFunctionOrClassExpression(symbol)) {
2626
symbol = (symbol.valueDeclaration as VariableDeclaration).initializer.symbol;
2727
}
2828

29-
if (symbol && (symbol.flags & SymbolFlags.Function) && symbol.members && (symbol.members.size > 0)) {
29+
if ((symbol.flags & SymbolFlags.Function) && symbol.members && (symbol.members.size > 0)) {
3030
return [
3131
{
3232
name: convertFunctionToES6Class.name,
@@ -48,11 +48,8 @@ namespace ts.refactor.convertFunctionToES6Class {
4848
return undefined;
4949
}
5050

51-
const start = context.startPosition;
52-
const sourceFile = context.file;
53-
const checker = context.program.getTypeChecker();
54-
const token = getTokenAtPosition(sourceFile, start, /*includeJsDocComment*/ false);
55-
const ctorSymbol = checker.getSymbolAtLocation(token);
51+
const { file: sourceFile } = context;
52+
const ctorSymbol = getConstructorSymbol(context);
5653
const newLine = context.rulesProvider.getFormatOptions().newLineCharacter;
5754

5855
const deletedNodes: Node[] = [];
@@ -269,4 +266,10 @@ namespace ts.refactor.convertFunctionToES6Class {
269266
return filter(source.modifiers, modifier => modifier.kind === kind);
270267
}
271268
}
272-
}
269+
270+
function getConstructorSymbol({ startPosition, file, program }: RefactorContext): Symbol {
271+
const checker = program.getTypeChecker();
272+
const token = getTokenAtPosition(file, startPosition, /*includeJsDocComment*/ false);
273+
return checker.getSymbolAtLocation(token);
274+
}
275+
}

0 commit comments

Comments
 (0)