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