Skip to content

Commit e411381

Browse files
author
Andy
authored
Fix bug: Don't let empty signature documentation override other documentation (microsoft#26638)
1 parent 61f6d03 commit e411381

11 files changed

+75
-63
lines changed

src/services/symbolDisplay.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,8 @@ namespace ts.SymbolDisplay {
611611
displayParts.push(textPart(allSignatures.length === 2 ? "overload" : "overloads"));
612612
displayParts.push(punctuationPart(SyntaxKind.CloseParenToken));
613613
}
614-
documentation = signature.getDocumentationComment(typeChecker);
614+
const docComment = signature.getDocumentationComment(typeChecker);
615+
documentation = docComment.length === 0 ? undefined : docComment;
615616
tags = signature.getJsDocTags();
616617
}
617618

tests/cases/fourslash/commentsClass.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/// <reference path='fourslash.ts' />
22

3-
/////** This is class c2 without constuctor*/
3+
/////** This is class c2 without constructor*/
44
////class c/*1*/2 {
55
////}
66
////var i/*2*/2 = new c/*28*/2(/*3*/);
@@ -59,15 +59,15 @@
5959
////var myVar = new m.m2.c/*33*/1();
6060

6161
verify.quickInfos({
62-
1: ["class c2", "This is class c2 without constuctor"],
62+
1: ["class c2", "This is class c2 without constructor"],
6363
2: "var i2: c2"
6464
});
6565

6666
verify.signatureHelp({ marker: "3", docComment: "" });
6767

6868
verify.quickInfos({
6969
4: "var i2_c: typeof c2",
70-
5: ["class c2", "This is class c2 without constuctor"],
70+
5: ["class c2", "This is class c2 without constructor"],
7171
6: "class c3",
7272
7: "var i3: c3"
7373
});
@@ -107,7 +107,7 @@ verify.quickInfos({
107107
});
108108

109109
goTo.marker('26');
110-
verify.completionListContains("c2", "class c2", "This is class c2 without constuctor");
110+
verify.completionListContains("c2", "class c2", "This is class c2 without constructor");
111111
verify.completionListContains("i2", "var i2: c2", "");
112112
verify.completionListContains("i2_c", "var i2_c: typeof c2", "");
113113
verify.completionListContains("c3", "class c3", "");
@@ -131,10 +131,10 @@ verify.signatureHelp({
131131
});
132132

133133
verify.quickInfos({
134-
28: "constructor c2(): c2",
134+
28: ["constructor c2(): c2", "This is class c2 without constructor"],
135135
29: ["constructor c3(): c3", "Constructor comment"],
136136
30: ["constructor c4(): c4", "Constructor comment"],
137-
31: "constructor c5(): c5",
137+
31: ["constructor c5(): c5", "Class with statics"],
138138
32: ["constructor c6(): c6", "constructor comment"],
139139
33: ["constructor m.m2.c1(): m.m2.c1", "constructor comment"]
140140
});

tests/cases/fourslash/commentsCommentParsing.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ verify.quickInfos({
323323

324324
verify.signatureHelp({ marker: "26", overloadsCount: 2, docComment: "" });
325325
verify.quickInfos({
326-
"26q": "function f1(b: string): any (+1 overload)",
326+
"26q": ["function f1(b: string): any (+1 overload)", "fn f1 with number"],
327327
"26aq": "(parameter) b: string"
328328
});
329329

tests/cases/fourslash/commentsExternalModules.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ verify.quickInfoAt("6q", "function m1.fooExport(): number", "exported function")
5555
verify.quickInfoAt("7", "var myvar: m1.m2.c");
5656

5757
goTo.marker('8');
58-
verify.completionListContains("c", "constructor m1.m2.c(): m1.m2.c", "");
58+
verify.completionListContains("c", "constructor m1.m2.c(): m1.m2.c", "class comment;");
5959
verify.completionListContains("i", "var m1.m2.i: m1.m2.c", "i");
6060

6161
goTo.file("commentsExternalModules_file1.ts");
@@ -78,5 +78,5 @@ verify.quickInfoAt("13q", "function extMod.m1.fooExport(): number", "exported fu
7878
verify.quickInfoAt("14", "var newVar: extMod.m1.m2.c");
7979

8080
goTo.marker('15');
81-
verify.completionListContains("c", "constructor extMod.m1.m2.c(): extMod.m1.m2.c", "");
81+
verify.completionListContains("c", "constructor extMod.m1.m2.c(): extMod.m1.m2.c", "class comment;");
8282
verify.completionListContains("i", "var extMod.m1.m2.i: extMod.m1.m2.c", "i");

tests/cases/fourslash/commentsImportDeclaration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ verify.quickInfos({
4949
verify.completions({
5050
marker: "10",
5151
exact: [
52-
{ name: "c", text: "constructor extMod.m1.m2.c(): extMod.m1.m2.c" },
52+
{ name: "c", text: "constructor extMod.m1.m2.c(): extMod.m1.m2.c", documentation: "class comment;" },
5353
{ name: "i", text: "var extMod.m1.m2.i: extMod.m1.m2.c", documentation: "i" },
5454
],
5555
});

tests/cases/fourslash/commentsInheritance.ts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@
223223
goTo.marker('1');
224224
verify.completionListContains("i1_p1", "(property) i1.i1_p1: number", "i1_p1");
225225
verify.completionListContains("i1_f1", "(method) i1.i1_f1(): void", "i1_f1");
226-
verify.completionListContains("i1_l1", "(property) i1.i1_l1: () => void", "");
226+
verify.completionListContains("i1_l1", "(property) i1.i1_l1: () => void", "i1_l1");
227227
verify.completionListContains("i1_nc_p1", "(property) i1.i1_nc_p1: number", "");
228228
verify.completionListContains("i1_nc_f1", "(method) i1.i1_nc_f1(): void", "");
229229
verify.completionListContains("i1_nc_l1", "(property) i1.i1_nc_l1: () => void", "");
@@ -244,7 +244,7 @@ verify.quickInfos({
244244
"3q": "(method) i1.i1_nc_f1(): void",
245245
"4q": "(method) i1.f1(): void",
246246
"5q": "(method) i1.nc_f1(): void",
247-
l2q: "(property) i1.i1_l1: () => void",
247+
l2q: ["(property) i1.i1_l1: () => void", "i1_l1"],
248248
l3q: "(property) i1.i1_nc_l1: () => void",
249249
l4q: "(property) i1.l1: () => void",
250250
l5q: "(property) i1.nc_l1: () => void"
@@ -253,7 +253,7 @@ verify.quickInfos({
253253
goTo.marker('6');
254254
verify.completionListContains("i1_p1", "(property) c1.i1_p1: number", "i1_p1");
255255
verify.completionListContains("i1_f1", "(method) c1.i1_f1(): void", "i1_f1");
256-
verify.completionListContains("i1_l1", "(property) c1.i1_l1: () => void", "");
256+
verify.completionListContains("i1_l1", "(property) c1.i1_l1: () => void", "i1_l1");
257257
verify.completionListContains("i1_nc_p1", "(property) c1.i1_nc_p1: number", "");
258258
verify.completionListContains("i1_nc_f1", "(method) c1.i1_nc_f1(): void", "");
259259
verify.completionListContains("i1_nc_l1", "(property) c1.i1_nc_l1: () => void", "");
@@ -278,7 +278,7 @@ verify.quickInfos({
278278
"8q": "(method) c1.i1_nc_f1(): void",
279279
"9q": ["(method) c1.f1(): void", "c1_f1"],
280280
"10q": ["(method) c1.nc_f1(): void", "c1_nc_f1"],
281-
l7q: "(property) c1.i1_l1: () => void",
281+
l7q: ["(property) c1.i1_l1: () => void", "i1_l1"],
282282
l8q: "(property) c1.i1_nc_l1: () => void",
283283
l9q: ["(property) c1.l1: () => void", "c1_l1"],
284284
l10q: ["(property) c1.nc_l1: () => void", "c1_nc_l1"],
@@ -287,7 +287,7 @@ verify.quickInfos({
287287
goTo.marker('11');
288288
verify.completionListContains("i1_p1", "(property) i1.i1_p1: number", "i1_p1");
289289
verify.completionListContains("i1_f1", "(method) i1.i1_f1(): void", "i1_f1");
290-
verify.completionListContains("i1_l1", "(property) i1.i1_l1: () => void", "");
290+
verify.completionListContains("i1_l1", "(property) i1.i1_l1: () => void", "i1_l1");
291291
verify.completionListContains("i1_nc_p1", "(property) i1.i1_nc_p1: number", "");
292292
verify.completionListContains("i1_nc_f1", "(method) i1.i1_nc_f1(): void", "");
293293
verify.completionListContains("i1_nc_l1", "(property) i1.i1_nc_l1: () => void", "");
@@ -307,7 +307,7 @@ verify.quickInfos({
307307
"13q": "(method) i1.i1_nc_f1(): void",
308308
"14q": "(method) i1.f1(): void",
309309
"15q": "(method) i1.nc_f1(): void",
310-
l12q: "(property) i1.i1_l1: () => void",
310+
l12q: ["(property) i1.i1_l1: () => void", "i1_l1"],
311311
l13q: "(property) i1.i1_nc_l1: () => void",
312312
l14q: "(property) i1.l1: () => void",
313313
l15q: "(property) i1.nc_l1: () => void",
@@ -437,13 +437,13 @@ verify.completionListContains("c4_i", "var c4_i: c4", "");
437437
goTo.marker('36');
438438
verify.completionListContains("i2_p1", "(property) i2.i2_p1: number", "i2_p1");
439439
verify.completionListContains("i2_f1", "(method) i2.i2_f1(): void", "i2_f1");
440-
verify.completionListContains("i2_l1", "(property) i2.i2_l1: () => void", "");
440+
verify.completionListContains("i2_l1", "(property) i2.i2_l1: () => void", "i2_l1");
441441
verify.completionListContains("i2_nc_p1", "(property) i2.i2_nc_p1: number", "");
442442
verify.completionListContains("i2_nc_f1", "(method) i2.i2_nc_f1(): void", "");
443443
verify.completionListContains("i2_nc_l1", "(property) i2.i2_nc_l1: () => void", "");
444444
verify.completionListContains("p1", "(property) i2.p1: number", "i2 p1");
445445
verify.completionListContains("f1", "(method) i2.f1(): void", "i2 f1");
446-
verify.completionListContains("l1", "(property) i2.l1: () => void", "");
446+
verify.completionListContains("l1", "(property) i2.l1: () => void", "i2 l1");
447447
verify.completionListContains("nc_p1", "(property) i2.nc_p1: number", "");
448448
verify.completionListContains("nc_f1", "(method) i2.nc_f1(): void", "");
449449
verify.completionListContains("nc_l1", "(property) i2.nc_l1: () => void", "");
@@ -460,22 +460,22 @@ verify.quickInfos({
460460
"38q": "(method) i2.i2_nc_f1(): void",
461461
"39q": ["(method) i2.f1(): void", "i2 f1"],
462462
"40q": "(method) i2.nc_f1(): void",
463-
"l37q": "(property) i2.i2_l1: () => void",
463+
"l37q": ["(property) i2.i2_l1: () => void", "i2_l1"],
464464
"l38q": "(property) i2.i2_nc_l1: () => void",
465-
"l39q": "(property) i2.l1: () => void",
465+
"l39q": ["(property) i2.l1: () => void", "i2 l1"],
466466
"l40q": "(property) i2.nc_l1: () => void",
467467
});
468468

469469
goTo.marker('41');
470470
verify.completionListContains("i2_p1", "(property) i2.i2_p1: number", "i2_p1");
471471
verify.completionListContains("i2_f1", "(method) i2.i2_f1(): void", "i2_f1");
472-
verify.completionListContains("i2_l1", "(property) i2.i2_l1: () => void", "");
472+
verify.completionListContains("i2_l1", "(property) i2.i2_l1: () => void", "i2_l1");
473473
verify.completionListContains("i2_nc_p1", "(property) i2.i2_nc_p1: number", "");
474474
verify.completionListContains("i2_nc_f1", "(method) i2.i2_nc_f1(): void", "");
475475
verify.completionListContains("i2_nc_l1", "(property) i2.i2_nc_l1: () => void", "");
476476
verify.completionListContains("p1", "(property) i3.p1: number", "i3 p1");
477477
verify.completionListContains("f1", "(method) i3.f1(): void", "i3 f1");
478-
verify.completionListContains("l1", "(property) i3.l1: () => void", "");
478+
verify.completionListContains("l1", "(property) i3.l1: () => void", "i3 l1");
479479
verify.completionListContains("nc_p1", "(property) i3.nc_p1: number", "");
480480
verify.completionListContains("nc_f1", "(method) i3.nc_f1(): void", "");
481481
verify.completionListContains("nc_l1", "(property) i3.nc_l1: () => void", "");
@@ -490,22 +490,22 @@ verify.quickInfos({
490490
"43q": "(method) i2.i2_nc_f1(): void",
491491
"44q": ["(method) i3.f1(): void", "i3 f1"],
492492
"45q": "(method) i3.nc_f1(): void",
493-
l42q: "(property) i2.i2_l1: () => void",
493+
l42q: ["(property) i2.i2_l1: () => void", "i2_l1"],
494494
l43q: "(property) i2.i2_nc_l1: () => void",
495-
l44q: "(property) i3.l1: () => void",
495+
l44q: ["(property) i3.l1: () => void", "i3 l1"],
496496
l45q: "(property) i3.nc_l1: () => void"
497497
});
498498

499499
goTo.marker('46');
500500
verify.completionListContains("i2_p1", "(property) i2.i2_p1: number", "i2_p1");
501501
verify.completionListContains("i2_f1", "(method) i2.i2_f1(): void", "i2_f1");
502-
verify.completionListContains("i2_l1", "(property) i2.i2_l1: () => void", "");
502+
verify.completionListContains("i2_l1", "(property) i2.i2_l1: () => void", "i2_l1");
503503
verify.completionListContains("i2_nc_p1", "(property) i2.i2_nc_p1: number", "");
504504
verify.completionListContains("i2_nc_f1", "(method) i2.i2_nc_f1(): void", "");
505505
verify.completionListContains("i2_nc_l1", "(property) i2.i2_nc_l1: () => void", "");
506506
verify.completionListContains("p1", "(property) i2.p1: number", "i2 p1");
507507
verify.completionListContains("f1", "(method) i2.f1(): void", "i2 f1");
508-
verify.completionListContains("l1", "(property) i2.l1: () => void", "");
508+
verify.completionListContains("l1", "(property) i2.l1: () => void", "i2 l1");
509509
verify.completionListContains("nc_p1", "(property) i2.nc_p1: number", "");
510510
verify.completionListContains("nc_f1", "(method) i2.nc_f1(): void", "");
511511
verify.completionListContains("nc_l1", "(property) i2.nc_l1: () => void", "");
@@ -520,9 +520,9 @@ verify.quickInfos({
520520
"48q": "(method) i2.i2_nc_f1(): void",
521521
"49q": ["(method) i2.f1(): void", "i2 f1"],
522522
"50q": "(method) i2.nc_f1(): void",
523-
l47q: "(property) i2.i2_l1: () => void",
523+
l47q: ["(property) i2.i2_l1: () => void", "i2_l1"],
524524
l48q: "(property) i2.i2_nc_l1: () => void",
525-
l49q: "(property) i2.l1: () => void",
525+
l49q: ["(property) i2.l1: () => void", "i2 l1"],
526526
l40q: "(property) i2.nc_l1: () => void"
527527
});
528528

@@ -537,7 +537,7 @@ verify.completionListContains("i2", "interface i2", "");
537537
verify.completionListContains("i3", "interface i3", "");
538538

539539
verify.quickInfos({
540-
52: "constructor c5(): c5",
540+
52: ["constructor c5(): c5", "c5 class"],
541541
53: ["class c5", "c5 class"],
542542
54: "(property) c5.b: number",
543543
55: ["constructor c2(a: number): c2", "c2 constructor"],

tests/cases/fourslash/commentsInterface.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ verify.quickInfos({
9696
verify.signatureHelp({ marker: "12", docComment: "", parameterDocComment: "param help" });
9797

9898
verify.quickInfos({
99-
"12q": "(property) i2.foo: (b: number) => string",
99+
"12q": ["(property) i2.foo: (b: number) => string", "this is foo"],
100100

101101
13: "var i2_i_i2_si: number",
102102
"13q": "var i2_i: i2",
@@ -186,7 +186,7 @@ verify.completionListContains("i3_i", "var i3_i: i3", "");
186186
goTo.marker('41');
187187
verify.quickInfoIs("(method) i3.f(a: number): string", "Function i3 f");
188188
verify.completionListContains("f", "(method) i3.f(a: number): string", "Function i3 f");
189-
verify.completionListContains("l", "(property) i3.l: (b: number) => string", "");
189+
verify.completionListContains("l", "(property) i3.l: (b: number) => string", "i3 l");
190190
verify.completionListContains("x", "(property) i3.x: number", "Comment i3 x");
191191
verify.completionListContains("nc_f", "(method) i3.nc_f(a: number): string", "");
192192
verify.completionListContains("nc_l", "(property) i3.nc_l: (b: number) => string", "");
@@ -195,7 +195,7 @@ verify.completionListContains("nc_x", "(property) i3.nc_x: number", "");
195195
verify.signatureHelp({ marker: "42", docComment: "Function i3 f", parameterDocComment: "number parameter" });
196196

197197
verify.signatureHelp({ marker: "43", docComment: "", parameterDocComment: "comment i3 l b" });
198-
verify.quickInfoAt("43q", "(property) i3.l: (b: number) => string");
198+
verify.quickInfoAt("43q", "(property) i3.l: (b: number) => string", "i3 l");
199199

200200
verify.signatureHelp({ marker: "44", docComment: "" });
201201
verify.quickInfoAt("44q", "(method) i3.nc_f(a: number): string");

tests/cases/fourslash/commentsModules.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ verify.signatureHelp({ marker: "6", docComment: "exported function" });
119119
verify.quickInfoAt("7", "var myvar: m1.m2.c");
120120

121121
goTo.marker('8');
122-
verify.quickInfoIs("constructor m1.m2.c(): m1.m2.c");
123-
verify.completionListContains("c", "constructor m1.m2.c(): m1.m2.c", "");
122+
verify.quickInfoIs("constructor m1.m2.c(): m1.m2.c", "class comment;");
123+
verify.completionListContains("c", "constructor m1.m2.c(): m1.m2.c", "class comment;");
124124
verify.completionListContains("i", "var m1.m2.i: m1.m2.c", "i");
125125

126126
goTo.marker('9');
@@ -132,8 +132,8 @@ verify.completionListContains("m3", "namespace m2.m3");
132132
verify.quickInfoIs("namespace m2.m3", "namespace comment of m2.m3");
133133

134134
goTo.marker('11');
135-
verify.quickInfoIs("constructor m2.m3.c(): m2.m3.c");
136-
verify.completionListContains("c", "constructor m2.m3.c(): m2.m3.c", "");
135+
verify.quickInfoIs("constructor m2.m3.c(): m2.m3.c", "Exported class comment");
136+
verify.completionListContains("c", "constructor m2.m3.c(): m2.m3.c", "Exported class comment");
137137

138138
goTo.marker('12');
139139
verify.completionListContains("m3", "namespace m3", "namespace comment of m3.m4.m5");
@@ -148,8 +148,8 @@ verify.completionListContains("m5", "namespace m3.m4.m5");
148148
verify.quickInfoIs("namespace m3.m4.m5", "namespace comment of m3.m4.m5");
149149

150150
goTo.marker('15');
151-
verify.quickInfoIs("constructor m3.m4.m5.c(): m3.m4.m5.c");
152-
verify.completionListContains("c", "constructor m3.m4.m5.c(): m3.m4.m5.c", "");
151+
verify.quickInfoIs("constructor m3.m4.m5.c(): m3.m4.m5.c", "Exported class comment");
152+
verify.completionListContains("c", "constructor m3.m4.m5.c(): m3.m4.m5.c", "Exported class comment");
153153

154154
goTo.marker('16');
155155
verify.completionListContains("m4", "namespace m4", "namespace comment of m4.m5.m6");
@@ -168,8 +168,8 @@ verify.completionListContains("m7", "namespace m4.m5.m6.m7");
168168
verify.quickInfoIs("namespace m4.m5.m6.m7");
169169

170170
goTo.marker('20');
171-
verify.completionListContains("c", "constructor m4.m5.m6.m7.c(): m4.m5.m6.m7.c", "");
172-
verify.quickInfoIs("constructor m4.m5.m6.m7.c(): m4.m5.m6.m7.c");
171+
verify.completionListContains("c", "constructor m4.m5.m6.m7.c(): m4.m5.m6.m7.c", "Exported class comment");
172+
verify.quickInfoIs("constructor m4.m5.m6.m7.c(): m4.m5.m6.m7.c", "Exported class comment");
173173

174174
goTo.marker('21');
175175
verify.completionListContains("m5", "namespace m5");
@@ -188,8 +188,8 @@ verify.completionListContains("m8", "namespace m5.m6.m7.m8");
188188
verify.quickInfoIs("namespace m5.m6.m7.m8", "namespace m8 comment");
189189

190190
goTo.marker('25');
191-
verify.completionListContains("c", "constructor m5.m6.m7.m8.c(): m5.m6.m7.m8.c", "");
192-
verify.quickInfoIs("constructor m5.m6.m7.m8.c(): m5.m6.m7.m8.c");
191+
verify.completionListContains("c", "constructor m5.m6.m7.m8.c(): m5.m6.m7.m8.c", "Exported class comment");
192+
verify.quickInfoIs("constructor m5.m6.m7.m8.c(): m5.m6.m7.m8.c", "Exported class comment");
193193

194194
goTo.marker('26');
195195
verify.completionListContains("m6", "namespace m6");
@@ -204,8 +204,8 @@ verify.completionListContains("m8", "namespace m6.m7.m8");
204204
verify.quickInfoIs("namespace m6.m7.m8");
205205

206206
goTo.marker('29');
207-
verify.completionListContains("c", "constructor m6.m7.m8.c(): m6.m7.m8.c", "");
208-
verify.quickInfoIs("constructor m6.m7.m8.c(): m6.m7.m8.c");
207+
verify.completionListContains("c", "constructor m6.m7.m8.c(): m6.m7.m8.c", "Exported class comment");
208+
verify.quickInfoIs("constructor m6.m7.m8.c(): m6.m7.m8.c", "Exported class comment");
209209

210210
goTo.marker('30');
211211
verify.completionListContains("m7", "namespace m7");
@@ -220,8 +220,8 @@ verify.completionListContains("m9", "namespace m7.m8.m9");
220220
verify.quickInfoIs("namespace m7.m8.m9", "namespace m9 comment");
221221

222222
goTo.marker('33');
223-
verify.completionListContains("c", "constructor m7.m8.m9.c(): m7.m8.m9.c", "");
224-
verify.quickInfoIs("constructor m7.m8.m9.c(): m7.m8.m9.c");
223+
verify.completionListContains("c", "constructor m7.m8.m9.c(): m7.m8.m9.c", "Exported class comment");
224+
verify.quickInfoIs("constructor m7.m8.m9.c(): m7.m8.m9.c", "Exported class comment");
225225

226226
goTo.marker('34');
227227
verify.completionListContains("c", 'class c', "");

0 commit comments

Comments
 (0)