Skip to content

Commit 643d169

Browse files
committed
Better symbol information for lambda variable types at the call site
1 parent be051f0 commit 643d169

File tree

8 files changed

+82
-87
lines changed

8 files changed

+82
-87
lines changed

src/services/services.ts

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2727,38 +2727,37 @@ module ts {
27272727
var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures();
27282728

27292729
if (contains(allSignatures, signature.target || signature)) {
2730-
// Write it as method/function/constructor as: (constructor) a(....)
2731-
if (symbolKind === ScriptElementKind.memberVariableElement || symbolFlags & SymbolFlags.Variable || symbolFlags & SymbolFlags.Class) {
2732-
if (useConstructSignatures) {
2733-
symbolKind = ScriptElementKind.constructorImplementationElement;
2734-
}
2735-
else {
2736-
switch (symbolKind) {
2737-
case ScriptElementKind.memberVariableElement:
2738-
symbolKind = ScriptElementKind.memberFunctionElement;
2739-
break;
2740-
case ScriptElementKind.variableElement:
2741-
symbolKind = ScriptElementKind.functionElement;
2742-
break;
2743-
case ScriptElementKind.parameterElement:
2744-
case ScriptElementKind.localVariableElement:
2745-
symbolKind = ScriptElementKind.localFunctionElement;
2746-
break;
2747-
default:
2748-
Debug.fail("symbolKind: " + symbolKind);
2749-
}
2750-
}
2751-
}
2752-
2753-
// Constructor or call signatures use the type name
2754-
if (useConstructSignatures || (signature.declaration.kind === SyntaxKind.CallSignature &&
2755-
!(type.symbol.flags & SymbolFlags.TypeLiteral || type.symbol.flags & SymbolFlags.ObjectLiteral))) {
2730+
if (useConstructSignatures && (symbolFlags & SymbolFlags.Class)) {
2731+
// Constructor
2732+
symbolKind = ScriptElementKind.constructorImplementationElement;
27562733
addPrefixForAnyFunctionOrVar(type.symbol, symbolKind);
27572734
}
27582735
else {
27592736
addPrefixForAnyFunctionOrVar(symbol, symbolKind);
27602737
}
2761-
addSignatureDisplayParts(signature, allSignatures);
2738+
2739+
switch (symbolKind) {
2740+
case ScriptElementKind.memberVariableElement:
2741+
case ScriptElementKind.variableElement:
2742+
case ScriptElementKind.parameterElement:
2743+
case ScriptElementKind.localVariableElement:
2744+
// If it is call or construct signature of lambda's write type name
2745+
displayParts.push(punctuationPart(SyntaxKind.ColonToken));
2746+
displayParts.push(spacePart());
2747+
if (useConstructSignatures) {
2748+
displayParts.push(keywordPart(SyntaxKind.NewKeyword));
2749+
displayParts.push(spacePart());
2750+
}
2751+
if (!(type.flags & TypeFlags.Anonymous)) {
2752+
displayParts.push.apply(displayParts, symbolToDisplayParts(typeResolver, type.symbol, enclosingDeclaration, /*meaning*/ undefined, SymbolFormatFlags.WriteTypeParametersOrArguments));
2753+
}
2754+
addSignatureDisplayParts(signature, allSignatures, TypeFormatFlags.WriteArrowStyleSignature);
2755+
break;
2756+
2757+
default:
2758+
// Just signature
2759+
addSignatureDisplayParts(signature, allSignatures);
2760+
}
27622761
hasAddedSymbolInfo = true;
27632762
}
27642763
}
@@ -2917,8 +2916,8 @@ module ts {
29172916
}
29182917
}
29192918

2920-
function addSignatureDisplayParts(signature: Signature, allSignatures: Signature[]) {
2921-
displayParts.push.apply(displayParts, signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, TypeFormatFlags.NoTruncation | TypeFormatFlags.WriteTypeArgumentsOfSignature));
2919+
function addSignatureDisplayParts(signature: Signature, allSignatures: Signature[], flags?: TypeFormatFlags) {
2920+
displayParts.push.apply(displayParts, signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | TypeFormatFlags.NoTruncation | TypeFormatFlags.WriteTypeArgumentsOfSignature));
29222921
if (allSignatures.length > 1) {
29232922
displayParts.push(spacePart());
29242923
displayParts.push(punctuationPart(SyntaxKind.OpenParenToken));

tests/cases/fourslash/commentsFunction.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ verify.quickInfoIs('(local var) localVar: string', '');
126126
goTo.marker('30');
127127
verify.quickInfoIs('(parameter) b: string', '');
128128
goTo.marker('31');
129-
verify.quickInfoIs('(local function) lambdaVar(b: string): string', '');
129+
debugger;
130+
verify.quickInfoIs('(local var) lambdaVar: (b: string) => string', '');
130131
goTo.marker('32');
131132
verify.quickInfoIs('(parameter) a: number', '');

tests/cases/fourslash/commentsInheritance.ts

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -261,13 +261,13 @@ verify.quickInfoIs("(method) i1.f1(): void", "");
261261
goTo.marker('5q');
262262
verify.quickInfoIs("(method) i1.nc_f1(): void", "");
263263
goTo.marker('l2q');
264-
verify.quickInfoIs("(method) i1.i1_l1(): void", "");
264+
verify.quickInfoIs("(property) i1.i1_l1: () => void", "");
265265
goTo.marker('l3q');
266-
verify.quickInfoIs("(method) i1.i1_nc_l1(): void", "");
266+
verify.quickInfoIs("(property) i1.i1_nc_l1: () => void", "");
267267
goTo.marker('l4q');
268-
verify.quickInfoIs("(method) i1.l1(): void", "");
268+
verify.quickInfoIs("(property) i1.l1: () => void", "");
269269
goTo.marker('l5q');
270-
verify.quickInfoIs("(method) i1.nc_l1(): void", "");
270+
verify.quickInfoIs("(property) i1.nc_l1: () => void", "");
271271

272272
goTo.marker('6');
273273
verify.memberListContains("i1_p1", "(property) c1.i1_p1: number", "");
@@ -310,13 +310,13 @@ verify.quickInfoIs("(method) c1.f1(): void", "c1_f1");
310310
goTo.marker('10q');
311311
verify.quickInfoIs("(method) c1.nc_f1(): void", "c1_nc_f1");
312312
goTo.marker('l7q');
313-
verify.quickInfoIs("(method) c1.i1_l1(): void", "");
313+
verify.quickInfoIs("(property) c1.i1_l1: () => void", "");
314314
goTo.marker('l8q');
315-
verify.quickInfoIs("(method) c1.i1_nc_l1(): void", "");
315+
verify.quickInfoIs("(property) c1.i1_nc_l1: () => void", "");
316316
goTo.marker('l9q');
317-
verify.quickInfoIs("(method) c1.l1(): void", "");
317+
verify.quickInfoIs("(property) c1.l1: () => void", "");
318318
goTo.marker('l10q');
319-
verify.quickInfoIs("(method) c1.nc_l1(): void", "");
319+
verify.quickInfoIs("(property) c1.nc_l1: () => void", "");
320320

321321
goTo.marker('11');
322322
verify.memberListContains("i1_p1", "(property) i1.i1_p1: number", "i1_p1");
@@ -356,13 +356,13 @@ verify.quickInfoIs("(method) i1.f1(): void", "");
356356
goTo.marker('15q');
357357
verify.quickInfoIs("(method) i1.nc_f1(): void", "");
358358
goTo.marker('l12q');
359-
verify.quickInfoIs("(method) i1.i1_l1(): void", "");
359+
verify.quickInfoIs("(property) i1.i1_l1: () => void", "");
360360
goTo.marker('l13q');
361-
verify.quickInfoIs("(method) i1.i1_nc_l1(): void", "");
361+
verify.quickInfoIs("(property) i1.i1_nc_l1: () => void", "");
362362
goTo.marker('l14q');
363-
verify.quickInfoIs("(method) i1.l1(): void", "");
363+
verify.quickInfoIs("(property) i1.l1: () => void", "");
364364
goTo.marker('l15q');
365-
verify.quickInfoIs("(method) i1.nc_l1(): void", "");
365+
verify.quickInfoIs("(property) i1.nc_l1: () => void", "");
366366

367367
goTo.marker('16');
368368
verify.completionListContains("i1", "interface i1", "i1 is interface with properties");
@@ -545,13 +545,13 @@ verify.quickInfoIs("(method) i2.f1(): void", "i2 f1");
545545
goTo.marker('40q');
546546
verify.quickInfoIs("(method) i2.nc_f1(): void", "");
547547
goTo.marker('l37q');
548-
verify.quickInfoIs("(method) i2.i2_l1(): void", "");
548+
verify.quickInfoIs("(property) i2.i2_l1: () => void", "");
549549
goTo.marker('l38q');
550-
verify.quickInfoIs("(method) i2.i2_nc_l1(): void", "");
550+
verify.quickInfoIs("(property) i2.i2_nc_l1: () => void", "");
551551
goTo.marker('l39q');
552-
verify.quickInfoIs("(method) i2.l1(): void", "");
552+
verify.quickInfoIs("(property) i2.l1: () => void", "");
553553
goTo.marker('l40q');
554-
verify.quickInfoIs("(method) i2.nc_l1(): void", "");
554+
verify.quickInfoIs("(property) i2.nc_l1: () => void", "");
555555

556556
goTo.marker('41');
557557
verify.memberListContains("i2_p1", "(property) i2.i2_p1: number", "i2_p1");
@@ -592,13 +592,13 @@ verify.quickInfoIs("(method) i3.f1(): void", "i3 f1");
592592
goTo.marker('45q');
593593
verify.quickInfoIs("(method) i3.nc_f1(): void", "");
594594
goTo.marker('l42q');
595-
verify.quickInfoIs("(method) i2.i2_l1(): void", "");
595+
verify.quickInfoIs("(property) i2.i2_l1: () => void", "");
596596
goTo.marker('l43q');
597-
verify.quickInfoIs("(method) i2.i2_nc_l1(): void", "");
597+
verify.quickInfoIs("(property) i2.i2_nc_l1: () => void", "");
598598
goTo.marker('l44q');
599-
verify.quickInfoIs("(method) i3.l1(): void", "");
599+
verify.quickInfoIs("(property) i3.l1: () => void", "");
600600
goTo.marker('l45q');
601-
verify.quickInfoIs("(method) i3.nc_l1(): void", "");
601+
verify.quickInfoIs("(property) i3.nc_l1: () => void", "");
602602

603603
goTo.marker('46');
604604
verify.memberListContains("i2_p1", "(property) i2.i2_p1: number", "i2_p1");
@@ -639,13 +639,13 @@ verify.quickInfoIs("(method) i2.f1(): void", "i2 f1");
639639
goTo.marker('50q');
640640
verify.quickInfoIs("(method) i2.nc_f1(): void", "");
641641
goTo.marker('l47q');
642-
verify.quickInfoIs("(method) i2.i2_l1(): void", "");
642+
verify.quickInfoIs("(property) i2.i2_l1: () => void", "");
643643
goTo.marker('l48q');
644-
verify.quickInfoIs("(method) i2.i2_nc_l1(): void", "");
644+
verify.quickInfoIs("(property) i2.i2_nc_l1: () => void", "");
645645
goTo.marker('l49q');
646-
verify.quickInfoIs("(method) i2.l1(): void", "");
646+
verify.quickInfoIs("(property) i2.l1: () => void", "");
647647
goTo.marker('l50q');
648-
verify.quickInfoIs("(method) i2.nc_l1(): void", "");
648+
verify.quickInfoIs("(property) i2.nc_l1: () => void", "");
649649

650650
goTo.marker('51');
651651
verify.completionListContains("i2", "interface i2", "");

tests/cases/fourslash/commentsInterface.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ goTo.marker('12');
111111
verify.currentSignatureHelpDocCommentIs("");
112112
verify.currentParameterHelpArgumentDocCommentIs("param help");
113113
goTo.marker('12q');
114-
verify.quickInfoIs("(method) i2.foo(b: number): string", "");
114+
verify.quickInfoIs("(property) i2.foo: (b: number) => string", "");
115115

116116
goTo.marker('13');
117117
verify.quickInfoIs("(var) i2_i_i2_si: number", "");
@@ -130,7 +130,7 @@ goTo.marker('16');
130130
verify.currentSignatureHelpDocCommentIs("new method");
131131
verify.currentParameterHelpArgumentDocCommentIs("param");
132132
goTo.marker('16q');
133-
verify.quickInfoIs("(constructor) i2(i: i1): any", "new method");
133+
verify.quickInfoIs("(var) i2_i: new i2(i: i1) => any", "new method");
134134

135135
goTo.marker('17');
136136
verify.quickInfoIs("(var) i2_i_nc_x: number", "");
@@ -151,7 +151,7 @@ goTo.marker('22');
151151
verify.currentSignatureHelpDocCommentIs("");
152152
verify.currentParameterHelpArgumentDocCommentIs("");
153153
goTo.marker('22q');
154-
verify.quickInfoIs("(method) i2.nc_foo(b: number): string", "");
154+
verify.quickInfoIs("(property) i2.nc_foo: (b: number) => string", "");
155155

156156
goTo.marker('23');
157157
verify.quickInfoIs("(var) i2_i_r: number", "");
@@ -160,7 +160,7 @@ goTo.marker('24');
160160
verify.currentSignatureHelpDocCommentIs("this is call signature");
161161
verify.currentParameterHelpArgumentDocCommentIs("paramhelp a");
162162
goTo.marker('24q');
163-
verify.quickInfoIs("(function) i2(a: number, b: number): number", "this is call signature");
163+
verify.quickInfoIs("(var) i2_i: i2(a: number, b: number) => number", "this is call signature");
164164

165165
goTo.marker('25');
166166
verify.currentSignatureHelpDocCommentIs("this is call signature");
@@ -244,7 +244,7 @@ goTo.marker('43');
244244
verify.currentSignatureHelpDocCommentIs("");
245245
verify.currentParameterHelpArgumentDocCommentIs("comment i3 l b");
246246
goTo.marker('43q');
247-
verify.quickInfoIs("(method) i3.l(b: number): string", "");
247+
verify.quickInfoIs("(property) i3.l: (b: number) => string", "");
248248

249249
goTo.marker('44');
250250
verify.currentSignatureHelpDocCommentIs("");
@@ -256,4 +256,4 @@ goTo.marker('45');
256256
verify.currentSignatureHelpDocCommentIs("");
257257
verify.currentParameterHelpArgumentDocCommentIs("");
258258
goTo.marker('45q');
259-
verify.quickInfoIs("(method) i3.nc_l(b: number): string", "");
259+
verify.quickInfoIs("(property) i3.nc_l: (b: number) => string", "");

tests/cases/fourslash/commentsOverloads.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ verify.completionListContains('f4', '(function) f4(a: number): number (+ 1 overl
308308

309309
goTo.marker('18');
310310
verify.completionListContains('i1', 'interface i1', '');
311-
verify.completionListContains('i1_i', '(constructor) i1(b: number): any (+ 1 overload(s))', '');
311+
verify.completionListContains('i1_i', '(var) i1_i: new i1(b: number) => any (+ 1 overload(s))', '');
312312
verify.completionListContains('i2', 'interface i2', '');
313313
verify.completionListContains('i2_i', '(var) i2_i: i2', '');
314314
verify.completionListContains('i3', 'interface i3', '');
@@ -320,25 +320,25 @@ goTo.marker('19');
320320
verify.currentSignatureHelpDocCommentIs("");
321321
verify.currentParameterHelpArgumentDocCommentIs("");
322322
goTo.marker('19q');
323-
verify.quickInfoIs("(constructor) i1(b: number): any (+ 1 overload(s))", "");
323+
verify.quickInfoIs("(var) i1_i: new i1(b: number) => any (+ 1 overload(s))", "");
324324

325325
goTo.marker('20');
326326
verify.currentSignatureHelpDocCommentIs("new 1");
327327
verify.currentParameterHelpArgumentDocCommentIs("");
328328
goTo.marker('20q');
329-
verify.quickInfoIs("(constructor) i1(a: string): any (+ 1 overload(s))", "new 1");
329+
verify.quickInfoIs("(var) i1_i: new i1(a: string) => any (+ 1 overload(s))", "new 1");
330330

331331
goTo.marker('21');
332332
verify.currentSignatureHelpDocCommentIs("this signature 1");
333333
verify.currentParameterHelpArgumentDocCommentIs("param a");
334334
goTo.marker('21q');
335-
verify.quickInfoIs("(function) i1(a: number): number (+ 1 overload(s))", "this signature 1");
335+
verify.quickInfoIs("(var) i1_i: i1(a: number) => number (+ 1 overload(s))", "this signature 1");
336336

337337
goTo.marker('22');
338338
verify.currentSignatureHelpDocCommentIs("this is signature 2");
339339
verify.currentParameterHelpArgumentDocCommentIs("");
340340
goTo.marker('22q');
341-
verify.quickInfoIs("(function) i1(b: string): number (+ 1 overload(s))", "this is signature 2");
341+
verify.quickInfoIs("(var) i1_i: i1(b: string) => number (+ 1 overload(s))", "this is signature 2");
342342

343343
goTo.marker('23');
344344
verify.memberListContains('foo', '(method) i1.foo(a: number): number (+ 1 overload(s))', 'foo 1');
@@ -398,73 +398,73 @@ goTo.marker('32');
398398
verify.currentSignatureHelpDocCommentIs("new 2");
399399
verify.currentParameterHelpArgumentDocCommentIs("");
400400
goTo.marker('32q');
401-
verify.quickInfoIs("(constructor) i2(b: number): any (+ 1 overload(s))", "new 2");
401+
verify.quickInfoIs("(var) i2_i: new i2(b: number) => any (+ 1 overload(s))", "new 2");
402402

403403
goTo.marker('33');
404404
verify.currentSignatureHelpDocCommentIs("");
405405
verify.currentParameterHelpArgumentDocCommentIs("");
406406
goTo.marker('33q');
407-
verify.quickInfoIs("(constructor) i2(a: string): any (+ 1 overload(s))", "");
407+
verify.quickInfoIs("(var) i2_i: new i2(a: string) => any (+ 1 overload(s))", "");
408408

409409
goTo.marker('34');
410410
verify.currentSignatureHelpDocCommentIs("");
411411
verify.currentParameterHelpArgumentDocCommentIs("");
412412
goTo.marker('34q');
413-
verify.quickInfoIs("(function) i2(a: number): number (+ 1 overload(s))", "");
413+
verify.quickInfoIs("(var) i2_i: i2(a: number) => number (+ 1 overload(s))", "");
414414

415415
goTo.marker('35');
416416
verify.currentSignatureHelpDocCommentIs("this is signature 2");
417417
verify.currentParameterHelpArgumentDocCommentIs("");
418418
goTo.marker('35q');
419-
verify.quickInfoIs("(function) i2(b: string): number (+ 1 overload(s))", "this is signature 2");
419+
verify.quickInfoIs("(var) i2_i: i2(b: string) => number (+ 1 overload(s))", "this is signature 2");
420420

421421
goTo.marker('36');
422422
verify.currentSignatureHelpDocCommentIs("new 2");
423423
verify.currentParameterHelpArgumentDocCommentIs("");
424424
goTo.marker('36q');
425-
verify.quickInfoIs("(constructor) i3(b: number): any (+ 1 overload(s))", "new 2");
425+
verify.quickInfoIs("(var) i3_i: new i3(b: number) => any (+ 1 overload(s))", "new 2");
426426

427427
goTo.marker('37');
428428
verify.currentSignatureHelpDocCommentIs("new 1");
429429
verify.currentParameterHelpArgumentDocCommentIs("");
430430
goTo.marker('37q');
431-
verify.quickInfoIs("(constructor) i3(a: string): any (+ 1 overload(s))", "new 1");
431+
verify.quickInfoIs("(var) i3_i: new i3(a: string) => any (+ 1 overload(s))", "new 1");
432432

433433
goTo.marker('38');
434434
verify.currentSignatureHelpDocCommentIs("this is signature 1");
435435
verify.currentParameterHelpArgumentDocCommentIs("");
436436
goTo.marker('38q');
437-
verify.quickInfoIs("(function) i3(a: number): number (+ 1 overload(s))", "this is signature 1");
437+
verify.quickInfoIs("(var) i3_i: i3(a: number) => number (+ 1 overload(s))", "this is signature 1");
438438

439439
goTo.marker('39');
440440
verify.currentSignatureHelpDocCommentIs("");
441441
verify.currentParameterHelpArgumentDocCommentIs("");
442442
goTo.marker('39q');
443-
verify.quickInfoIs("(function) i3(b: string): number (+ 1 overload(s))", "");
443+
verify.quickInfoIs("(var) i3_i: i3(b: string) => number (+ 1 overload(s))", "");
444444

445445
goTo.marker('40');
446446
verify.currentSignatureHelpDocCommentIs("");
447447
verify.currentParameterHelpArgumentDocCommentIs("");
448448
goTo.marker('40q');
449-
verify.quickInfoIs("(constructor) i4(b: number): any (+ 1 overload(s))", "");
449+
verify.quickInfoIs("(var) i4_i: new i4(b: number) => any (+ 1 overload(s))", "");
450450

451451
goTo.marker('41');
452452
verify.currentSignatureHelpDocCommentIs("");
453453
verify.currentParameterHelpArgumentDocCommentIs("");
454454
goTo.marker('41q');
455-
verify.quickInfoIs("(constructor) i4(a: string): any (+ 1 overload(s))", "");
455+
verify.quickInfoIs("(var) i4_i: new i4(a: string) => any (+ 1 overload(s))", "");
456456

457457
goTo.marker('42');
458458
verify.currentSignatureHelpDocCommentIs("");
459459
verify.currentParameterHelpArgumentDocCommentIs("");
460460
goTo.marker('42q');
461-
verify.quickInfoIs("(function) i4(a: number): number (+ 1 overload(s))", "");
461+
verify.quickInfoIs("(var) i4_i: i4(a: number) => number (+ 1 overload(s))", "");
462462

463463
goTo.marker('43');
464464
verify.currentSignatureHelpDocCommentIs("");
465465
verify.currentParameterHelpArgumentDocCommentIs("");
466466
goTo.marker('43q');
467-
verify.quickInfoIs("(function) i4(b: string): number (+ 1 overload(s))", "");
467+
verify.quickInfoIs("(var) i4_i: i4(b: string) => number (+ 1 overload(s))", "");
468468

469469
goTo.marker('44');
470470
verify.memberListContains('prop1', '(method) c.prop1(a: number): number (+ 1 overload(s))', '');

tests/cases/fourslash/commentsVariables.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ verify.quickInfoIs("(function) foo(): void", "foos comment");
6363
goTo.marker('6');
6464
verify.currentSignatureHelpDocCommentIs("");
6565
goTo.marker('6q');
66-
verify.quickInfoIs("(function) fooVar(): void", "");
66+
verify.quickInfoIs("(var) fooVar: () => void", "");
6767

6868
goTo.marker('7');
6969
verify.completionListContains("foo", "(function) foo(): void", "foos comment");
@@ -77,7 +77,7 @@ verify.quickInfoIs("(function) foo(): void", "foos comment");
7777
goTo.marker('9');
7878
verify.currentSignatureHelpDocCommentIs("");
7979
goTo.marker('9q');
80-
verify.quickInfoIs("(function) fooVar(): void", "");
80+
verify.quickInfoIs("(var) fooVar: () => void", "");
8181
goTo.marker('9aq');
8282
verify.quickInfoIs("(var) fooVar: () => void", "fooVar comment");
8383

tests/cases/fourslash/quickInfoForOverloadOnConst1.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ verify.quickInfoIs("(method) C.x1(a: number, callback: (x: 'hi') => number): any
3030
goTo.marker('5');
3131
verify.quickInfoIs('(parameter) callback: (x: string) => number');
3232
goTo.marker('6');
33-
verify.quickInfoIs('(local function) callback(x: string): number');
33+
verify.quickInfoIs('(parameter) callback: (x: string) => number');
3434
goTo.marker('7');
3535
verify.quickInfoIs("(method) C.x1(a: number, callback: (x: 'hi') => number): any");
3636
goTo.marker('8');

0 commit comments

Comments
 (0)