@@ -114,18 +114,29 @@ namespace ts.codefix {
114
114
115
115
newSignatureDeclaration . parameters = createNodeArray < ParameterDeclaration > ( ) ;
116
116
for ( let i = 0 ; i < maxArgs - 1 ; i ++ ) {
117
- const newParameter = createParameterDeclaration ( i , minArgumentCount , newSignatureDeclaration ) ;
117
+ const newParameter = createParameterDeclaration ( i , minArgumentCount , anyTypeNode , newSignatureDeclaration ) ;
118
118
newSignatureDeclaration . parameters . push ( newParameter ) ;
119
119
}
120
120
121
- const lastParameter = createParameterDeclaration ( maxArgs - 1 , minArgumentCount , newSignatureDeclaration ) ;
121
+ let lastParameter : ParameterDeclaration ;
122
122
if ( hasRestParameter ) {
123
- lastParameter . dotDotDotToken = createToken ( SyntaxKind . DotDotDotToken ) ;
123
+
124
+ const anyArrayTypeNode = createNode ( SyntaxKind . ArrayType ) as ArrayTypeNode ;
125
+ anyArrayTypeNode . elementType = anyTypeNode ;
124
126
125
127
if ( ! allMaxArgsAreRest ) {
126
- const newParameter = createParameterDeclaration ( maxArgs - 1 , minArgumentCount , newSignatureDeclaration ) ;
128
+ const newParameter = createParameterDeclaration ( maxArgs - 1 , minArgumentCount , anyTypeNode , newSignatureDeclaration ) ;
127
129
newSignatureDeclaration . parameters . push ( newParameter ) ;
130
+ lastParameter = createParameterDeclaration ( maxArgs , minArgumentCount , anyArrayTypeNode , newSignatureDeclaration ) ;
131
+ }
132
+ else {
133
+ lastParameter = createParameterDeclaration ( maxArgs - 1 , minArgumentCount , anyArrayTypeNode , newSignatureDeclaration ) ;
128
134
}
135
+
136
+ lastParameter . dotDotDotToken = createToken ( SyntaxKind . DotDotDotToken ) ;
137
+ }
138
+ else {
139
+ lastParameter = createParameterDeclaration ( maxArgs - 1 , minArgumentCount , anyTypeNode , newSignatureDeclaration ) ;
129
140
}
130
141
131
142
newSignatureDeclaration . parameters . push ( lastParameter ) ;
@@ -135,12 +146,12 @@ namespace ts.codefix {
135
146
136
147
return checker . getSignatureFromDeclaration ( newSignatureDeclaration ) ;
137
148
138
- function createParameterDeclaration ( index : number , minArgCount : number , enclosingSignatureDeclaration : SignatureDeclaration ) : ParameterDeclaration {
149
+ function createParameterDeclaration ( index : number , minArgCount : number , typeNode : TypeNode , enclosingSignatureDeclaration : SignatureDeclaration ) : ParameterDeclaration {
139
150
const newParameter = createNode ( SyntaxKind . Parameter ) as ParameterDeclaration ;
140
151
newParameter . symbol = checker . createSymbol ( SymbolFlags . FunctionScopedVariable , "arg" + index ) ;
141
152
newParameter . symbol . valueDeclaration = newParameter ;
142
153
newParameter . symbol . declarations = [ newParameter ] ;
143
- newParameter . type = anyTypeNode ;
154
+ newParameter . type = typeNode ;
144
155
newParameter . parent = enclosingSignatureDeclaration ;
145
156
if ( index >= minArgCount ) {
146
157
newParameter . questionToken = optionalToken ;
0 commit comments