Skip to content

Commit 3b502f4

Browse files
authored
Fix call hierarchy item serialization and server tests (#40348)
1 parent 8cac241 commit 3b502f4

File tree

4 files changed

+209
-2
lines changed

4 files changed

+209
-2
lines changed

Diff for: src/harness/client.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,7 @@ namespace ts.server {
757757
name: item.name,
758758
kind: item.kind,
759759
kindModifiers: item.kindModifiers,
760+
containerName: item.containerName,
760761
span: this.decodeSpan(item.span, item.file),
761762
selectionSpan: this.decodeSpan(item.selectionSpan, item.file)
762763
};
@@ -778,7 +779,7 @@ namespace ts.server {
778779

779780
provideCallHierarchyIncomingCalls(fileName: string, position: number) {
780781
const args = this.createFileLocationRequestArgs(fileName, position);
781-
const request = this.processRequest<protocol.ProvideCallHierarchyIncomingCallsRequest>(CommandNames.PrepareCallHierarchy, args);
782+
const request = this.processRequest<protocol.ProvideCallHierarchyIncomingCallsRequest>(CommandNames.ProvideCallHierarchyIncomingCalls, args);
782783
const response = this.processResponse<protocol.ProvideCallHierarchyIncomingCallsResponse>(request);
783784
return response.body.map(item => this.convertCallHierarchyIncomingCall(item));
784785
}
@@ -792,7 +793,7 @@ namespace ts.server {
792793

793794
provideCallHierarchyOutgoingCalls(fileName: string, position: number) {
794795
const args = this.createFileLocationRequestArgs(fileName, position);
795-
const request = this.processRequest<protocol.ProvideCallHierarchyOutgoingCallsRequest>(CommandNames.PrepareCallHierarchy, args);
796+
const request = this.processRequest<protocol.ProvideCallHierarchyOutgoingCallsRequest>(CommandNames.ProvideCallHierarchyOutgoingCalls, args);
796797
const response = this.processResponse<protocol.ProvideCallHierarchyOutgoingCallsResponse>(request);
797798
return response.body.map(item => this.convertCallHierarchyOutgoingCall(fileName, item));
798799
}

Diff for: src/server/session.ts

+1
Original file line numberDiff line numberDiff line change
@@ -2408,6 +2408,7 @@ namespace ts.server {
24082408
kind: item.kind,
24092409
kindModifiers: item.kindModifiers,
24102410
file: item.file,
2411+
containerName: item.containerName,
24112412
span: toProtocolTextSpan(item.span, scriptInfo),
24122413
selectionSpan: toProtocolTextSpan(item.selectionSpan, scriptInfo)
24132414
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
╭ name: f
2+
├ kind: function
3+
├ file: /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts
4+
├ span:
5+
│ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:1:1-1:16
6+
│ │ 1: function f() {}
7+
│ │ ^^^^^^^^^^^^^^^
8+
│ ╰
9+
├ selectionSpan:
10+
│ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:1:10-1:11
11+
│ │ 1: function f() {}
12+
│ │ ^
13+
│ ╰
14+
├ incoming:
15+
│ ╭ from:
16+
│ │ ╭ name: sameName
17+
│ │ ├ kind: method
18+
│ │ ├ containerName: A
19+
│ │ ├ file: /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts
20+
│ │ ├ span:
21+
│ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:4:3-6:4
22+
│ │ │ │ 4: static sameName() {
23+
│ │ │ │ ^^^^^^^^^^^^^^^^^^^
24+
│ │ │ │ 5: f();
25+
│ │ │ │ ^^^^^^^^
26+
│ │ │ │ 6: }
27+
│ │ │ │ ^^^
28+
│ │ │ ╰
29+
│ │ ├ selectionSpan:
30+
│ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:4:10-4:18
31+
│ │ │ │ 4: static sameName() {
32+
│ │ │ │ ^^^^^^^^
33+
│ │ │ ╰
34+
│ │ ├ incoming:
35+
│ │ │ ╭ from:
36+
│ │ │ │ ╭ name: sameName
37+
│ │ │ │ ├ kind: method
38+
│ │ │ │ ├ containerName: B
39+
│ │ │ │ ├ file: /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts
40+
│ │ │ │ ├ span:
41+
│ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:10:3-12:4
42+
│ │ │ │ │ │ 10: sameName() {
43+
│ │ │ │ │ │ ^^^^^^^^^^^^
44+
│ │ │ │ │ │ 11: A.sameName();
45+
│ │ │ │ │ │ ^^^^^^^^^^^^^^^^^
46+
│ │ │ │ │ │ 12: }
47+
│ │ │ │ │ │ ^^^
48+
│ │ │ │ │ ╰
49+
│ │ │ │ ├ selectionSpan:
50+
│ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:10:3-10:11
51+
│ │ │ │ │ │ 10: sameName() {
52+
│ │ │ │ │ │ ^^^^^^^^
53+
│ │ │ │ │ ╰
54+
│ │ │ │ ├ incoming:
55+
│ │ │ │ │ ╭ from:
56+
│ │ │ │ │ │ ╭ name: sameName
57+
│ │ │ │ │ │ ├ kind: getter
58+
│ │ │ │ │ │ ├ containerName: Obj
59+
│ │ │ │ │ │ ├ file: /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts
60+
│ │ │ │ │ │ ├ span:
61+
│ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:16:3-18:4
62+
│ │ │ │ │ │ │ │ 16: get sameName() {
63+
│ │ │ │ │ │ │ │ ^^^^^^^^^^^^^^^^
64+
│ │ │ │ │ │ │ │ 17: return new B().sameName;
65+
│ │ │ │ │ │ │ │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
66+
│ │ │ │ │ │ │ │ 18: }
67+
│ │ │ │ │ │ │ │ ^^^
68+
│ │ │ │ │ │ │ ╰
69+
│ │ │ │ │ │ ├ selectionSpan:
70+
│ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:16:7-16:15
71+
│ │ │ │ │ │ │ │ 16: get sameName() {
72+
│ │ │ │ │ │ │ │ ^^^^^^^^
73+
│ │ │ │ │ │ │ ╰
74+
│ │ │ │ │ │ ├ incoming:
75+
│ │ │ │ │ │ │ ╭ from:
76+
│ │ │ │ │ │ │ │ ╭ name: sameName
77+
│ │ │ │ │ │ │ │ ├ kind: function
78+
│ │ │ │ │ │ │ │ ├ containerName: Foo
79+
│ │ │ │ │ │ │ │ ├ file: /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts
80+
│ │ │ │ │ │ │ │ ├ span:
81+
│ │ │ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:22:3-24:4
82+
│ │ │ │ │ │ │ │ │ │ 22: function sameName() {
83+
│ │ │ │ │ │ │ │ │ │ ^^^^^^^^^^^^^^^^^^^^^
84+
│ │ │ │ │ │ │ │ │ │ 23: return Obj.sameName;
85+
│ │ │ │ │ │ │ │ │ │ ^^^^^^^^^^^^^^^^^^^^^^^^
86+
│ │ │ │ │ │ │ │ │ │ 24: }
87+
│ │ │ │ │ │ │ │ │ │ ^^^
88+
│ │ │ │ │ │ │ │ │ ╰
89+
│ │ │ │ │ │ │ │ ├ selectionSpan:
90+
│ │ │ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:22:12-22:20
91+
│ │ │ │ │ │ │ │ │ │ 22: function sameName() {
92+
│ │ │ │ │ │ │ │ │ │ ^^^^^^^^
93+
│ │ │ │ │ │ │ │ │ ╰
94+
│ │ │ │ │ │ │ │ ├ incoming:
95+
│ │ │ │ │ │ │ │ │ ╭ from:
96+
│ │ │ │ │ │ │ │ │ │ ╭ name: C
97+
│ │ │ │ │ │ │ │ │ │ ├ kind: class
98+
│ │ │ │ │ │ │ │ │ │ ├ containerName: Foo
99+
│ │ │ │ │ │ │ │ │ │ ├ file: /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts
100+
│ │ │ │ │ │ │ │ │ │ ├ span:
101+
│ │ │ │ │ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:26:3-30:4
102+
│ │ │ │ │ │ │ │ │ │ │ │ 26: export class C {
103+
│ │ │ │ │ │ │ │ │ │ │ │ ^^^^^^^^^^^^^^^^
104+
│ │ │ │ │ │ │ │ │ │ │ │ 27: constructor() {
105+
│ │ │ │ │ │ │ │ │ │ │ │ ^^^^^^^^^^^^^^^^^^^
106+
│ │ │ │ │ │ │ │ │ │ │ │ 28: sameName();
107+
│ │ │ │ │ │ │ │ │ │ │ │ ^^^^^^^^^^^^^^^^^
108+
│ │ │ │ │ │ │ │ │ │ │ │ 29: }
109+
│ │ │ │ │ │ │ │ │ │ │ │ ^^^^^
110+
│ │ │ │ │ │ │ │ │ │ │ │ 30: }
111+
│ │ │ │ │ │ │ │ │ │ │ │ ^^^
112+
│ │ │ │ │ │ │ │ │ │ │ ╰
113+
│ │ │ │ │ │ │ │ │ │ ├ selectionSpan:
114+
│ │ │ │ │ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:26:16-26:17
115+
│ │ │ │ │ │ │ │ │ │ │ │ 26: export class C {
116+
│ │ │ │ │ │ │ │ │ │ │ │ ^
117+
│ │ │ │ │ │ │ │ │ │ │ ╰
118+
│ │ │ │ │ │ │ │ │ │ ├ incoming:
119+
│ │ │ │ │ │ │ │ │ │ │ ╭ from:
120+
│ │ │ │ │ │ │ │ │ │ │ │ ╭ name: sameName
121+
│ │ │ │ │ │ │ │ │ │ │ │ ├ kind: function
122+
│ │ │ │ │ │ │ │ │ │ │ │ ├ containerName: Bar
123+
│ │ │ │ │ │ │ │ │ │ │ │ ├ file: /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts
124+
│ │ │ │ │ │ │ │ │ │ │ │ ├ span:
125+
│ │ │ │ │ │ │ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:34:20-34:37
126+
│ │ │ │ │ │ │ │ │ │ │ │ │ │ 34: const sameName = () => new Foo.C();
127+
│ │ │ │ │ │ │ │ │ │ │ │ │ │ ^^^^^^^^^^^^^^^^^
128+
│ │ │ │ │ │ │ │ │ │ │ │ │ ╰
129+
│ │ │ │ │ │ │ │ │ │ │ │ ├ selectionSpan:
130+
│ │ │ │ │ │ │ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:34:9-34:17
131+
│ │ │ │ │ │ │ │ │ │ │ │ │ │ 34: const sameName = () => new Foo.C();
132+
│ │ │ │ │ │ │ │ │ │ │ │ │ │ ^^^^^^^^
133+
│ │ │ │ │ │ │ │ │ │ │ │ │ ╰
134+
│ │ │ │ │ │ │ │ │ │ │ │ ╰ incoming: none
135+
│ │ │ │ │ │ │ │ │ │ │ ├ fromSpans:
136+
│ │ │ │ │ │ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:34:34-34:35
137+
│ │ │ │ │ │ │ │ │ │ │ │ │ 34: const sameName = () => new Foo.C();
138+
│ │ │ │ │ │ │ │ │ │ │ │ │ ^
139+
│ │ │ │ │ │ │ │ │ │ ╰ ╰ ╰
140+
│ │ │ │ │ │ │ │ │ ├ fromSpans:
141+
│ │ │ │ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:28:7-28:15
142+
│ │ │ │ │ │ │ │ │ │ │ 28: sameName();
143+
│ │ │ │ │ │ │ │ │ │ │ ^^^^^^^^
144+
│ │ │ │ │ │ │ │ ╰ ╰ ╰
145+
│ │ │ │ │ │ │ ├ fromSpans:
146+
│ │ │ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:23:16-23:24
147+
│ │ │ │ │ │ │ │ │ 23: return Obj.sameName;
148+
│ │ │ │ │ │ │ │ │ ^^^^^^^^
149+
│ │ │ │ │ │ ╰ ╰ ╰
150+
│ │ │ │ │ ├ fromSpans:
151+
│ │ │ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:17:20-17:28
152+
│ │ │ │ │ │ │ 17: return new B().sameName;
153+
│ │ │ │ │ │ │ ^^^^^^^^
154+
│ │ │ │ ╰ ╰ ╰
155+
│ │ │ ├ fromSpans:
156+
│ │ │ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:11:7-11:15
157+
│ │ │ │ │ 11: A.sameName();
158+
│ │ │ │ │ ^^^^^^^^
159+
│ │ ╰ ╰ ╰
160+
│ ├ fromSpans:
161+
│ │ ╭ /tests/cases/fourslash/server/callHierarchyContainerNameServer.ts:5:5-5:6
162+
│ │ │ 5: f();
163+
│ │ │ ^
164+
│ ╰ ╰
165+
╰ outgoing: none
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/// <reference path="../fourslash.ts" />
2+
3+
////function /**/f() {}
4+
////
5+
////class A {
6+
//// static sameName() {
7+
//// f();
8+
//// }
9+
////}
10+
////
11+
////class B {
12+
//// sameName() {
13+
//// A.sameName();
14+
//// }
15+
////}
16+
////
17+
////const Obj = {
18+
//// get sameName() {
19+
//// return new B().sameName;
20+
//// }
21+
////};
22+
////
23+
////namespace Foo {
24+
//// function sameName() {
25+
//// return Obj.sameName;
26+
//// }
27+
////
28+
//// export class C {
29+
//// constructor() {
30+
//// sameName();
31+
//// }
32+
//// }
33+
////}
34+
////
35+
////module Foo.Bar {
36+
//// const sameName = () => new Foo.C();
37+
////}
38+
39+
goTo.marker();
40+
verify.baselineCallHierarchy();

0 commit comments

Comments
 (0)