@@ -64,15 +64,15 @@ namespace ts.codefix {
6464 const declaration = declarations [ 0 ] as Declaration ;
6565 const name = declaration . name ? getSynthesizedDeepClone ( declaration . name ) as PropertyName : undefined ;
6666 const visibilityModifier = createVisibilityModifier ( getModifierFlags ( declaration ) ) ;
67- const modifiers = visibilityModifier ? [ visibilityModifier ] : undefined ;
67+ const modifiers = visibilityModifier ? createNodeArray ( [ visibilityModifier ] ) : undefined ;
6868 const type = checker . getWidenedType ( checker . getTypeOfSymbolAtLocation ( symbol , enclosingDeclaration ) ) ;
6969
7070 switch ( declaration . kind ) {
7171 case SyntaxKind . GetAccessor :
7272 case SyntaxKind . SetAccessor :
7373 case SyntaxKind . PropertySignature :
7474 case SyntaxKind . PropertyDeclaration :
75- const typeNode = checker . createTypeNode ( type , enclosingDeclaration ) ;
75+ const typeNode = checker . typeToTypeNode ( type , enclosingDeclaration ) ;
7676 const property = createProperty (
7777 /*decorators*/ undefined ,
7878 modifiers ,
@@ -99,30 +99,32 @@ namespace ts.codefix {
9999 if ( declarations . length === 1 ) {
100100 Debug . assert ( signatures . length === 1 ) ;
101101 const signature = signatures [ 0 ] ;
102- const signatureParts = checker . createSignatureParts ( signature , enclosingDeclaration ) ;
103- return createStubbedMethod ( modifiers , name , optional , signatureParts . typeParameters , signatureParts . parameters , signatureParts . type ) ;
102+ const signatureDeclaration = checker . signatureToSignatureDeclaration ( signature , SyntaxKind . MethodDeclaration , enclosingDeclaration ) as MethodDeclaration ;
103+ signatureDeclaration . modifiers = modifiers ;
104+ signatureDeclaration . name = name ;
105+ signatureDeclaration . questionToken = optional ? createToken ( SyntaxKind . QuestionToken ) : undefined ;
106+ signatureDeclaration . body = createStubbedMethodBody ( ) ;
107+ return signatureDeclaration ;
104108 }
105109
106110 let signatureDeclarations = [ ] ;
107111 for ( let i = 0 ; i < signatures . length ; i ++ ) {
108112 const signature = signatures [ i ] ;
109- const signatureParts = checker . createSignatureParts ( signature , enclosingDeclaration ) ;
110- signatureDeclarations . push ( createMethod (
111- /*decorators*/ undefined ,
112- modifiers ,
113- /*asteriskToken*/ undefined ,
114- name ,
115- optional ? createToken ( SyntaxKind . QuestionToken ) : undefined ,
116- signatureParts . typeParameters ,
117- signatureParts . parameters ,
118- signatureParts . type ,
119- /*body*/ undefined ) ) ;
113+ const signatureDeclaration = checker . signatureToSignatureDeclaration ( signature , SyntaxKind . MethodDeclaration , enclosingDeclaration ) as MethodDeclaration ;
114+ signatureDeclaration . modifiers = modifiers ;
115+ signatureDeclaration . name = name ;
116+ signatureDeclaration . questionToken = optional ? createToken ( SyntaxKind . QuestionToken ) : undefined ;
117+ signatureDeclarations . push ( signatureDeclaration ) ;
120118 }
121119
122120 if ( declarations . length > signatures . length ) {
123121 let signature = checker . getSignatureFromDeclaration ( declarations [ declarations . length - 1 ] as SignatureDeclaration ) ;
124- const signatureParts = checker . createSignatureParts ( signature , enclosingDeclaration ) ;
125- signatureDeclarations . push ( createStubbedMethod ( modifiers , name , optional , signatureParts . typeParameters , signatureParts . parameters , signatureParts . type ) ) ;
122+ const signatureDeclaration = checker . signatureToSignatureDeclaration ( signature , SyntaxKind . MethodDeclaration , enclosingDeclaration ) as MethodDeclaration ;
123+ signatureDeclaration . modifiers = modifiers ;
124+ signatureDeclaration . name = name ;
125+ signatureDeclaration . questionToken = optional ? createToken ( SyntaxKind . QuestionToken ) : undefined ;
126+ signatureDeclaration . body = createStubbedMethodBody ( ) ;
127+ signatureDeclarations . push ( signatureDeclaration ) ;
126128 }
127129 else {
128130 Debug . assert ( declarations . length === signatures . length ) ;
@@ -195,9 +197,9 @@ namespace ts.codefix {
195197
196198 export function createStubbedMethod ( modifiers : Modifier [ ] , name : PropertyName , optional : boolean , typeParameters : TypeParameterDeclaration [ ] | undefined , parameters : ParameterDeclaration [ ] , returnType : TypeNode | undefined ) {
197199 return createMethod (
198- /*decorators*/ undefined ,
200+ /*decorators*/ undefined ,
199201 modifiers ,
200- /*asteriskToken*/ undefined ,
202+ /*asteriskToken*/ undefined ,
201203 name ,
202204 optional ? createToken ( SyntaxKind . QuestionToken ) : undefined ,
203205 typeParameters ,
0 commit comments