@zzzen/pyright-internal 1.2.0-dev.20230430 → 1.2.0-dev.20230514

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 (231) hide show
  1. package/dist/analyzer/backgroundAnalysisProgram.d.ts +4 -1
  2. package/dist/analyzer/backgroundAnalysisProgram.js +12 -0
  3. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  4. package/dist/analyzer/checker.d.ts +1 -0
  5. package/dist/analyzer/checker.js +89 -6
  6. package/dist/analyzer/checker.js.map +1 -1
  7. package/dist/analyzer/constraintSolver.js +14 -15
  8. package/dist/analyzer/constraintSolver.js.map +1 -1
  9. package/dist/analyzer/constructors.d.ts +6 -0
  10. package/dist/analyzer/constructors.js +513 -0
  11. package/dist/analyzer/constructors.js.map +1 -0
  12. package/dist/analyzer/dataClasses.js +86 -2
  13. package/dist/analyzer/dataClasses.js.map +1 -1
  14. package/dist/analyzer/docStringConversion.js +1 -1
  15. package/dist/analyzer/docStringConversion.js.map +1 -1
  16. package/dist/analyzer/enums.js +62 -8
  17. package/dist/analyzer/enums.js.map +1 -1
  18. package/dist/analyzer/importResolver.js +47 -29
  19. package/dist/analyzer/importResolver.js.map +1 -1
  20. package/dist/analyzer/importStatementUtils.d.ts +2 -2
  21. package/dist/analyzer/importStatementUtils.js.map +1 -1
  22. package/dist/analyzer/namedTuples.js +3 -6
  23. package/dist/analyzer/namedTuples.js.map +1 -1
  24. package/dist/analyzer/operations.d.ts +16 -0
  25. package/dist/analyzer/operations.js +749 -0
  26. package/dist/analyzer/operations.js.map +1 -0
  27. package/dist/analyzer/parseTreeUtils.d.ts +4 -2
  28. package/dist/analyzer/parseTreeUtils.js +32 -1
  29. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  30. package/dist/analyzer/patternMatching.js +16 -0
  31. package/dist/analyzer/patternMatching.js.map +1 -1
  32. package/dist/analyzer/program.d.ts +11 -33
  33. package/dist/analyzer/program.js +73 -735
  34. package/dist/analyzer/program.js.map +1 -1
  35. package/dist/analyzer/protocols.js +1 -1
  36. package/dist/analyzer/protocols.js.map +1 -1
  37. package/dist/analyzer/service.d.ts +5 -21
  38. package/dist/analyzer/service.js +26 -33
  39. package/dist/analyzer/service.js.map +1 -1
  40. package/dist/analyzer/sourceFile.d.ts +9 -41
  41. package/dist/analyzer/sourceFile.js +219 -238
  42. package/dist/analyzer/sourceFile.js.map +1 -1
  43. package/dist/analyzer/sourceFileInfoUtils.d.ts +3 -9
  44. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  45. package/dist/analyzer/symbol.d.ts +3 -1
  46. package/dist/analyzer/symbol.js +5 -0
  47. package/dist/analyzer/symbol.js.map +1 -1
  48. package/dist/analyzer/typeEvaluator.js +460 -1425
  49. package/dist/analyzer/typeEvaluator.js.map +1 -1
  50. package/dist/analyzer/typeEvaluatorTypes.d.ts +42 -7
  51. package/dist/analyzer/typeEvaluatorTypes.js +33 -1
  52. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  53. package/dist/analyzer/typeGuards.js +2 -8
  54. package/dist/analyzer/typeGuards.js.map +1 -1
  55. package/dist/analyzer/typePrinter.d.ts +3 -3
  56. package/dist/analyzer/typePrinter.js +247 -100
  57. package/dist/analyzer/typePrinter.js.map +1 -1
  58. package/dist/analyzer/typeUtils.d.ts +14 -7
  59. package/dist/analyzer/typeUtils.js +204 -49
  60. package/dist/analyzer/typeUtils.js.map +1 -1
  61. package/dist/analyzer/typeVarContext.d.ts +6 -7
  62. package/dist/analyzer/typeVarContext.js +21 -32
  63. package/dist/analyzer/typeVarContext.js.map +1 -1
  64. package/dist/analyzer/typedDicts.js +2 -2
  65. package/dist/analyzer/typedDicts.js.map +1 -1
  66. package/dist/analyzer/types.d.ts +7 -4
  67. package/dist/analyzer/types.js +20 -10
  68. package/dist/analyzer/types.js.map +1 -1
  69. package/dist/backgroundAnalysisBase.d.ts +1 -1
  70. package/dist/backgroundAnalysisBase.js +16 -0
  71. package/dist/backgroundAnalysisBase.js.map +1 -1
  72. package/dist/commands/dumpFileDebugInfoCommand.js +0 -1
  73. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  74. package/dist/common/extensibility.d.ts +28 -4
  75. package/dist/common/extensibility.js.map +1 -1
  76. package/dist/common/logTracker.d.ts +2 -0
  77. package/dist/common/logTracker.js +8 -1
  78. package/dist/common/logTracker.js.map +1 -1
  79. package/dist/common/lspUtils.d.ts +4 -1
  80. package/dist/common/lspUtils.js +38 -1
  81. package/dist/common/lspUtils.js.map +1 -1
  82. package/dist/common/pathUtils.d.ts +11 -11
  83. package/dist/common/pathUtils.js.map +1 -1
  84. package/dist/common/pythonVersion.d.ts +2 -1
  85. package/dist/common/pythonVersion.js +1 -0
  86. package/dist/common/pythonVersion.js.map +1 -1
  87. package/dist/common/workspaceEditUtils.d.ts +8 -8
  88. package/dist/common/workspaceEditUtils.js +10 -10
  89. package/dist/common/workspaceEditUtils.js.map +1 -1
  90. package/dist/languageServerBase.d.ts +3 -7
  91. package/dist/languageServerBase.js +41 -73
  92. package/dist/languageServerBase.js.map +1 -1
  93. package/dist/languageService/autoImporter.d.ts +50 -51
  94. package/dist/languageService/autoImporter.js +125 -210
  95. package/dist/languageService/autoImporter.js.map +1 -1
  96. package/dist/languageService/callHierarchyProvider.d.ts +1 -1
  97. package/dist/languageService/callHierarchyProvider.js +11 -37
  98. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  99. package/dist/languageService/completionProvider.d.ts +39 -81
  100. package/dist/languageService/completionProvider.js +572 -801
  101. package/dist/languageService/completionProvider.js.map +1 -1
  102. package/dist/languageService/documentHighlightProvider.js +1 -1
  103. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  104. package/dist/languageService/documentSymbolCollector.d.ts +6 -7
  105. package/dist/languageService/documentSymbolCollector.js +47 -28
  106. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  107. package/dist/languageService/documentSymbolProvider.d.ts +13 -35
  108. package/dist/languageService/documentSymbolProvider.js +52 -264
  109. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  110. package/dist/languageService/hoverProvider.d.ts +5 -6
  111. package/dist/languageService/hoverProvider.js +40 -132
  112. package/dist/languageService/hoverProvider.js.map +1 -1
  113. package/dist/languageService/referencesProvider.d.ts +6 -11
  114. package/dist/languageService/referencesProvider.js +23 -17
  115. package/dist/languageService/referencesProvider.js.map +1 -1
  116. package/dist/languageService/renameProvider.d.ts +16 -0
  117. package/dist/languageService/renameProvider.js +139 -0
  118. package/dist/languageService/renameProvider.js.map +1 -0
  119. package/dist/languageService/symbolIndexer.d.ts +31 -0
  120. package/dist/languageService/symbolIndexer.js +105 -0
  121. package/dist/languageService/symbolIndexer.js.map +1 -0
  122. package/dist/languageService/tooltipUtils.d.ts +8 -1
  123. package/dist/languageService/tooltipUtils.js +102 -1
  124. package/dist/languageService/tooltipUtils.js.map +1 -1
  125. package/dist/languageService/workspaceSymbolProvider.d.ts +17 -0
  126. package/dist/languageService/workspaceSymbolProvider.js +133 -0
  127. package/dist/languageService/workspaceSymbolProvider.js.map +1 -0
  128. package/dist/localization/localize.d.ts +33 -15
  129. package/dist/localization/localize.js +13 -7
  130. package/dist/localization/localize.js.map +1 -1
  131. package/dist/localization/package.nls.en-us.json +14 -7
  132. package/dist/parser/parser.js +3 -0
  133. package/dist/parser/parser.js.map +1 -1
  134. package/dist/pyright.js +26 -4
  135. package/dist/pyright.js.map +1 -1
  136. package/dist/tests/chainedSourceFiles.test.js +15 -20
  137. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  138. package/dist/tests/checker.test.js +14 -0
  139. package/dist/tests/checker.test.js.map +1 -1
  140. package/dist/tests/completions.test.js +11 -236
  141. package/dist/tests/completions.test.js.map +1 -1
  142. package/dist/tests/docStringConversion.test.js +36 -2
  143. package/dist/tests/docStringConversion.test.js.map +1 -1
  144. package/dist/tests/documentSymbolCollector.test.js +3 -3
  145. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  146. package/dist/tests/fourslash/completions.override2.fourslash.js +1 -16
  147. package/dist/tests/fourslash/completions.override2.fourslash.js.map +1 -1
  148. package/dist/tests/fourslash/fourslash.d.ts +4 -4
  149. package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js +1 -1
  150. package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js.map +1 -1
  151. package/dist/tests/harness/fourslash/testState.d.ts +17 -11
  152. package/dist/tests/harness/fourslash/testState.js +39 -50
  153. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  154. package/dist/tests/importResolver.test.js +81 -1
  155. package/dist/tests/importResolver.test.js.map +1 -1
  156. package/dist/tests/sourceFile.test.js +1 -1
  157. package/dist/tests/sourceFile.test.js.map +1 -1
  158. package/dist/tests/testStateUtils.d.ts +2 -2
  159. package/dist/tests/testStateUtils.js +38 -8
  160. package/dist/tests/testStateUtils.js.map +1 -1
  161. package/dist/tests/typeEvaluator2.test.js +13 -1
  162. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  163. package/dist/tests/typeEvaluator3.test.js +5 -1
  164. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  165. package/dist/tests/typeEvaluator4.test.js +9 -1
  166. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  167. package/dist/tests/typeEvaluator5.test.js +25 -9
  168. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  169. package/dist/tests/workspaceEditUtils.test.js +95 -6
  170. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  171. package/package.json +4 -4
  172. package/dist/languageService/importAdder.d.ts +0 -40
  173. package/dist/languageService/importAdder.js +0 -388
  174. package/dist/languageService/importAdder.js.map +0 -1
  175. package/dist/languageService/indentationUtils.d.ts +0 -16
  176. package/dist/languageService/indentationUtils.js +0 -727
  177. package/dist/languageService/indentationUtils.js.map +0 -1
  178. package/dist/languageService/insertionPointUtils.d.ts +0 -9
  179. package/dist/languageService/insertionPointUtils.js +0 -132
  180. package/dist/languageService/insertionPointUtils.js.map +0 -1
  181. package/dist/languageService/renameModuleProvider.d.ts +0 -65
  182. package/dist/languageService/renameModuleProvider.js +0 -939
  183. package/dist/languageService/renameModuleProvider.js.map +0 -1
  184. package/dist/tests/fourslash/completions.commitChars.fourslash.d.ts +0 -1
  185. package/dist/tests/fourslash/completions.commitChars.fourslash.js +0 -81
  186. package/dist/tests/fourslash/completions.commitChars.fourslash.js.map +0 -1
  187. package/dist/tests/importAdder.test.d.ts +0 -1
  188. package/dist/tests/importAdder.test.js +0 -1325
  189. package/dist/tests/importAdder.test.js.map +0 -1
  190. package/dist/tests/indentationUtils.ptvs.test.d.ts +0 -1
  191. package/dist/tests/indentationUtils.ptvs.test.js +0 -324
  192. package/dist/tests/indentationUtils.ptvs.test.js.map +0 -1
  193. package/dist/tests/indentationUtils.reindent.test.d.ts +0 -1
  194. package/dist/tests/indentationUtils.reindent.test.js +0 -372
  195. package/dist/tests/indentationUtils.reindent.test.js.map +0 -1
  196. package/dist/tests/indentationUtils.test.d.ts +0 -1
  197. package/dist/tests/indentationUtils.test.js +0 -502
  198. package/dist/tests/indentationUtils.test.js.map +0 -1
  199. package/dist/tests/insertionPointUtils.test.d.ts +0 -1
  200. package/dist/tests/insertionPointUtils.test.js +0 -154
  201. package/dist/tests/insertionPointUtils.test.js.map +0 -1
  202. package/dist/tests/moveSymbol.importAdder.test.d.ts +0 -1
  203. package/dist/tests/moveSymbol.importAdder.test.js +0 -298
  204. package/dist/tests/moveSymbol.importAdder.test.js.map +0 -1
  205. package/dist/tests/moveSymbol.insertion.test.d.ts +0 -1
  206. package/dist/tests/moveSymbol.insertion.test.js +0 -537
  207. package/dist/tests/moveSymbol.insertion.test.js.map +0 -1
  208. package/dist/tests/moveSymbol.misc.test.d.ts +0 -1
  209. package/dist/tests/moveSymbol.misc.test.js +0 -169
  210. package/dist/tests/moveSymbol.misc.test.js.map +0 -1
  211. package/dist/tests/moveSymbol.updateReference.test.d.ts +0 -1
  212. package/dist/tests/moveSymbol.updateReference.test.js +0 -1071
  213. package/dist/tests/moveSymbol.updateReference.test.js.map +0 -1
  214. package/dist/tests/renameModule.folder.test.d.ts +0 -1
  215. package/dist/tests/renameModule.folder.test.js +0 -229
  216. package/dist/tests/renameModule.folder.test.js.map +0 -1
  217. package/dist/tests/renameModule.fromImports.test.d.ts +0 -1
  218. package/dist/tests/renameModule.fromImports.test.js +0 -790
  219. package/dist/tests/renameModule.fromImports.test.js.map +0 -1
  220. package/dist/tests/renameModule.imports.test.d.ts +0 -1
  221. package/dist/tests/renameModule.imports.test.js +0 -380
  222. package/dist/tests/renameModule.imports.test.js.map +0 -1
  223. package/dist/tests/renameModule.misc.test.d.ts +0 -1
  224. package/dist/tests/renameModule.misc.test.js +0 -615
  225. package/dist/tests/renameModule.misc.test.js.map +0 -1
  226. package/dist/tests/renameModule.relativePath.test.d.ts +0 -1
  227. package/dist/tests/renameModule.relativePath.test.js +0 -231
  228. package/dist/tests/renameModule.relativePath.test.js.map +0 -1
  229. package/dist/tests/renameModuleTestUtils.d.ts +0 -4
  230. package/dist/tests/renameModuleTestUtils.js +0 -76
  231. package/dist/tests/renameModuleTestUtils.js.map +0 -1
@@ -1,1071 +0,0 @@
1
- "use strict";
2
- /*
3
- * moveSymbol.updateReference.test.ts
4
- * Copyright (c) Microsoft Corporation.
5
- * Licensed under the MIT license.
6
- *
7
- * Tests Program.moveSymbol
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- const testState_1 = require("./harness/fourslash/testState");
11
- const renameModuleTestUtils_1 = require("./renameModuleTestUtils");
12
- test('move symbol to another file - simple from import', () => {
13
- const code = `
14
- // @filename: test.py
15
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
16
-
17
- // @filename: moved.py
18
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
19
-
20
- // @filename: used.py
21
- //// from [|{|"r":"moved"|}test|] import foo
22
- `;
23
- testFromCode(code);
24
- });
25
- test('move symbol to another file - nested file', () => {
26
- const code = `
27
- // @filename: test.py
28
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
29
-
30
- // @filename: nested/moved.py
31
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
32
-
33
- // @filename: used.py
34
- //// from [|{|"r":"nested.moved"|}test|] import foo
35
- `;
36
- testFromCode(code);
37
- });
38
- test('move symbol to another file - parent file', () => {
39
- const code = `
40
- // @filename: nested/test.py
41
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
42
-
43
- // @filename: moved.py
44
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
45
-
46
- // @filename: used.py
47
- //// from [|{|"r":"moved"|}nested.test|] import foo
48
- `;
49
- testFromCode(code);
50
- });
51
- test('move symbol to another file - multiple import', () => {
52
- const code = `
53
- // @filename: test.py
54
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
55
- ////
56
- //// |]def stay(): pass
57
-
58
- // @filename: moved.py
59
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
60
-
61
- // @filename: used.py
62
- //// [|{|"r":"from moved import foo!n!"|}|]from test import [|{|"r":""|}foo, |]stay
63
- `;
64
- testFromCode(code);
65
- });
66
- test('move symbol to another file - multiple import with submodules', () => {
67
- const code = `
68
- // @filename: nested/__init__.py
69
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
70
-
71
- // @filename: nested/test.py
72
- //// # empty
73
-
74
- // @filename: moved.py
75
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
76
-
77
- // @filename: used.py
78
- //// [|{|"r":"from moved import foo!n!"|}|]from nested import [|{|"r":""|}foo, |]test
79
- `;
80
- testFromCode(code);
81
- });
82
- test('move symbol to another file - no merge with existing imports', () => {
83
- const code = `
84
- // @filename: test.py
85
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
86
-
87
- // @filename: moved.py
88
- //// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|]
89
-
90
- // @filename: used.py
91
- //// from [|{|"r":"moved"|}test|] import foo
92
- //// from moved import stay
93
- `;
94
- testFromCode(code);
95
- });
96
- test('move symbol to another file - merge with existing imports', () => {
97
- const code = `
98
- // @filename: test.py
99
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
100
- //// |]def bar(): pass
101
-
102
- // @filename: moved.py
103
- //// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|]
104
-
105
- // @filename: used.py
106
- //// from test import bar[|{|"r":""|}, foo|]
107
- //// from moved import [|{|"r":"foo, "|}|]stay
108
- `;
109
- testFromCode(code);
110
- });
111
- test('move symbol to another file - multiple import - nested folder', () => {
112
- const code = `
113
- // @filename: test.py
114
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
115
- ////
116
- //// |]def stay(): pass
117
-
118
- // @filename: nested/moved.py
119
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
120
-
121
- // @filename: used.py
122
- //// [|{|"r":"from nested.moved import foo!n!"|}|]from test import [|{|"r":""|}foo, |]stay
123
- `;
124
- testFromCode(code);
125
- });
126
- test('move symbol to another file - multiple import with submodules - parent folder', () => {
127
- const code = `
128
- // @filename: nested/__init__.py
129
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
130
-
131
- // @filename: nested/test.py
132
- //// # empty
133
-
134
- // @filename: moved.py
135
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
136
-
137
- // @filename: used.py
138
- //// [|{|"r":"from moved import foo!n!"|}|]from nested import [|{|"r":""|}foo, |]test
139
- `;
140
- testFromCode(code);
141
- });
142
- test('move symbol to another file - no merge with existing imports - nested folder', () => {
143
- const code = `
144
- // @filename: test.py
145
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
146
-
147
- // @filename: nested/moved.py
148
- //// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|]
149
-
150
- // @filename: used.py
151
- //// from [|{|"r":"nested.moved"|}test|] import foo
152
- //// from nested.moved import stay
153
- `;
154
- testFromCode(code);
155
- });
156
- test('move symbol to another file - merge with existing imports - nested folder', () => {
157
- const code = `
158
- // @filename: test.py
159
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
160
- //// |]def bar(): pass
161
-
162
- // @filename: nested/moved.py
163
- //// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|]
164
-
165
- // @filename: used.py
166
- //// from test import bar[|{|"r":""|}, foo|]
167
- //// from nested.moved import [|{|"r":"foo, "|}|]stay
168
- `;
169
- testFromCode(code);
170
- });
171
- test('move symbol to another file - multiple import - parent folder', () => {
172
- const code = `
173
- // @filename: nested/test.py
174
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
175
- ////
176
- //// |]def stay(): pass
177
-
178
- // @filename: moved.py
179
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
180
-
181
- // @filename: used.py
182
- //// [|{|"r":"from moved import foo!n!"|}|]from nested.test import [|{|"r":""|}foo, |]stay
183
- `;
184
- testFromCode(code);
185
- });
186
- test('move symbol to another file - multiple import with submodules - sibling folder', () => {
187
- const code = `
188
- // @filename: nested/__init__.py
189
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
190
-
191
- // @filename: nested/test.py
192
- //// # empty
193
-
194
- // @filename: nested/moved.py
195
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
196
-
197
- // @filename: used.py
198
- //// from nested import [|{|"r":""|}foo, |]test[|{|"r":"!n!from nested.moved import foo"|}|]
199
- `;
200
- testFromCode(code);
201
- });
202
- test('move symbol to another file - no merge with existing imports - parent folder', () => {
203
- const code = `
204
- // @filename: nested/test.py
205
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
206
-
207
- // @filename: moved.py
208
- //// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|]
209
-
210
- // @filename: used.py
211
- //// from [|{|"r":"moved"|}nested.test|] import foo
212
- //// from moved import stay
213
- `;
214
- testFromCode(code);
215
- });
216
- test('move symbol to another file - merge with existing imports - parent folder', () => {
217
- const code = `
218
- // @filename: nested/test.py
219
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
220
- //// |]def bar(): pass
221
-
222
- // @filename: moved.py
223
- //// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|]
224
-
225
- // @filename: used.py
226
- //// from nested.test import bar[|{|"r":""|}, foo|]
227
- //// from moved import [|{|"r":"foo, "|}|]stay
228
- `;
229
- testFromCode(code);
230
- });
231
- test('move symbol to another file - simple from import - relative path', () => {
232
- const code = `
233
- // @filename: test.py
234
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
235
-
236
- // @filename: moved.py
237
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
238
-
239
- // @filename: used.py
240
- //// from [|{|"r":".moved"|}.test|] import foo
241
- `;
242
- testFromCode(code);
243
- });
244
- test('move symbol to another file - nested file - relative path', () => {
245
- const code = `
246
- // @filename: test.py
247
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
248
-
249
- // @filename: nested/moved.py
250
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
251
-
252
- // @filename: nested/used.py
253
- //// from [|{|"r":".moved"|}..test|] import foo
254
- `;
255
- testFromCode(code);
256
- });
257
- test('move symbol to another file - parent file - relative path', () => {
258
- const code = `
259
- // @filename: nested/test.py
260
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
261
-
262
- // @filename: moved.py
263
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
264
-
265
- // @filename: used.py
266
- //// from [|{|"r":".moved"|}.nested.test|] import foo
267
- `;
268
- testFromCode(code);
269
- });
270
- test('move symbol to another file - multiple import - relative path', () => {
271
- const code = `
272
- // @filename: test.py
273
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
274
- ////
275
- //// |]def stay(): pass
276
-
277
- // @filename: moved.py
278
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
279
-
280
- // @filename: nested/used.py
281
- //// [|{|"r":"from ..moved import foo!n!"|}|]from ..test import [|{|"r":""|}foo, |]stay
282
- `;
283
- testFromCode(code);
284
- });
285
- test('move symbol to another file - multiple import with submodules - relative path', () => {
286
- const code = `
287
- // @filename: nested/__init__.py
288
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
289
-
290
- // @filename: nested/test.py
291
- //// # empty
292
-
293
- // @filename: moved.py
294
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
295
-
296
- // @filename: used.py
297
- //// [|{|"r":"from .moved import foo!n!"|}|]from .nested import [|{|"r":""|}foo, |]test
298
- `;
299
- testFromCode(code);
300
- });
301
- test('move symbol to another file - no merge with existing imports - relative path', () => {
302
- const code = `
303
- // @filename: test.py
304
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
305
-
306
- // @filename: moved.py
307
- //// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|]
308
-
309
- // @filename: used.py
310
- //// from [|{|"r":".moved"|}.test|] import foo
311
- //// from moved import stay
312
- `;
313
- testFromCode(code);
314
- });
315
- test('move symbol to another file - merge with existing imports - relative path', () => {
316
- const code = `
317
- // @filename: test.py
318
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
319
- //// |]def bar(): pass
320
-
321
- // @filename: moved.py
322
- //// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|]
323
-
324
- // @filename: used.py
325
- //// from .test import bar[|{|"r":""|}, foo|]
326
- //// from .moved import [|{|"r":"foo, "|}|]stay
327
- `;
328
- testFromCode(code);
329
- });
330
- test('member off import', () => {
331
- const code = `
332
- // @filename: test.py
333
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
334
-
335
- // @filename: moved.py
336
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
337
-
338
- // @filename: used.py
339
- //// import [|{|"r":"moved"|}test|]
340
- //// [|{|"r":"moved"|}test|].foo()
341
- `;
342
- testFromCode(code);
343
- });
344
- test('member off import with existing import', () => {
345
- const code = `
346
- // @filename: test.py
347
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
348
-
349
- // @filename: moved.py
350
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
351
-
352
- // @filename: used.py
353
- //// [|{|"r":""|}import test
354
- //// |]import moved
355
- //// [|{|"r":"moved"|}test|].foo()
356
- `;
357
- testFromCode(code);
358
- });
359
- test('member off import with existing import with alias', () => {
360
- const code = `
361
- // @filename: test.py
362
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
363
-
364
- // @filename: moved.py
365
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
366
-
367
- // @filename: used.py
368
- //// [|{|"r":""|}import test
369
- //// |]import moved as m
370
- //// [|{|"r":"m"|}test|].foo()
371
- `;
372
- testFromCode(code);
373
- });
374
- test('member off import with existing import - multiple imports', () => {
375
- const code = `
376
- // @filename: test.py
377
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
378
-
379
- // @filename: moved.py
380
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
381
-
382
- // @filename: used.py
383
- //// import moved[|{|"r":""|}, test|]
384
- //// [|{|"r":"moved"|}test|].foo()
385
- `;
386
- testFromCode(code);
387
- });
388
- test('member off import with existing import - multiple imports with alias', () => {
389
- const code = `
390
- // @filename: test.py
391
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
392
-
393
- // @filename: moved.py
394
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
395
-
396
- // @filename: used.py
397
- //// import moved as m[|{|"r":""|}, test|]
398
- //// [|{|"r":"m"|}test|].foo()
399
- `;
400
- testFromCode(code);
401
- });
402
- test('member off from import with existing import', () => {
403
- const code = `
404
- // @filename: test.py
405
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
406
-
407
- // @filename: moved.py
408
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
409
-
410
- // @filename: used.py
411
- //// [|{|"r":""|}from . import test
412
- //// |]import moved
413
- //// [|{|"r":"moved"|}test|].foo()
414
- `;
415
- testFromCode(code);
416
- });
417
- test('member off from import with existing import with alias', () => {
418
- const code = `
419
- // @filename: test.py
420
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
421
-
422
- // @filename: moved.py
423
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
424
-
425
- // @filename: used.py
426
- //// [|{|"r":""|}from . import test
427
- //// |]import moved as m
428
- //// [|{|"r":"m"|}test|].foo()
429
- `;
430
- testFromCode(code);
431
- });
432
- test('member off from import with existing from import', () => {
433
- const code = `
434
- // @filename: test.py
435
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
436
-
437
- // @filename: moved.py
438
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
439
-
440
- // @filename: used.py
441
- //// [|{|"r":""|}from . import test
442
- //// |]from . import moved
443
- //// [|{|"r":"moved"|}test|].foo()
444
- `;
445
- testFromCode(code);
446
- });
447
- test('member off from import with existing from import with alias', () => {
448
- const code = `
449
- // @filename: test.py
450
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
451
-
452
- // @filename: moved.py
453
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
454
-
455
- // @filename: used.py
456
- //// [|{|"r":""|}from . import test
457
- //// |]from . import moved as m
458
- //// [|{|"r":"m"|}test|].foo()
459
- `;
460
- testFromCode(code);
461
- });
462
- test('member off from import with existing import - multiple imports', () => {
463
- const code = `
464
- // @filename: test.py
465
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
466
-
467
- // @filename: moved.py
468
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
469
-
470
- // @filename: used.py
471
- //// from . import moved[|{|"r":""|}, test|]
472
- //// [|{|"r":"moved"|}test|].foo()
473
- `;
474
- testFromCode(code);
475
- });
476
- test('member off from import with existing import - multiple imports with alias', () => {
477
- const code = `
478
- // @filename: test.py
479
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
480
-
481
- // @filename: moved.py
482
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
483
-
484
- // @filename: used.py
485
- //// from . import moved as m[|{|"r":""|}, test|]
486
- //// [|{|"r":"m"|}test|].foo()
487
- `;
488
- testFromCode(code);
489
- });
490
- test('member off submodule', () => {
491
- const code = `
492
- // @filename: test.py
493
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
494
-
495
- // @filename: moved.py
496
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
497
-
498
- // @filename: used.py
499
- //// from . import [|{|"r":"moved"|}test|]
500
- //// [|{|"r":"moved"|}test|].foo()
501
- `;
502
- testFromCode(code);
503
- });
504
- test('member off import - dotted name', () => {
505
- const code = `
506
- // @filename: test.py
507
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
508
-
509
- // @filename: nested/moved.py
510
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
511
-
512
- // @filename: used.py
513
- //// import [|{|"r":"nested.moved"|}test|]
514
- //// [|{|"r":"nested.moved"|}test|].foo()
515
- `;
516
- testFromCode(code);
517
- });
518
- test('member off submodule - dotted name', () => {
519
- const code = `
520
- // @filename: test.py
521
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
522
-
523
- // @filename: nested/moved.py
524
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
525
-
526
- // @filename: used.py
527
- //// from [|{|"r":".nested"|}.|] import [|{|"r":"moved"|}test|]
528
- //// [|{|"r":"moved"|}test|].foo()
529
- `;
530
- testFromCode(code);
531
- });
532
- test('member off import with alias', () => {
533
- const code = `
534
- // @filename: test.py
535
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
536
-
537
- // @filename: moved.py
538
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
539
-
540
- // @filename: used.py
541
- //// import [|{|"r":"moved"|}test|] as t
542
- //// t.foo()
543
- `;
544
- testFromCode(code);
545
- });
546
- test('member off submodule with alias', () => {
547
- const code = `
548
- // @filename: test.py
549
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
550
-
551
- // @filename: moved.py
552
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
553
-
554
- // @filename: used.py
555
- //// from . import [|{|"r":"moved"|}test|] as test
556
- //// test.foo()
557
- `;
558
- testFromCode(code);
559
- });
560
- test('member off import with alias - dotted name', () => {
561
- const code = `
562
- // @filename: test.py
563
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
564
-
565
- // @filename: nested/moved.py
566
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
567
-
568
- // @filename: used.py
569
- //// import [|{|"r":"nested.moved"|}test|] as t
570
- //// t.foo()
571
- `;
572
- testFromCode(code);
573
- });
574
- test('member off submodule with alias - dotted name', () => {
575
- const code = `
576
- // @filename: nested/test.py
577
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
578
-
579
- // @filename: sub/moved.py
580
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
581
-
582
- // @filename: used.py
583
- //// from [|{|"r":"sub"|}nested|] import [|{|"r":"moved"|}test|] as test
584
- //// test.foo()
585
- `;
586
- testFromCode(code);
587
- });
588
- test('member off import - multiple symbols', () => {
589
- const code = `
590
- // @filename: test.py
591
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
592
- //// |]def bar(): pass
593
-
594
- // @filename: moved.py
595
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
596
-
597
- // @filename: used.py
598
- //// [|{|"r":"import moved!n!"|}|]import test
599
- //// [|{|"r":"moved"|}test|].foo()
600
- //// test.bar()
601
- `;
602
- testFromCode(code);
603
- });
604
- test('member off import - multiple symbols - existing import', () => {
605
- const code = `
606
- // @filename: test.py
607
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
608
- //// |]def bar(): pass
609
-
610
- // @filename: moved.py
611
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
612
-
613
- // @filename: used.py
614
- //// import moved
615
- //// import test
616
- ////
617
- //// [|{|"r":"moved"|}test|].foo()
618
- //// test.bar()
619
- `;
620
- testFromCode(code);
621
- });
622
- test('member off import - multiple symbols - existing import with alias', () => {
623
- const code = `
624
- // @filename: test.py
625
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
626
- //// |]def bar(): pass
627
-
628
- // @filename: moved.py
629
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
630
-
631
- // @filename: used.py
632
- //// import moved as m
633
- //// import test
634
- ////
635
- //// [|{|"r":"m"|}test|].foo()
636
- //// test.bar()
637
- `;
638
- testFromCode(code);
639
- });
640
- test('member off import - multiple symbols with alias - existing import', () => {
641
- const code = `
642
- // @filename: test.py
643
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
644
- //// |]def bar(): pass
645
-
646
- // @filename: moved.py
647
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
648
-
649
- // @filename: used.py
650
- //// import moved
651
- //// import test as t
652
- ////
653
- //// [|{|"r":"moved"|}t|].foo()
654
- //// t.bar()
655
- `;
656
- testFromCode(code);
657
- });
658
- test('member off import - multiple symbols with alias - new import', () => {
659
- const code = `
660
- // @filename: test.py
661
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
662
- //// |]def bar(): pass
663
-
664
- // @filename: moved.py
665
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
666
-
667
- // @filename: used.py
668
- //// [|{|"r":"import moved!n!"|}|]import test as t
669
- ////
670
- //// [|{|"r":"moved"|}t|].foo()
671
- //// t.bar()
672
- `;
673
- testFromCode(code);
674
- });
675
- test('member off import - multiple symbols with alias - existing import with alias', () => {
676
- const code = `
677
- // @filename: test.py
678
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
679
- //// |]def bar(): pass
680
-
681
- // @filename: moved.py
682
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
683
-
684
- // @filename: used.py
685
- //// import moved as m
686
- //// import test as t
687
- ////
688
- //// [|{|"r":"m"|}t|].foo()
689
- //// t.bar()
690
- `;
691
- testFromCode(code);
692
- });
693
- test('member off import - multiple symbols - existing from import', () => {
694
- const code = `
695
- // @filename: test.py
696
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
697
- //// |]def bar(): pass
698
-
699
- // @filename: moved.py
700
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
701
-
702
- // @filename: used.py
703
- //// from . import moved
704
- //// import test
705
- ////
706
- //// [|{|"r":"moved"|}test|].foo()
707
- //// test.bar()
708
- `;
709
- testFromCode(code);
710
- });
711
- test('member off import - multiple symbols - existing from import with alias', () => {
712
- const code = `
713
- // @filename: test.py
714
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
715
- //// |]def bar(): pass
716
-
717
- // @filename: moved.py
718
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
719
-
720
- // @filename: used.py
721
- //// from . import moved as m
722
- //// import test
723
- ////
724
- //// [|{|"r":"m"|}test|].foo()
725
- //// test.bar()
726
- `;
727
- testFromCode(code);
728
- });
729
- test('member off import - multiple symbols - existing from import', () => {
730
- const code = `
731
- // @filename: test.py
732
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
733
- //// |]def bar(): pass
734
-
735
- // @filename: moved.py
736
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
737
-
738
- // @filename: used.py
739
- //// from . import moved
740
- //// import test
741
- ////
742
- //// [|{|"r":"moved"|}test|].foo()
743
- //// test.bar()
744
- `;
745
- testFromCode(code);
746
- });
747
- test('member off import - multiple symbols - existing from import with alias', () => {
748
- const code = `
749
- // @filename: test.py
750
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
751
- //// |]def bar(): pass
752
-
753
- // @filename: moved.py
754
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
755
-
756
- // @filename: used.py
757
- //// from . import moved as m
758
- //// import test
759
- ////
760
- //// [|{|"r":"m"|}test|].foo()
761
- //// test.bar()
762
- `;
763
- testFromCode(code);
764
- });
765
- test('member off from import - multiple symbols', () => {
766
- const code = `
767
- // @filename: test.py
768
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
769
- //// |]def bar(): pass
770
-
771
- // @filename: moved.py
772
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
773
-
774
- // @filename: used.py
775
- //// [|{|"r":"import moved!n!"|}|]from . import test
776
- //// [|{|"r":"moved"|}test|].foo()
777
- //// test.bar()
778
- `;
779
- testFromCode(code);
780
- });
781
- test('member off from import - multiple symbols - existing import', () => {
782
- const code = `
783
- // @filename: test.py
784
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
785
- //// |]def bar(): pass
786
-
787
- // @filename: moved.py
788
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
789
-
790
- // @filename: used.py
791
- //// import moved
792
- //// from . import test
793
- ////
794
- //// [|{|"r":"moved"|}test|].foo()
795
- //// test.bar()
796
- `;
797
- testFromCode(code);
798
- });
799
- test('member off from import - multiple symbols - existing import with alias', () => {
800
- const code = `
801
- // @filename: test.py
802
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
803
- //// |]def bar(): pass
804
-
805
- // @filename: moved.py
806
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
807
-
808
- // @filename: used.py
809
- //// import moved as m
810
- //// from . import test
811
- ////
812
- //// [|{|"r":"m"|}test|].foo()
813
- //// test.bar()
814
- `;
815
- testFromCode(code);
816
- });
817
- test('member off from import - multiple symbols with alias - existing import', () => {
818
- const code = `
819
- // @filename: test.py
820
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
821
- //// |]def bar(): pass
822
-
823
- // @filename: moved.py
824
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
825
-
826
- // @filename: used.py
827
- //// import moved
828
- //// from . import test as t
829
- ////
830
- //// [|{|"r":"moved"|}t|].foo()
831
- //// t.bar()
832
- `;
833
- testFromCode(code);
834
- });
835
- test('member off from import - multiple symbols with alias - new import', () => {
836
- const code = `
837
- // @filename: test.py
838
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
839
- //// |]def bar(): pass
840
-
841
- // @filename: moved.py
842
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
843
-
844
- // @filename: used.py
845
- //// [|{|"r":"import moved!n!"|}|]from . import test as t
846
- ////
847
- //// [|{|"r":"moved"|}t|].foo()
848
- //// t.bar()
849
- `;
850
- testFromCode(code);
851
- });
852
- test('member off from import - multiple symbols with alias - existing import with alias', () => {
853
- const code = `
854
- // @filename: test.py
855
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
856
- //// |]def bar(): pass
857
-
858
- // @filename: moved.py
859
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
860
-
861
- // @filename: used.py
862
- //// import moved as m
863
- //// from . import test as t
864
- ////
865
- //// [|{|"r":"m"|}t|].foo()
866
- //// t.bar()
867
- `;
868
- testFromCode(code);
869
- });
870
- test('member off from import - multiple symbols - existing from import', () => {
871
- const code = `
872
- // @filename: test.py
873
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
874
- //// |]def bar(): pass
875
-
876
- // @filename: moved.py
877
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
878
-
879
- // @filename: used.py
880
- //// from . import moved
881
- //// from . import test
882
- ////
883
- //// [|{|"r":"moved"|}test|].foo()
884
- //// test.bar()
885
- `;
886
- testFromCode(code);
887
- });
888
- test('member off from import - multiple symbols - existing from import with alias', () => {
889
- const code = `
890
- // @filename: test.py
891
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass
892
- //// |]def bar(): pass
893
-
894
- // @filename: moved.py
895
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
896
-
897
- // @filename: used.py
898
- //// from . import moved as m
899
- //// from . import test
900
- ////
901
- //// [|{|"r":"m"|}test|].foo()
902
- //// test.bar()
903
- `;
904
- testFromCode(code);
905
- });
906
- test('member off import - error case that we dont touch - function return module', () => {
907
- // We could put import in test so test module still has symbol "foo" but
908
- // for now, we won't handle such corner case.
909
- const code = `
910
- // @filename: test.py
911
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
912
-
913
- // @filename: test2.py
914
- //// def foo(): pass
915
-
916
- // @filename: moved.py
917
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
918
-
919
- // @filename: used.py
920
- //// from test
921
- //// from test2
922
- //// def getTestModule(a):
923
- //// return test if a > 0 else test2
924
- ////
925
- //// getTestModule(1).foo()
926
- `;
927
- testFromCode(code);
928
- });
929
- test('member off import - error case that we dont touch - field return module', () => {
930
- // We could put import in test so test module still has symbol "foo" but
931
- // for now, we won't handle such corner case.
932
- const code = `
933
- // @filename: test.py
934
- //// [|{|"r":""|}def [|/*marker*/foo|](): pass|]
935
-
936
- // @filename: test2.py
937
- //// def foo(): pass
938
-
939
- // @filename: moved.py
940
- //// [|{|"r":"def foo(): pass", "name": "dest"|}|]
941
-
942
- // @filename: used.py
943
- //// from test
944
- //// from test2
945
- //// module = test if a > 0 else test2
946
- ////
947
- //// module.foo()
948
- `;
949
- testFromCode(code);
950
- });
951
- test('simple symbol reference', () => {
952
- const code = `
953
- // @filename: test.py
954
- //// [|{|"r":""|}def [|/*marker*/foo|]():
955
- //// return 1|]
956
-
957
- // @filename: moved.py
958
- //// [|{|"r":"def foo():!n! return 1", "name": "dest"|}|]
959
-
960
- // @filename: used.py
961
- //// from [|{|"r":"moved"|}test|] import foo
962
- ////
963
- //// foo()
964
- //// b = foo().real
965
- `;
966
- testFromCode(code);
967
- });
968
- test('handle __all__ - at the original file', () => {
969
- const code = `
970
- // @filename: test.py
971
- //// [|{|"r":""|}def [|/*marker*/foo|]():
972
- //// return 1
973
- //// |]__all__ = [[|{|"r":""|}"foo"|]]
974
-
975
- // @filename: moved.py
976
- //// [|{|"r":"def foo():!n! return 1", "name": "dest"|}|]
977
-
978
- // @filename: used.py
979
- //// from [|{|"r":"moved"|}test|] import foo
980
- //// foo()
981
- //// b = foo().real
982
- ////
983
- //// __all__ = ["foo"]
984
- `;
985
- testFromCode(code);
986
- });
987
- test('handle wildcard import - new import', () => {
988
- const code = `
989
- // @filename: test.py
990
- //// [|{|"r":""|}def [|/*marker*/foo|]():
991
- //// return 1|]
992
-
993
- // @filename: moved.py
994
- //// [|{|"r":"def foo():!n! return 1", "name": "dest"|}|]
995
-
996
- // @filename: used.py
997
- //// [|{|"r":"from moved import foo!n!"|}|]from test import *
998
- //// foo()
999
- //// b = foo().real
1000
- `;
1001
- testFromCode(code);
1002
- });
1003
- test('handle wildcard import with existing import', () => {
1004
- const code = `
1005
- // @filename: test.py
1006
- //// [|{|"r":""|}def [|/*marker*/foo|]():
1007
- //// return 1|]
1008
-
1009
- // @filename: moved.py
1010
- //// def bar():
1011
- //// pass[|{|"r":"!n!!n!!n!def foo():!n! return 1", "name": "dest"|}|]
1012
-
1013
- // @filename: used.py
1014
- //// from moved import bar[|{|"r":", foo"|}|]
1015
- //// from test import *
1016
- //// foo()
1017
- //// b = foo().real
1018
- `;
1019
- testFromCode(code);
1020
- });
1021
- test('handle wildcard import with existing wildcard import', () => {
1022
- const code = `
1023
- // @filename: test.py
1024
- //// [|{|"r":""|}def [|/*marker*/foo|]():
1025
- //// return 1|]
1026
-
1027
- // @filename: moved.py
1028
- //// def bar():
1029
- //// pass[|{|"r":"!n!!n!!n!def foo():!n! return 1", "name": "dest"|}|]
1030
-
1031
- // @filename: used.py
1032
- //// from moved import *[|{|"r":"!n!from moved import foo"|}|]
1033
- //// from test import *
1034
- //// foo()
1035
- //// b = foo().real
1036
- `;
1037
- testFromCode(code);
1038
- });
1039
- test('handle wildcard import in destination file', () => {
1040
- const code = `
1041
- // @filename: test.py
1042
- //// [|{|"r":""|}def [|/*marker*/foo|]():
1043
- //// return 1|]
1044
-
1045
- // @filename: moved.py
1046
- //// from test import *
1047
- ////
1048
- //// def bar():
1049
- //// pass[|{|"r":"!n!!n!!n!def foo():!n! return 1", "name": "dest"|}|]
1050
- `;
1051
- testFromCode(code);
1052
- });
1053
- test('move symbol whose decl is after reference', () => {
1054
- const code = `
1055
- // @filename: test.py
1056
- //// [|{|"r":"from moved import mysum!n!!n!!n!"|}|]def myfunc():
1057
- //// z = mysum()
1058
- ////
1059
- //// [|{|"r":""|}def [|/*marker*/mysum|]():
1060
- //// return 1|]
1061
-
1062
- // @filename: moved.py
1063
- //// [|{|"r":"def mysum():!n! return 1", "name": "dest"|}|]
1064
- `;
1065
- testFromCode(code);
1066
- });
1067
- function testFromCode(code) {
1068
- const state = (0, testState_1.parseAndGetTestState)(code).state;
1069
- (0, renameModuleTestUtils_1.testMoveSymbolAtPosition)(state, state.getMarkerByName('marker').fileName, state.getMarkerByName('dest').fileName, state.getPositionRange('marker').start);
1070
- }
1071
- //# sourceMappingURL=moveSymbol.updateReference.test.js.map