@zzzen/pyright-internal 1.2.0-dev.20230212 → 1.2.0-dev.20230226

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
  2. package/dist/analyzer/backgroundAnalysisProgram.js +5 -0
  3. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  4. package/dist/analyzer/binder.js +9 -1
  5. package/dist/analyzer/binder.js.map +1 -1
  6. package/dist/analyzer/checker.js +12 -6
  7. package/dist/analyzer/checker.js.map +1 -1
  8. package/dist/analyzer/codeFlowEngine.js +1 -1
  9. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  10. package/dist/analyzer/commentUtils.d.ts +6 -1
  11. package/dist/analyzer/commentUtils.js +100 -25
  12. package/dist/analyzer/commentUtils.js.map +1 -1
  13. package/dist/analyzer/constraintSolver.js +0 -10
  14. package/dist/analyzer/constraintSolver.js.map +1 -1
  15. package/dist/analyzer/declaration.d.ts +2 -0
  16. package/dist/analyzer/declaration.js.map +1 -1
  17. package/dist/analyzer/importResolver.d.ts +3 -2
  18. package/dist/analyzer/importResolver.js +28 -19
  19. package/dist/analyzer/importResolver.js.map +1 -1
  20. package/dist/analyzer/importStatementUtils.d.ts +1 -0
  21. package/dist/analyzer/importStatementUtils.js +14 -1
  22. package/dist/analyzer/importStatementUtils.js.map +1 -1
  23. package/dist/analyzer/parseTreeUtils.d.ts +5 -2
  24. package/dist/analyzer/parseTreeUtils.js +21 -3
  25. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  26. package/dist/analyzer/patternMatching.d.ts +1 -0
  27. package/dist/analyzer/patternMatching.js +54 -6
  28. package/dist/analyzer/patternMatching.js.map +1 -1
  29. package/dist/analyzer/program.d.ts +11 -4
  30. package/dist/analyzer/program.js +122 -25
  31. package/dist/analyzer/program.js.map +1 -1
  32. package/dist/analyzer/properties.js +5 -1
  33. package/dist/analyzer/properties.js.map +1 -1
  34. package/dist/analyzer/protocols.js +4 -3
  35. package/dist/analyzer/protocols.js.map +1 -1
  36. package/dist/analyzer/service.d.ts +7 -6
  37. package/dist/analyzer/service.js +31 -39
  38. package/dist/analyzer/service.js.map +1 -1
  39. package/dist/analyzer/sourceFile.d.ts +4 -0
  40. package/dist/analyzer/sourceFile.js +85 -16
  41. package/dist/analyzer/sourceFile.js.map +1 -1
  42. package/dist/analyzer/typeEvaluator.js +127 -76
  43. package/dist/analyzer/typeEvaluator.js.map +1 -1
  44. package/dist/backgroundAnalysisBase.d.ts +2 -2
  45. package/dist/backgroundAnalysisBase.js +21 -8
  46. package/dist/backgroundAnalysisBase.js.map +1 -1
  47. package/dist/backgroundThreadBase.js +1 -0
  48. package/dist/backgroundThreadBase.js.map +1 -1
  49. package/dist/commands/commandController.js +1 -0
  50. package/dist/commands/commandController.js.map +1 -1
  51. package/dist/commands/quickActionCommand.js +2 -2
  52. package/dist/commands/quickActionCommand.js.map +1 -1
  53. package/dist/common/cancellationUtils.d.ts +18 -2
  54. package/dist/common/cancellationUtils.js +80 -3
  55. package/dist/common/cancellationUtils.js.map +1 -1
  56. package/dist/common/commandLineOptions.d.ts +2 -0
  57. package/dist/common/commandLineOptions.js.map +1 -1
  58. package/dist/common/configOptions.d.ts +3 -0
  59. package/dist/common/configOptions.js +10 -1
  60. package/dist/common/configOptions.js.map +1 -1
  61. package/dist/common/core.d.ts +2 -0
  62. package/dist/common/core.js +9 -1
  63. package/dist/common/core.js.map +1 -1
  64. package/dist/common/diagnostic.d.ts +15 -3
  65. package/dist/common/diagnostic.js +13 -4
  66. package/dist/common/diagnostic.js.map +1 -1
  67. package/dist/common/editAction.d.ts +1 -0
  68. package/dist/common/editAction.js +8 -0
  69. package/dist/common/editAction.js.map +1 -1
  70. package/dist/common/extensibility.d.ts +36 -12
  71. package/dist/common/extensibility.js +63 -18
  72. package/dist/common/extensibility.js.map +1 -1
  73. package/dist/common/fileBasedCancellationUtils.d.ts +0 -1
  74. package/dist/common/fileBasedCancellationUtils.js +7 -81
  75. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  76. package/dist/common/pathUtils.d.ts +3 -0
  77. package/dist/common/pathUtils.js +18 -0
  78. package/dist/common/pathUtils.js.map +1 -1
  79. package/dist/common/textEditTracker.d.ts +37 -0
  80. package/dist/common/textEditTracker.js +301 -0
  81. package/dist/common/textEditTracker.js.map +1 -0
  82. package/dist/common/workspaceEditUtils.d.ts +14 -8
  83. package/dist/common/workspaceEditUtils.js +115 -59
  84. package/dist/common/workspaceEditUtils.js.map +1 -1
  85. package/dist/languageServerBase.d.ts +3 -0
  86. package/dist/languageServerBase.js +93 -4
  87. package/dist/languageServerBase.js.map +1 -1
  88. package/dist/languageService/analyzerServiceExecutor.js +1 -0
  89. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  90. package/dist/languageService/codeActionProvider.js +1 -1
  91. package/dist/languageService/codeActionProvider.js.map +1 -1
  92. package/dist/languageService/completionProvider.js +3 -3
  93. package/dist/languageService/completionProvider.js.map +1 -1
  94. package/dist/languageService/definitionProvider.js +1 -1
  95. package/dist/languageService/definitionProvider.js.map +1 -1
  96. package/dist/languageService/documentSymbolCollector.js +1 -1
  97. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  98. package/dist/languageService/hoverProvider.js +13 -6
  99. package/dist/languageService/hoverProvider.js.map +1 -1
  100. package/dist/languageService/importAdder.d.ts +5 -1
  101. package/dist/languageService/importAdder.js +50 -14
  102. package/dist/languageService/importAdder.js.map +1 -1
  103. package/dist/languageService/indentationUtils.d.ts +5 -1
  104. package/dist/languageService/indentationUtils.js +12 -2
  105. package/dist/languageService/indentationUtils.js.map +1 -1
  106. package/dist/languageService/insertionPointUtils.js +28 -7
  107. package/dist/languageService/insertionPointUtils.js.map +1 -1
  108. package/dist/languageService/renameModuleProvider.d.ts +20 -10
  109. package/dist/languageService/renameModuleProvider.js +300 -229
  110. package/dist/languageService/renameModuleProvider.js.map +1 -1
  111. package/dist/localization/localize.d.ts +12 -0
  112. package/dist/localization/localize.js +6 -0
  113. package/dist/localization/localize.js.map +1 -1
  114. package/dist/localization/package.nls.en-us.json +8 -1
  115. package/dist/tests/checker.test.js +5 -0
  116. package/dist/tests/checker.test.js.map +1 -1
  117. package/dist/tests/fourslash/hover.docstring.parameter.fourslash.d.ts +1 -0
  118. package/dist/tests/fourslash/hover.docstring.parameter.fourslash.js +57 -0
  119. package/dist/tests/fourslash/hover.docstring.parameter.fourslash.js.map +1 -0
  120. package/dist/tests/fourslash/hover.inferred.fourslash.d.ts +1 -0
  121. package/dist/tests/fourslash/hover.inferred.fourslash.js +24 -0
  122. package/dist/tests/fourslash/hover.inferred.fourslash.js.map +1 -0
  123. package/dist/tests/harness/fourslash/testState.js +9 -2
  124. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  125. package/dist/tests/importAdder.test.js +40 -3
  126. package/dist/tests/importAdder.test.js.map +1 -1
  127. package/dist/tests/indentationUtils.reindent.test.js +1 -1
  128. package/dist/tests/indentationUtils.reindent.test.js.map +1 -1
  129. package/dist/tests/insertionPointUtils.test.js +70 -3
  130. package/dist/tests/insertionPointUtils.test.js.map +1 -1
  131. package/dist/tests/moveSymbol.importAdder.test.js +192 -0
  132. package/dist/tests/moveSymbol.importAdder.test.js.map +1 -0
  133. package/dist/tests/moveSymbol.insertion.test.d.ts +1 -0
  134. package/dist/tests/moveSymbol.insertion.test.js +397 -0
  135. package/dist/tests/moveSymbol.insertion.test.js.map +1 -0
  136. package/dist/tests/moveSymbol.misc.test.d.ts +1 -0
  137. package/dist/tests/moveSymbol.misc.test.js +142 -0
  138. package/dist/tests/moveSymbol.misc.test.js.map +1 -0
  139. package/dist/tests/moveSymbol.updateReference.test.d.ts +1 -0
  140. package/dist/tests/{updateSymbolReference.test.js → moveSymbol.updateReference.test.js} +235 -158
  141. package/dist/tests/moveSymbol.updateReference.test.js.map +1 -0
  142. package/dist/tests/parseTreeUtils.test.js +36 -13
  143. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  144. package/dist/tests/renameModuleTestUtils.js +9 -3
  145. package/dist/tests/renameModuleTestUtils.js.map +1 -1
  146. package/dist/tests/testStateUtils.d.ts +2 -0
  147. package/dist/tests/testStateUtils.js +25 -22
  148. package/dist/tests/testStateUtils.js.map +1 -1
  149. package/dist/tests/textEditUtil.test.d.ts +1 -0
  150. package/dist/tests/textEditUtil.test.js +107 -0
  151. package/dist/tests/textEditUtil.test.js.map +1 -0
  152. package/dist/tests/typeEvaluator1.test.js +4 -0
  153. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  154. package/dist/tests/typeEvaluator2.test.js +12 -0
  155. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  156. package/dist/tests/typeEvaluator3.test.js +9 -0
  157. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  158. package/dist/tests/typeEvaluator4.test.js +5 -1
  159. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  160. package/dist/tests/workspaceEditUtils.test.js +7 -7
  161. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  162. package/dist/workspaceMap.d.ts +0 -1
  163. package/dist/workspaceMap.js +0 -11
  164. package/dist/workspaceMap.js.map +1 -1
  165. package/package.json +3 -3
  166. package/dist/common/textEditUtils.d.ts +0 -24
  167. package/dist/common/textEditUtils.js +0 -167
  168. package/dist/common/textEditUtils.js.map +0 -1
  169. package/dist/tests/updateSymbolReference.test.js.map +0 -1
  170. /package/dist/tests/{updateSymbolReference.test.d.ts → moveSymbol.importAdder.test.d.ts} +0 -0
@@ -0,0 +1,397 @@
1
+ "use strict";
2
+ /*
3
+ * moveSymbol.trivia.test.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ *
7
+ * Tests around how moveSymbol handles whitespace/blank lines/comments around
8
+ * symbol that is moved.
9
+ */
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ const assert_1 = __importDefault(require("assert"));
15
+ const vscode_languageserver_1 = require("vscode-languageserver");
16
+ const testState_1 = require("./harness/fourslash/testState");
17
+ const renameModuleTestUtils_1 = require("./renameModuleTestUtils");
18
+ test('single symbol with trailing whitespace', () => {
19
+ const code = `
20
+ // @filename: test.py
21
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
22
+ //// pass
23
+ //// |]
24
+ ////
25
+
26
+ // @filename: moved.py
27
+ //// [|{|"r":"def foo():!n! pass", "name": "dest"|}|]
28
+ `;
29
+ testFromCode(code);
30
+ });
31
+ test('begining of a file with other symbols below', () => {
32
+ const code = `
33
+ // @filename: test.py
34
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
35
+ //// pass
36
+ ////
37
+ //// |]def nextFoo():
38
+ //// pass
39
+
40
+ // @filename: moved.py
41
+ //// [|{|"r":"def foo():!n! pass", "name": "dest"|}|]
42
+ `;
43
+ testFromCode(code);
44
+ });
45
+ test('at the end of a file with other symbols above', () => {
46
+ const code = `
47
+ // @filename: test.py
48
+ //// def beforeFoo():
49
+ //// pass
50
+ ////
51
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
52
+ //// pass|]
53
+
54
+ // @filename: moved.py
55
+ //// [|{|"r":"def foo():!n! pass", "name": "dest"|}|]
56
+ `;
57
+ testFromCode(code);
58
+ });
59
+ test('between symbols', () => {
60
+ const code = `
61
+ // @filename: test.py
62
+ //// def beforeFoo():
63
+ //// pass
64
+ ////
65
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
66
+ //// pass
67
+ ////
68
+ ////
69
+ //// |]def afterFoo():
70
+ //// pass
71
+ ////
72
+
73
+ // @filename: moved.py
74
+ //// [|{|"r":"def foo():!n! pass", "name": "dest"|}|]
75
+ `;
76
+ testFromCode(code);
77
+ });
78
+ test('insert to empty file', () => {
79
+ const code = `
80
+ // @filename: test.py
81
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
82
+ //// pass|]
83
+
84
+ // @filename: moved.py
85
+ //// [|{|"r":"def foo():!n! pass", "name": "dest"|}|]
86
+ `;
87
+ testFromCode(code);
88
+ });
89
+ test('insert to empty file with blank lines', () => {
90
+ const code = `
91
+ // @filename: test.py
92
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
93
+ //// pass|]
94
+
95
+ // @filename: moved.py
96
+ //// [|{|"r":"def foo():!n! pass", "name": "dest"|}|]
97
+ ////
98
+ ////
99
+ `;
100
+ testFromCode(code);
101
+ });
102
+ test('insert to empty file with comments', () => {
103
+ const code = `
104
+ // @filename: test.py
105
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
106
+ //// pass|]
107
+
108
+ // @filename: moved.py
109
+ //// # comment
110
+ //// [|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
111
+ `;
112
+ testFromCode(code);
113
+ });
114
+ test('insert to empty file with comments and blank lines', () => {
115
+ const code = `
116
+ // @filename: test.py
117
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
118
+ //// pass|]
119
+
120
+ // @filename: moved.py
121
+ //// # comment
122
+ //// [|{|"r":"!n!!n!def foo():!n! pass", "name": "dest"|}|]
123
+ ////
124
+ `;
125
+ testFromCode(code);
126
+ });
127
+ test('insert after other symbol', () => {
128
+ const code = `
129
+ // @filename: test.py
130
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
131
+ //// pass|]
132
+
133
+ // @filename: moved.py
134
+ //// def beforeFoo():
135
+ //// pass[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
136
+ `;
137
+ testFromCode(code);
138
+ });
139
+ test('insert between symbols', () => {
140
+ const code = `
141
+ // @filename: test.py
142
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
143
+ //// pass|]
144
+
145
+ // @filename: moved.py
146
+ //// def beforeFoo():
147
+ //// pass[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
148
+ ////
149
+ //// def __privateFunc():
150
+ //// pass
151
+ `;
152
+ testFromCode(code);
153
+ });
154
+ test('no insert with conflicting name', () => {
155
+ const code = `
156
+ // @filename: test.py
157
+ //// def [|/*marker*/foo|]():
158
+ //// pass
159
+
160
+ // @filename: moved.py
161
+ //// # same name already exist
162
+ //// [|/*dest*/|]
163
+ //// def foo():
164
+ //// pass
165
+ `;
166
+ const state = (0, testState_1.parseAndGetTestState)(code).state;
167
+ const actions = state.program.moveSymbolAtPosition(state.getMarkerByName('marker').fileName, state.getMarkerByName('dest').fileName, state.getPositionRange('marker').start, { importFormat: "absolute" /* Absolute */ }, vscode_languageserver_1.CancellationToken.None);
168
+ (0, assert_1.default)(!actions);
169
+ });
170
+ test('insert to a file with same symbol imported without alias', () => {
171
+ const code = `
172
+ // @filename: test.py
173
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
174
+ //// pass|]
175
+
176
+ // @filename: moved.py
177
+ //// [|{|"r":""|}from test import foo
178
+ //// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
179
+ `;
180
+ testFromCode(code);
181
+ });
182
+ test('insert to a file with same symbol imported with multiple symbol imports', () => {
183
+ const code = `
184
+ // @filename: test.py
185
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
186
+ //// pass
187
+ ////
188
+ //// |]def bar():
189
+ //// pass
190
+
191
+ // @filename: moved.py
192
+ //// from test import bar[|{|"r":""|}, foo|][|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
193
+ `;
194
+ testFromCode(code);
195
+ });
196
+ test('insert to a file with same symbol used off import', () => {
197
+ const code = `
198
+ // @filename: test.py
199
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
200
+ //// pass|]
201
+
202
+ // @filename: moved.py
203
+ //// [|{|"r":""|}import test
204
+ //// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
205
+ ////
206
+ //// [|{|"r":""|}test.|]foo()
207
+ `;
208
+ testFromCode(code);
209
+ });
210
+ test('insert to a file with same symbol used off import with edit merge', () => {
211
+ const code = `
212
+ // @filename: test.py
213
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
214
+ //// pass|]
215
+
216
+ // @filename: moved.py
217
+ //// [|{|"r":""|}import test[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
218
+ //// |]
219
+ ////
220
+ //// [|{|"r":""|}test.|]foo()
221
+ `;
222
+ testFromCode(code);
223
+ });
224
+ test('insert to a file with same symbol used off import with alias', () => {
225
+ const code = `
226
+ // @filename: test.py
227
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
228
+ //// pass|]
229
+
230
+ // @filename: moved.py
231
+ //// [|{|"r":""|}import test as t
232
+ //// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
233
+ ////
234
+ //// [|{|"r":""|}t.|]foo()
235
+
236
+ `;
237
+ testFromCode(code);
238
+ });
239
+ test('insert to a file with same symbol used off import with other symbols', () => {
240
+ const code = `
241
+ // @filename: test.py
242
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
243
+ //// pass
244
+ ////
245
+ //// |]def bar():
246
+ //// pass
247
+
248
+ // @filename: moved.py
249
+ //// import test[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
250
+ ////
251
+ //// [|{|"r":""|}test.|]foo()
252
+ //// test.bar()
253
+ `;
254
+ testFromCode(code);
255
+ });
256
+ test('insert to a file with same symbol used off from import', () => {
257
+ const code = `
258
+ // @filename: test.py
259
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
260
+ //// pass|]
261
+
262
+ // @filename: moved.py
263
+ //// [|{|"r":""|}from . import test
264
+ //// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
265
+ ////
266
+ //// [|{|"r":""|}test.|]foo()
267
+ `;
268
+ testFromCode(code);
269
+ });
270
+ test('insert to a file with same symbol imported with alias', () => {
271
+ const code = `
272
+ // @filename: test.py
273
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
274
+ //// pass|]
275
+
276
+ // @filename: moved.py
277
+ //// [|{|"r":""|}from test import foo as aliasFoo
278
+ //// |]
279
+ //// aliasFoo()[|{|"r":"!n!!n!def foo():!n! pass", "name": "dest"|}|]
280
+ `;
281
+ testFromCode(code);
282
+ });
283
+ test('insert to a file with same symbol imported and used', () => {
284
+ const code = `
285
+ // @filename: test.py
286
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
287
+ //// pass|]
288
+
289
+ // @filename: moved.py
290
+ //// [|{|"r":""|}from test import foo
291
+ //// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
292
+ ////
293
+ //// foo()
294
+ `;
295
+ testFromCode(code);
296
+ });
297
+ test('insert to a file with same symbol used off import with alias and used', () => {
298
+ const code = `
299
+ // @filename: test.py
300
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
301
+ //// pass
302
+ //// |]def bar():
303
+ //// pass
304
+
305
+ // @filename: moved.py
306
+ //// import test as t[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
307
+ ////
308
+ //// [|{|"r":""|}t.|]foo()
309
+ //// t.bar()
310
+ `;
311
+ testFromCode(code);
312
+ });
313
+ test('insert import to original file for usage', () => {
314
+ const code = `
315
+ // @filename: test.py
316
+ //// [|{|"r":"from moved import foo!n!!n!!n!"|}|][|{|"r":""|}def [|/*marker*/foo|]():
317
+ //// pass
318
+ //// |]foo()
319
+
320
+ // @filename: moved.py
321
+ //// [|{|"r":"def foo():!n! pass", "name": "dest"|}|]
322
+ `;
323
+ testFromCode(code);
324
+ });
325
+ test('insert import name to the existing import in the original file for usage', () => {
326
+ const code = `
327
+ // @filename: test.py
328
+ //// from moved import bar[|{|"r":", foo"|}|]
329
+ ////
330
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
331
+ //// pass
332
+ //// |]foo()
333
+
334
+ // @filename: moved.py
335
+ //// def bar():
336
+ //// pass[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
337
+ `;
338
+ testFromCode(code);
339
+ });
340
+ test('original file has import for the symbol with alias', () => {
341
+ const code = `
342
+ // @filename: test.py
343
+ //// from [|{|"r": "moved"|}test|] import foo as aliasFoo
344
+ ////
345
+ //// aliasFoo()
346
+ ////
347
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
348
+ //// pass
349
+ //// |]
350
+
351
+ // @filename: moved.py
352
+ //// [|{|"r":"def foo():!n! pass", "name": "dest"|}|]
353
+ `;
354
+ testFromCode(code);
355
+ });
356
+ test('move after class', () => {
357
+ const code = `
358
+ // @filename: test.py
359
+ //// [|{|"r":""|}def [|/*marker*/foo|]():
360
+ //// pass
361
+ //// |]
362
+
363
+ // @filename: moved.py
364
+ //// class A:
365
+ //// def foo(self):
366
+ //// pass[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|]
367
+ `;
368
+ testFromCode(code);
369
+ });
370
+ test('move variable', () => {
371
+ const code = `
372
+ // @filename: test.py
373
+ //// [|{|"r":""|}[|/*marker*/A|] = 1|]
374
+
375
+ // @filename: moved.py
376
+ //// [|{|"r":"A = 1", "name": "dest"|}|]
377
+ `;
378
+ testFromCode(code);
379
+ });
380
+ test('move variable with doc string', () => {
381
+ const code = `
382
+ // @filename: test.py
383
+ //// [|{|"r":""|}[|/*marker*/A|] = 1
384
+ //// '''
385
+ //// doc string
386
+ //// '''|]
387
+
388
+ // @filename: moved.py
389
+ //// [|{|"r":"A = 1!n!'''!n! doc string!n!'''", "name": "dest"|}|]
390
+ `;
391
+ testFromCode(code);
392
+ });
393
+ function testFromCode(code) {
394
+ const state = (0, testState_1.parseAndGetTestState)(code).state;
395
+ (0, renameModuleTestUtils_1.testMoveSymbolAtPosition)(state, state.getMarkerByName('marker').fileName, state.getMarkerByName('dest').fileName, state.getPositionRange('marker').start);
396
+ }
397
+ //# sourceMappingURL=moveSymbol.insertion.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moveSymbol.insertion.test.js","sourceRoot":"","sources":["../../../src/tests/moveSymbol.insertion.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ /*
3
+ * moveSymbol.misc.test.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ *
7
+ * Misc tests around move symbol.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const assert_1 = __importDefault(require("assert"));
14
+ const vscode_languageserver_1 = require("vscode-languageserver");
15
+ const testState_1 = require("./harness/fourslash/testState");
16
+ test('source and destnation file must have same ext', () => {
17
+ const code = `
18
+ // @filename: test.py
19
+ //// def [|/*marker*/foo|](): pass
20
+
21
+ // @filename: moved.pyi
22
+ //// [|/*dest*/|]
23
+ `;
24
+ testNoMoveFromCode(code);
25
+ });
26
+ test('source and destnation file can not be same', () => {
27
+ const code = `
28
+ // @filename: test.py
29
+ //// [|/*dest*/|]def [|/*marker*/foo|](): pass
30
+ `;
31
+ testNoMoveFromCode(code);
32
+ });
33
+ test('Symbol must be module level symbol', () => {
34
+ const code = `
35
+ // @filename: test.py
36
+ //// class A:
37
+ //// def [|/*marker*/foo|](self): pass
38
+
39
+ // @filename: moved.py
40
+ //// [|/*dest*/|]
41
+ `;
42
+ testNoMoveFromCode(code);
43
+ });
44
+ test('Import alias can not be moved', () => {
45
+ const code = `
46
+ // @filename: test.py
47
+ //// import [|/*marker*/sys|]
48
+
49
+ // @filename: moved.py
50
+ //// [|/*dest*/|]
51
+ `;
52
+ testNoMoveFromCode(code);
53
+ });
54
+ test('Type alias can not be moved', () => {
55
+ const code = `
56
+ // @filename: test.py
57
+ //// from typing import TypeAlias
58
+ //// [|/*marker*/TA|]: TypeAlias = int
59
+
60
+ // @filename: moved.py
61
+ //// [|/*dest*/|]
62
+ `;
63
+ testNoMoveFromCode(code);
64
+ });
65
+ test('TypeVar can not be moved', () => {
66
+ const code = `
67
+ // @filename: test.py
68
+ //// from typing import TypeVar
69
+ //// [|/*marker*/T1|] = TypeVar("T1")
70
+
71
+ // @filename: moved.py
72
+ //// [|/*dest*/|]
73
+ `;
74
+ testNoMoveFromCode(code);
75
+ });
76
+ test('tuple unpacking not supported', () => {
77
+ const code = `
78
+ // @filename: test.py
79
+ //// [|/*marker*/a|], b = 1, 2
80
+
81
+ // @filename: moved.py
82
+ //// [|/*dest*/|]
83
+ `;
84
+ testNoMoveFromCode(code);
85
+ });
86
+ test('tuple unpacking not supported 2', () => {
87
+ const code = `
88
+ // @filename: test.py
89
+ //// a, [|/*marker*/b|] = 1, 2
90
+
91
+ // @filename: moved.py
92
+ //// [|/*dest*/|]
93
+ `;
94
+ testNoMoveFromCode(code);
95
+ });
96
+ test('chained assignment not supported', () => {
97
+ const code = `
98
+ // @filename: test.py
99
+ //// [|/*marker*/a|] = b = 1
100
+
101
+ // @filename: moved.py
102
+ //// [|/*dest*/|]
103
+ `;
104
+ testNoMoveFromCode(code);
105
+ });
106
+ test('chained assignment not supported 2', () => {
107
+ const code = `
108
+ // @filename: test.py
109
+ //// a = [|/*marker*/b|] = 1
110
+
111
+ // @filename: moved.py
112
+ //// [|/*dest*/|]
113
+ `;
114
+ testNoMoveFromCode(code);
115
+ });
116
+ test('augmented assignment', () => {
117
+ const code = `
118
+ // @filename: test.py
119
+ //// [|/*marker*/a|] += 1
120
+
121
+ // @filename: moved.py
122
+ //// [|/*dest*/|]
123
+ `;
124
+ testNoMoveFromCode(code);
125
+ });
126
+ test('augmented assignment 2', () => {
127
+ const code = `
128
+ // @filename: test.py
129
+ //// a = 1
130
+ //// [|/*marker*/a|] += 1
131
+
132
+ // @filename: moved.py
133
+ //// [|/*dest*/|]
134
+ `;
135
+ testNoMoveFromCode(code);
136
+ });
137
+ function testNoMoveFromCode(code) {
138
+ const state = (0, testState_1.parseAndGetTestState)(code).state;
139
+ const actions = state.program.moveSymbolAtPosition(state.getMarkerByName('marker').fileName, state.getMarkerByName('dest').fileName, state.getPositionRange('marker').start, { importFormat: "absolute" /* Absolute */ }, vscode_languageserver_1.CancellationToken.None);
140
+ (0, assert_1.default)(!actions);
141
+ }
142
+ //# sourceMappingURL=moveSymbol.misc.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moveSymbol.misc.test.js","sourceRoot":"","sources":["../../../src/tests/moveSymbol.misc.test.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,oDAA4B;AAC5B,iEAA0D;AAG1D,6DAAqE;AAErE,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACvD,MAAM,IAAI,GAAG;;;;;;SAMR,CAAC;IAEN,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACpD,MAAM,IAAI,GAAG;;;SAGR,CAAC;IAEN,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC5C,MAAM,IAAI,GAAG;;;;;;;KAOZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;IACvC,MAAM,IAAI,GAAG;;;;;;KAMZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACrC,MAAM,IAAI,GAAG;;;;;;;KAOZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;IAClC,MAAM,IAAI,GAAG;;;;;;;KAOZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;IACvC,MAAM,IAAI,GAAG;;;;;;KAMZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;IACzC,MAAM,IAAI,GAAG;;;;;;KAMZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC1C,MAAM,IAAI,GAAG;;;;;;KAMZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC5C,MAAM,IAAI,GAAG;;;;;;KAMZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAC9B,MAAM,IAAI,GAAG;;;;;;KAMZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;IAChC,MAAM,IAAI,GAAG;;;;;;;KAOZ,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IAE/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAC9C,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,QAAQ,EACxC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EACtC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,KAAK,EACtC,EAAE,YAAY,2BAAuB,EAAE,EACvC,yCAAiB,CAAC,IAAI,CACzB,CAAC;IACF,IAAA,gBAAM,EAAC,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};