Skip to content

Commit 19e2a31

Browse files
authored
feat(49834): Suggestion: filter enum member ids from their own jsdocs (microsoft#49843)
* feat(49834): omit self-referenced enum declaration in JsDoc * change code style
1 parent 6aa9b87 commit 19e2a31

26 files changed

+587
-0
lines changed

src/compiler/checker.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42548,6 +42548,12 @@ namespace ts {
4254842548
return resolveJSDocMemberName(name, /*ignoreErrors*/ false, getSymbolOfNode(container));
4254942549
}
4255042550
}
42551+
if (result && isJSDoc) {
42552+
const container = getJSDocHost(name);
42553+
if (container && isEnumMember(container) && container === result.valueDeclaration) {
42554+
return resolveEntityName(name, meaning, /*ignoreErrors*/ true, /* dontResolveAlias */ true, getSourceFileOfNode(container)) || result;
42555+
}
42556+
}
4255142557
return result;
4255242558
}
4255342559
else if (isPrivateIdentifier(name)) {
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
// === /tests/cases/fourslash/findAllReferencesFromLinkTagReference1.ts ===
2+
// enum E {
3+
// /** {@link /*FIND ALL REFS*/[|A|]} */
4+
// [|A|]
5+
// }
6+
7+
[
8+
{
9+
"definition": {
10+
"containerKind": "",
11+
"containerName": "",
12+
"fileName": "/tests/cases/fourslash/findAllReferencesFromLinkTagReference1.ts",
13+
"kind": "enum member",
14+
"name": "(enum member) E.A = 0",
15+
"textSpan": {
16+
"start": 34,
17+
"length": 1
18+
},
19+
"displayParts": [
20+
{
21+
"text": "(",
22+
"kind": "punctuation"
23+
},
24+
{
25+
"text": "enum member",
26+
"kind": "text"
27+
},
28+
{
29+
"text": ")",
30+
"kind": "punctuation"
31+
},
32+
{
33+
"text": " ",
34+
"kind": "space"
35+
},
36+
{
37+
"text": "E",
38+
"kind": "enumName"
39+
},
40+
{
41+
"text": ".",
42+
"kind": "punctuation"
43+
},
44+
{
45+
"text": "A",
46+
"kind": "enumMemberName"
47+
},
48+
{
49+
"text": " ",
50+
"kind": "space"
51+
},
52+
{
53+
"text": "=",
54+
"kind": "operator"
55+
},
56+
{
57+
"text": " ",
58+
"kind": "space"
59+
},
60+
{
61+
"text": "0",
62+
"kind": "numericLiteral"
63+
}
64+
]
65+
},
66+
"references": [
67+
{
68+
"textSpan": {
69+
"start": 24,
70+
"length": 1
71+
},
72+
"fileName": "/tests/cases/fourslash/findAllReferencesFromLinkTagReference1.ts",
73+
"isWriteAccess": false
74+
},
75+
{
76+
"textSpan": {
77+
"start": 34,
78+
"length": 1
79+
},
80+
"fileName": "/tests/cases/fourslash/findAllReferencesFromLinkTagReference1.ts",
81+
"isWriteAccess": true
82+
}
83+
]
84+
}
85+
]
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// === /a.ts ===
2+
// enum E {
3+
// /** {@link /*FIND ALL REFS*/[|Foo|]} */
4+
// Foo
5+
// }
6+
// interface [|Foo|] {
7+
// foo: E.Foo;
8+
// }
9+
10+
[
11+
{
12+
"definition": {
13+
"containerKind": "",
14+
"containerName": "",
15+
"fileName": "/a.ts",
16+
"kind": "interface",
17+
"name": "interface Foo",
18+
"textSpan": {
19+
"start": 52,
20+
"length": 3
21+
},
22+
"displayParts": [
23+
{
24+
"text": "interface",
25+
"kind": "keyword"
26+
},
27+
{
28+
"text": " ",
29+
"kind": "space"
30+
},
31+
{
32+
"text": "Foo",
33+
"kind": "interfaceName"
34+
}
35+
],
36+
"contextSpan": {
37+
"start": 42,
38+
"length": 33
39+
}
40+
},
41+
"references": [
42+
{
43+
"textSpan": {
44+
"start": 24,
45+
"length": 3
46+
},
47+
"fileName": "/a.ts",
48+
"isWriteAccess": false
49+
},
50+
{
51+
"textSpan": {
52+
"start": 52,
53+
"length": 3
54+
},
55+
"fileName": "/a.ts",
56+
"contextSpan": {
57+
"start": 42,
58+
"length": 33
59+
},
60+
"isWriteAccess": true
61+
}
62+
]
63+
}
64+
]
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
// === /tests/cases/fourslash/a.ts ===
2+
// interface [|Foo|] {
3+
// foo: E.Foo;
4+
// }
5+
6+
// === /tests/cases/fourslash/b.ts ===
7+
// enum E {
8+
// /** {@link /*FIND ALL REFS*/[|Foo|]} */
9+
// Foo
10+
// }
11+
12+
[
13+
{
14+
"definition": {
15+
"containerKind": "",
16+
"containerName": "",
17+
"fileName": "/tests/cases/fourslash/a.ts",
18+
"kind": "interface",
19+
"name": "interface Foo",
20+
"textSpan": {
21+
"start": 10,
22+
"length": 3
23+
},
24+
"displayParts": [
25+
{
26+
"text": "interface",
27+
"kind": "keyword"
28+
},
29+
{
30+
"text": " ",
31+
"kind": "space"
32+
},
33+
{
34+
"text": "Foo",
35+
"kind": "interfaceName"
36+
}
37+
],
38+
"contextSpan": {
39+
"start": 0,
40+
"length": 33
41+
}
42+
},
43+
"references": [
44+
{
45+
"textSpan": {
46+
"start": 10,
47+
"length": 3
48+
},
49+
"fileName": "/tests/cases/fourslash/a.ts",
50+
"contextSpan": {
51+
"start": 0,
52+
"length": 33
53+
},
54+
"isWriteAccess": true
55+
},
56+
{
57+
"textSpan": {
58+
"start": 24,
59+
"length": 3
60+
},
61+
"fileName": "/tests/cases/fourslash/b.ts",
62+
"isWriteAccess": false
63+
}
64+
]
65+
}
66+
]
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
// === /tests/cases/fourslash/findAllReferencesFromLinkTagReference4.ts ===
2+
// enum E {
3+
// /** {@link /*FIND ALL REFS*/[|B|]} */
4+
// A,
5+
// [|B|]
6+
// }
7+
8+
[
9+
{
10+
"definition": {
11+
"containerKind": "",
12+
"containerName": "",
13+
"fileName": "/tests/cases/fourslash/findAllReferencesFromLinkTagReference4.ts",
14+
"kind": "enum member",
15+
"name": "(enum member) E.B = 1",
16+
"textSpan": {
17+
"start": 41,
18+
"length": 1
19+
},
20+
"displayParts": [
21+
{
22+
"text": "(",
23+
"kind": "punctuation"
24+
},
25+
{
26+
"text": "enum member",
27+
"kind": "text"
28+
},
29+
{
30+
"text": ")",
31+
"kind": "punctuation"
32+
},
33+
{
34+
"text": " ",
35+
"kind": "space"
36+
},
37+
{
38+
"text": "E",
39+
"kind": "enumName"
40+
},
41+
{
42+
"text": ".",
43+
"kind": "punctuation"
44+
},
45+
{
46+
"text": "B",
47+
"kind": "enumMemberName"
48+
},
49+
{
50+
"text": " ",
51+
"kind": "space"
52+
},
53+
{
54+
"text": "=",
55+
"kind": "operator"
56+
},
57+
{
58+
"text": " ",
59+
"kind": "space"
60+
},
61+
{
62+
"text": "1",
63+
"kind": "numericLiteral"
64+
}
65+
]
66+
},
67+
"references": [
68+
{
69+
"textSpan": {
70+
"start": 24,
71+
"length": 1
72+
},
73+
"fileName": "/tests/cases/fourslash/findAllReferencesFromLinkTagReference4.ts",
74+
"isWriteAccess": false
75+
},
76+
{
77+
"textSpan": {
78+
"start": 41,
79+
"length": 1
80+
},
81+
"fileName": "/tests/cases/fourslash/findAllReferencesFromLinkTagReference4.ts",
82+
"isWriteAccess": true
83+
}
84+
]
85+
}
86+
]

0 commit comments

Comments
 (0)