1
1
namespace ts . projectSystem {
2
2
describe ( "unittests:: tsserver:: getExportReferences" , ( ) => {
3
+ const exportVariable = "export const value = 0;" ;
4
+ const exportArrayDestructured = "export const [valueA, valueB] = [0, 1];" ;
5
+ const exportObjectDestructured = "export const { valueC, valueD: renamedD } = { valueC: 0, valueD: 1 };" ;
6
+
3
7
const mainTs : File = {
4
8
path : "/main.ts" ,
5
- content : 'import { value, valueA, valueB, valueC, valueD } from "./mod";' ,
9
+ content : 'import { value, valueA, valueB, valueC, renamedD } from "./mod";' ,
6
10
} ;
7
11
const modTs : File = {
8
12
path : "/mod.ts" ,
9
- content : `export const value = 0;
10
- export const [valueA, valueB] = [0, 1];
11
- export const { valueC, valueD } = { valueC: 0, valueD: 1 };` ,
13
+ content : `${ exportVariable }
14
+ ${ exportArrayDestructured }
15
+ ${ exportObjectDestructured }
16
+ ` ,
12
17
} ;
13
18
const tsconfig : File = {
14
19
path : "/tsconfig.json" ,
@@ -26,11 +31,22 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
26
31
makeReferenceItem ( {
27
32
file : mainTs ,
28
33
isDefinition : true ,
29
- lineText : 'import { value, valueA, valueB, valueC, valueD } from "./mod";' ,
30
- contextText : 'import { value, valueA, valueB, valueC, valueD } from "./mod";' ,
34
+ lineText : mainTs . content ,
35
+ contextText : mainTs . content ,
31
36
text,
32
37
} ) ;
33
38
39
+ const referenceModTs = (
40
+ texts : { text : string ; lineText : string ; contextText ?: string } ,
41
+ override : Partial < MakeReferenceItem > = { } ,
42
+ ) : protocol . ReferencesResponseItem =>
43
+ makeReferenceItem ( {
44
+ file : modTs ,
45
+ isDefinition : true ,
46
+ ...texts ,
47
+ ...override ,
48
+ } ) ;
49
+
34
50
it ( "should get const variable decralation references" , ( ) => {
35
51
const session = makeSampleSession ( ) ;
36
52
@@ -40,16 +56,11 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
40
56
protocolFileLocationFromSubstring ( modTs , "value" ) ,
41
57
) ;
42
58
43
- const referenceModTs = ( modTs : File ) : protocol . ReferencesResponseItem =>
44
- makeReferenceItem ( {
45
- file : modTs ,
46
- isDefinition : true ,
47
- lineText : "export const value = 0;" ,
48
- contextText : "export const value = 0;" ,
49
- text : "value" ,
50
- } ) ;
51
59
const expectResponse = {
52
- refs : [ referenceModTs ( modTs ) , referenceMainTs ( mainTs , "value" ) ] ,
60
+ refs : [
61
+ referenceModTs ( { text : "value" , lineText : exportVariable , contextText : exportVariable } ) ,
62
+ referenceMainTs ( mainTs , "value" ) ,
63
+ ] ,
53
64
symbolDisplayString : "const value: 0" ,
54
65
symbolName : "value" ,
55
66
symbolStartOffset : protocolLocationFromSubstring ( modTs . content , "value" ) . offset ,
@@ -66,17 +77,15 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
66
77
protocolFileLocationFromSubstring ( modTs , "valueA" ) ,
67
78
) ;
68
79
69
- const referenceModTs = ( modTs : File ) : protocol . ReferencesResponseItem =>
70
- makeReferenceItem ( {
71
- file : modTs ,
72
- isDefinition : true ,
73
- lineText : "export const [valueA, valueB] = [0, 1];" ,
74
- contextText : "export const [valueA, valueB] = [0, 1];" ,
75
- text : "valueA" ,
76
- } ) ;
77
-
78
80
const expectResponse = {
79
- refs : [ referenceModTs ( modTs ) , referenceMainTs ( mainTs , "valueA" ) ] ,
81
+ refs : [
82
+ referenceModTs ( {
83
+ text : "valueA" ,
84
+ lineText : exportArrayDestructured ,
85
+ contextText : exportArrayDestructured ,
86
+ } ) ,
87
+ referenceMainTs ( mainTs , "valueA" ) ,
88
+ ] ,
80
89
symbolDisplayString : "const valueA: number" ,
81
90
symbolName : "valueA" ,
82
91
symbolStartOffset : protocolLocationFromSubstring ( modTs . content , "valueA" ) . offset ,
@@ -92,35 +101,18 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
92
101
protocol . CommandTypes . References ,
93
102
protocolFileLocationFromSubstring ( modTs , "valueC" ) ,
94
103
) ;
95
-
96
- const referenceModTs = (
97
- modTs : File ,
98
- opts : {
99
- contextText : string ;
100
- options ?: SpanFromSubstringOptions ;
101
- contextOptions ?: SpanFromSubstringOptions ;
102
- } ,
103
- ) : protocol . ReferencesResponseItem =>
104
- makeReferenceItem ( {
105
- file : modTs ,
106
- isDefinition : true ,
107
- lineText : "export const { valueC, valueD } = { valueC: 0, valueD: 1 };" ,
108
- contextText : opts . contextText ,
109
- text : "valueC" ,
110
- options : opts . options ,
111
- contextOptions : opts . contextOptions ,
112
- } ) ;
113
-
114
104
const expectResponse = {
115
105
refs : [
116
- referenceModTs ( modTs , {
117
- contextText : "export const { valueC, valueD } = { valueC: 0, valueD: 1 };" ,
106
+ referenceModTs ( {
107
+ text : "valueC" ,
108
+ lineText : exportObjectDestructured ,
109
+ contextText : exportObjectDestructured ,
118
110
} ) ,
119
111
referenceMainTs ( mainTs , "valueC" ) ,
120
- referenceModTs ( modTs , {
121
- contextText : "valueC: 0" ,
122
- options : { index : 1 } ,
123
- } ) ,
112
+ referenceModTs (
113
+ { text : "valueC" , lineText : exportObjectDestructured , contextText : "valueC: 0" } ,
114
+ { options : { index : 1 } } ,
115
+ ) ,
124
116
] ,
125
117
symbolDisplayString : "const valueC: number" ,
126
118
symbolName : "valueC" ,
@@ -129,5 +121,30 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
129
121
130
122
assert . deepEqual ( response , expectResponse ) ;
131
123
} ) ;
124
+
125
+ it ( "should get object decralation references that renames destructured property" , ( ) => {
126
+ const session = makeSampleSession ( ) ;
127
+ const response = executeSessionRequest < protocol . ReferencesRequest , protocol . ReferencesResponse > (
128
+ session ,
129
+ protocol . CommandTypes . References ,
130
+ protocolFileLocationFromSubstring ( modTs , "renamedD" ) ,
131
+ ) ;
132
+
133
+ const expectResponse = {
134
+ refs : [
135
+ referenceModTs ( {
136
+ text : "renamedD" ,
137
+ lineText : exportObjectDestructured ,
138
+ contextText : exportObjectDestructured ,
139
+ } ) ,
140
+ referenceMainTs ( mainTs , "renamedD" ) ,
141
+ ] ,
142
+ symbolDisplayString : "const renamedD: number" ,
143
+ symbolName : "renamedD" ,
144
+ symbolStartOffset : protocolLocationFromSubstring ( modTs . content , "renamedD" ) . offset ,
145
+ } ;
146
+
147
+ assert . deepEqual ( response , expectResponse ) ;
148
+ } ) ;
132
149
} ) ;
133
150
}
0 commit comments