Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7bdeaa8

Browse files
committed
fix missing type parameters
1 parent302c0fc commit7bdeaa8

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

‎src/services/codefixes/helpers.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ namespace ts.codefix {
376376
letmaxArgsSignature=signatures[0];
377377
letminArgumentCount=signatures[0].minArgumentCount;
378378
letsomeSigHasRestParameter=false;
379+
letmaxTypeArgsSignature=signatures[0];
379380
for(constsigofsignatures){
380381
minArgumentCount=Math.min(sig.minArgumentCount,minArgumentCount);
381382
if(signatureHasRestParameter(sig)){
@@ -384,6 +385,9 @@ namespace ts.codefix {
384385
if(sig.parameters.length>=maxArgsSignature.parameters.length&&(!signatureHasRestParameter(sig)||signatureHasRestParameter(maxArgsSignature))){
385386
maxArgsSignature=sig;
386387
}
388+
if(sig.typeParameters&&(!maxTypeArgsSignature.typeParameters||sig.typeParameters.length>maxTypeArgsSignature.typeParameters.length)){
389+
maxTypeArgsSignature=sig;
390+
}
387391
}
388392
constmaxNonRestArgs=maxArgsSignature.parameters.length-(signatureHasRestParameter(maxArgsSignature) ?1 :0);
389393
constmaxArgsParameterSymbolNames=maxArgsSignature.parameters.map(symbol=>symbol.name);
@@ -402,11 +406,14 @@ namespace ts.codefix {
402406
parameters.push(restParameter);
403407
}
404408

409+
consttypeParameters=maxTypeArgsSignature.typeParameters?.map(typeParam=>
410+
factory.createTypeParameterDeclaration(typeParam.symbol.getName()));
411+
405412
returncreateStubbedMethod(
406413
modifiers,
407414
name,
408415
optional,
409-
/*typeParameters*/undefined,
416+
typeParameters,
410417
parameters,
411418
getReturnTypeFromSignatures(signatures,checker,context,enclosingDeclaration),
412419
quotePreference,
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/// <reference path="fourslash.ts" />
2+
3+
//@Filename: a.ts
4+
//@newline: LF
5+
// Case: generic methods
6+
////abstract class A {
7+
//// abstract M<T>(x: number): number;
8+
//// abstract M<T>(x: string): string;
9+
//// N<T>(x: string): void {
10+
//// return;
11+
////}
12+
////}
13+
////
14+
////class B extends A {
15+
//// /*a*/
16+
////}
17+
18+
19+
verify.completions({
20+
marker:"a",
21+
isNewIdentifierLocation:true,
22+
preferences:{
23+
includeCompletionsWithInsertText:true,
24+
includeCompletionsWithSnippetText:false,
25+
},
26+
includes:[
27+
{
28+
name:"M",
29+
sortText:completion.SortText.LocationPriority,
30+
replacementSpan:{
31+
fileName:"",
32+
pos:0,
33+
end:0,
34+
},
35+
insertText:
36+
`M<T>(x: number): number;
37+
M<T>(x: string): string;
38+
M<T>(x: any): string | number {
39+
}
40+
`,
41+
},
42+
{
43+
name:"N",
44+
sortText:completion.SortText.LocationPriority,
45+
replacementSpan:{
46+
fileName:"",
47+
pos:0,
48+
end:0,
49+
},
50+
insertText:
51+
`N<T>(x: string): void {
52+
}
53+
`,
54+
},
55+
],
56+
});

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp