@zzzen/pyright-internal 1.2.0-dev.20230205 → 1.2.0-dev.20230219

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 (161) 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/checker.js +8 -5
  5. package/dist/analyzer/checker.js.map +1 -1
  6. package/dist/analyzer/commentUtils.d.ts +6 -1
  7. package/dist/analyzer/commentUtils.js +100 -25
  8. package/dist/analyzer/commentUtils.js.map +1 -1
  9. package/dist/analyzer/constraintSolver.js +83 -67
  10. package/dist/analyzer/constraintSolver.js.map +1 -1
  11. package/dist/analyzer/dataClasses.js +9 -2
  12. package/dist/analyzer/dataClasses.js.map +1 -1
  13. package/dist/analyzer/declaration.d.ts +1 -0
  14. package/dist/analyzer/declaration.js.map +1 -1
  15. package/dist/analyzer/importStatementUtils.d.ts +1 -0
  16. package/dist/analyzer/importStatementUtils.js +14 -1
  17. package/dist/analyzer/importStatementUtils.js.map +1 -1
  18. package/dist/analyzer/parameterUtils.d.ts +2 -0
  19. package/dist/analyzer/parameterUtils.js +20 -0
  20. package/dist/analyzer/parameterUtils.js.map +1 -0
  21. package/dist/analyzer/parseTreeUtils.d.ts +6 -2
  22. package/dist/analyzer/parseTreeUtils.js +52 -14
  23. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  24. package/dist/analyzer/parseTreeWalker.d.ts +1 -1
  25. package/dist/analyzer/patternMatching.js +25 -5
  26. package/dist/analyzer/patternMatching.js.map +1 -1
  27. package/dist/analyzer/program.d.ts +9 -2
  28. package/dist/analyzer/program.js +106 -8
  29. package/dist/analyzer/program.js.map +1 -1
  30. package/dist/analyzer/service.d.ts +1 -4
  31. package/dist/analyzer/service.js +16 -36
  32. package/dist/analyzer/service.js.map +1 -1
  33. package/dist/analyzer/sourceFile.d.ts +4 -0
  34. package/dist/analyzer/sourceFile.js +82 -16
  35. package/dist/analyzer/sourceFile.js.map +1 -1
  36. package/dist/analyzer/testWalker.js +23 -15
  37. package/dist/analyzer/testWalker.js.map +1 -1
  38. package/dist/analyzer/typeEvaluator.js +122 -71
  39. package/dist/analyzer/typeEvaluator.js.map +1 -1
  40. package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -1
  41. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  42. package/dist/analyzer/typePrinter.d.ts +2 -1
  43. package/dist/analyzer/typePrinter.js +13 -0
  44. package/dist/analyzer/typePrinter.js.map +1 -1
  45. package/dist/analyzer/typeUtils.d.ts +1 -1
  46. package/dist/analyzer/typeUtils.js +189 -142
  47. package/dist/analyzer/typeUtils.js.map +1 -1
  48. package/dist/analyzer/typeVarContext.d.ts +31 -14
  49. package/dist/analyzer/typeVarContext.js +158 -79
  50. package/dist/analyzer/typeVarContext.js.map +1 -1
  51. package/dist/analyzer/types.d.ts +2 -1
  52. package/dist/analyzer/types.js +1 -0
  53. package/dist/analyzer/types.js.map +1 -1
  54. package/dist/backgroundAnalysisBase.d.ts +2 -1
  55. package/dist/backgroundAnalysisBase.js +15 -1
  56. package/dist/backgroundAnalysisBase.js.map +1 -1
  57. package/dist/backgroundThreadBase.js +1 -0
  58. package/dist/backgroundThreadBase.js.map +1 -1
  59. package/dist/common/commandLineOptions.d.ts +2 -0
  60. package/dist/common/commandLineOptions.js.map +1 -1
  61. package/dist/common/configOptions.d.ts +3 -0
  62. package/dist/common/configOptions.js +10 -1
  63. package/dist/common/configOptions.js.map +1 -1
  64. package/dist/common/core.d.ts +2 -0
  65. package/dist/common/core.js +9 -1
  66. package/dist/common/core.js.map +1 -1
  67. package/dist/common/diagnostic.d.ts +15 -3
  68. package/dist/common/diagnostic.js +13 -4
  69. package/dist/common/diagnostic.js.map +1 -1
  70. package/dist/common/editAction.d.ts +1 -0
  71. package/dist/common/editAction.js +8 -0
  72. package/dist/common/editAction.js.map +1 -1
  73. package/dist/common/extensibility.d.ts +34 -11
  74. package/dist/common/extensibility.js +63 -18
  75. package/dist/common/extensibility.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/textEditUtils.d.ts +26 -9
  80. package/dist/common/textEditUtils.js +218 -41
  81. package/dist/common/textEditUtils.js.map +1 -1
  82. package/dist/common/textRangeCollection.d.ts +1 -0
  83. package/dist/common/textRangeCollection.js +54 -20
  84. package/dist/common/textRangeCollection.js.map +1 -1
  85. package/dist/languageServerBase.d.ts +3 -0
  86. package/dist/languageServerBase.js +90 -1
  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/completionProvider.js +13 -7
  91. package/dist/languageService/completionProvider.js.map +1 -1
  92. package/dist/languageService/definitionProvider.js +1 -1
  93. package/dist/languageService/definitionProvider.js.map +1 -1
  94. package/dist/languageService/documentSymbolCollector.js +1 -1
  95. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  96. package/dist/languageService/hoverProvider.js +10 -6
  97. package/dist/languageService/hoverProvider.js.map +1 -1
  98. package/dist/languageService/importAdder.d.ts +4 -0
  99. package/dist/languageService/importAdder.js +50 -13
  100. package/dist/languageService/importAdder.js.map +1 -1
  101. package/dist/languageService/insertionPointUtils.js +28 -7
  102. package/dist/languageService/insertionPointUtils.js.map +1 -1
  103. package/dist/languageService/renameModuleProvider.d.ts +12 -10
  104. package/dist/languageService/renameModuleProvider.js +240 -229
  105. package/dist/languageService/renameModuleProvider.js.map +1 -1
  106. package/dist/languageService/signatureHelpProvider.js +20 -3
  107. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  108. package/dist/languageService/tooltipUtils.js +1 -1
  109. package/dist/languageService/tooltipUtils.js.map +1 -1
  110. package/dist/localization/localize.d.ts +10 -1
  111. package/dist/localization/localize.js +6 -1
  112. package/dist/localization/localize.js.map +1 -1
  113. package/dist/localization/package.nls.en-us.json +8 -2
  114. package/dist/tests/checker.test.js +5 -0
  115. package/dist/tests/checker.test.js.map +1 -1
  116. package/dist/tests/fourslash/completions.params.fourslash.js +37 -0
  117. package/dist/tests/fourslash/completions.params.fourslash.js.map +1 -1
  118. package/dist/tests/fourslash/hover.inferred.fourslash.d.ts +1 -0
  119. package/dist/tests/fourslash/hover.inferred.fourslash.js +24 -0
  120. package/dist/tests/fourslash/hover.inferred.fourslash.js.map +1 -0
  121. package/dist/tests/fourslash/signature.complicated.fourslash.js +31 -1
  122. package/dist/tests/fourslash/signature.complicated.fourslash.js.map +1 -1
  123. package/dist/tests/hoverProvider.test.js +27 -0
  124. package/dist/tests/hoverProvider.test.js.map +1 -1
  125. package/dist/tests/importAdder.test.js +39 -2
  126. package/dist/tests/importAdder.test.js.map +1 -1
  127. package/dist/tests/insertionPointUtils.test.js +70 -3
  128. package/dist/tests/insertionPointUtils.test.js.map +1 -1
  129. package/dist/tests/{updateSymbolReference.test.d.ts → moveSymbol.importAdder.test.d.ts} +0 -0
  130. package/dist/tests/moveSymbol.importAdder.test.js +139 -0
  131. package/dist/tests/moveSymbol.importAdder.test.js.map +1 -0
  132. package/dist/tests/moveSymbol.insertion.test.d.ts +1 -0
  133. package/dist/tests/moveSymbol.insertion.test.js +360 -0
  134. package/dist/tests/moveSymbol.insertion.test.js.map +1 -0
  135. package/dist/tests/moveSymbol.misc.test.d.ts +1 -0
  136. package/dist/tests/moveSymbol.misc.test.js +37 -0
  137. package/dist/tests/moveSymbol.misc.test.js.map +1 -0
  138. package/dist/tests/moveSymbol.updateReference.test.d.ts +1 -0
  139. package/dist/tests/{updateSymbolReference.test.js → moveSymbol.updateReference.test.js} +235 -158
  140. package/dist/tests/moveSymbol.updateReference.test.js.map +1 -0
  141. package/dist/tests/parseTreeUtils.test.js +36 -13
  142. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  143. package/dist/tests/renameModuleTestUtils.js +9 -3
  144. package/dist/tests/renameModuleTestUtils.js.map +1 -1
  145. package/dist/tests/testStateUtils.d.ts +2 -0
  146. package/dist/tests/testStateUtils.js +25 -22
  147. package/dist/tests/testStateUtils.js.map +1 -1
  148. package/dist/tests/textEditUtil.test.d.ts +1 -0
  149. package/dist/tests/textEditUtil.test.js +107 -0
  150. package/dist/tests/textEditUtil.test.js.map +1 -0
  151. package/dist/tests/typeEvaluator1.test.js +4 -0
  152. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  153. package/dist/tests/typeEvaluator3.test.js +2 -2
  154. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  155. package/dist/tests/typeEvaluator4.test.js +10 -2
  156. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  157. package/dist/workspaceMap.d.ts +0 -1
  158. package/dist/workspaceMap.js +0 -11
  159. package/dist/workspaceMap.js.map +1 -1
  160. package/package.json +1 -1
  161. package/dist/tests/updateSymbolReference.test.js.map +0 -1
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /*
3
+ * moveSymbol.importAdder.test.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ *
7
+ * importAdder tests around move symbol.
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 imports used in the symbol', () => {
13
+ const code = `
14
+ // @filename: test.py
15
+ //// from typing import List, Mapping
16
+ ////
17
+ //// class MyType:
18
+ //// pass
19
+ ////
20
+ //// [|{|"r":""|}def [|/*marker*/foo|](a: str, b: List[int]) -> None:
21
+ //// c: Mapping[str, MyType] = { 'hello', MyType() }|]
22
+
23
+ // @filename: moved.py
24
+ //// [|{|"r":"from typing import List, Mapping!n!!n!!n!"|}|][|{|"r":"from test import MyType!n!!n!!n!"|}|][|{|"r":"def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType() }", "name": "dest"|}|]
25
+ `;
26
+ testFromCode(code);
27
+ });
28
+ test('import with alias', () => {
29
+ const code = `
30
+ // @filename: test.py
31
+ //// from typing import List as l, Mapping as m
32
+ ////
33
+ //// class MyType:
34
+ //// pass
35
+ ////
36
+ //// [|{|"r":""|}def [|/*marker*/foo|](a: str, b: l[int]) -> None:
37
+ //// c: m[str, MyType] = { 'hello', MyType() }|]
38
+
39
+ // @filename: moved.py
40
+ //// [|{|"r":"from typing import List as l, Mapping as m!n!!n!!n!"|}|][|{|"r":"from test import MyType!n!!n!!n!"|}|][|{|"r":"def foo(a: str, b: l[int]) -> None:!n! c: m[str, MyType] = { 'hello', MyType() }", "name": "dest"|}|]
41
+ `;
42
+ testFromCode(code);
43
+ });
44
+ test('with existing imports', () => {
45
+ const code = `
46
+ // @filename: test.py
47
+ //// from typing import List, Mapping
48
+ ////
49
+ //// class MyType:
50
+ //// pass
51
+ ////
52
+ //// [|{|"r":""|}def [|/*marker*/foo|](a: str, b: List[int]) -> None:
53
+ //// c: Mapping[str, MyType] = { 'hello', MyType() }|]
54
+
55
+ // @filename: moved.py
56
+ //// from typing import List, Mapping
57
+ //// from test import MyType[|{|"r":"!n!!n!!n!def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType() }", "name": "dest"|}|]
58
+ `;
59
+ testFromCode(code);
60
+ });
61
+ test('merge with existing imports', () => {
62
+ const code = `
63
+ // @filename: test.py
64
+ //// from typing import List, Mapping
65
+ ////
66
+ //// class MyType:
67
+ //// pass
68
+ ////
69
+ //// class MyType2(MyType):
70
+ //// pass
71
+ ////
72
+ //// [|{|"r":""|}def [|/*marker*/foo|](a: str, b: List[int]) -> None:
73
+ //// c: Mapping[str, MyType] = { 'hello', MyType2() }|]
74
+
75
+ // @filename: moved.py
76
+ //// from typing import Mapping[|{|"r":"!n!from typing import List"|}|]
77
+ //// from test import MyType[|{|"r":"!n!from test import MyType2"|}|]
78
+ //// m = MyType()[|{|"r":"!n!!n!!n!def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType2() }", "name": "dest"|}|]
79
+ `;
80
+ testFromCode(code);
81
+ });
82
+ test('merge with existing moving symbol imports', () => {
83
+ const code = `
84
+ // @filename: test.py
85
+ //// from typing import List, Mapping
86
+ ////
87
+ //// class MyType:
88
+ //// pass
89
+ ////
90
+ //// [|{|"r":""|}def [|/*marker*/foo|](a: str, b: List[int]) -> None:
91
+ //// c: Mapping[str, MyType] = { 'hello', MyType() }|]
92
+
93
+ // @filename: moved.py
94
+ //// from typing import List, Mapping
95
+ //// from test import [|{|"r":""|}foo, |]MyType[|{|"r":"!n!!n!!n!def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType() }", "name": "dest"|}|]
96
+ ////
97
+ //// foo()
98
+ `;
99
+ testFromCode(code);
100
+ });
101
+ test('merge with existing moving symbol imports and add new one', () => {
102
+ const code = `
103
+ // @filename: test.py
104
+ //// from typing import List, Mapping
105
+ ////
106
+ //// class MyType:
107
+ //// pass
108
+ ////
109
+ //// [|{|"r":""|}def [|/*marker*/foo|](a: str, b: List[int]) -> None:
110
+ //// c: Mapping[str, MyType] = { 'hello', MyType() }|]
111
+
112
+ // @filename: moved.py
113
+ //// from typing import List, Mapping
114
+ //// [|{|"r":""|}from test import foo[|{|"r":"!n!from test import MyType"|}|][|{|"r":"!n!!n!!n!def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType() }", "name": "dest"|}|]
115
+ //// |]
116
+ //// foo()
117
+ `;
118
+ testFromCode(code);
119
+ });
120
+ test('symbol from destination file used', () => {
121
+ const code = `
122
+ // @filename: test.py
123
+ //// from moved import MyType
124
+ ////
125
+ //// [|{|"r":""|}def [|/*marker*/foo|](a: MyType) -> None:
126
+ //// c: Mapping[str, MyType] = { 'hello', a }|]
127
+
128
+ // @filename: moved.py
129
+ //// class MyType:
130
+ //// pass[|{|"r":"!n!!n!!n!def foo(a: MyType) -> None:!n! c: Mapping[str, MyType] = { 'hello', a }", "name": "dest"|}|]
131
+ ////
132
+ `;
133
+ testFromCode(code);
134
+ });
135
+ function testFromCode(code) {
136
+ const state = (0, testState_1.parseAndGetTestState)(code).state;
137
+ (0, renameModuleTestUtils_1.testMoveSymbolAtPosition)(state, state.getMarkerByName('marker').fileName, state.getMarkerByName('dest').fileName, state.getPositionRange('marker').start);
138
+ }
139
+ //# sourceMappingURL=moveSymbol.importAdder.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moveSymbol.importAdder.test.js","sourceRoot":"","sources":["../../../src/tests/moveSymbol.importAdder.test.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,6DAAqE;AACrE,mEAAmE;AAEnE,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;IACzC,MAAM,IAAI,GAAG;;;;;;;;;;;;SAYR,CAAC;IAEN,YAAY,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC3B,MAAM,IAAI,GAAG;;;;;;;;;;;;SAYR,CAAC;IAEN,YAAY,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IAC/B,MAAM,IAAI,GAAG;;;;;;;;;;;;;SAaR,CAAC;IAEN,YAAY,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACrC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;SAiBR,CAAC;IAEN,YAAY,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACnD,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;SAeR,CAAC;IAEN,YAAY,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;IACnE,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;SAeR,CAAC;IAEN,YAAY,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC3C,MAAM,IAAI,GAAG;;;;;;;;;;;SAWR,CAAC;IAEN,YAAY,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AACH,SAAS,YAAY,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IAE/C,IAAA,gDAAwB,EACpB,KAAK,EACL,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,CACzC,CAAC;AACN,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,360 @@
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
+ //// from [|{|"r":"moved"|}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
+ function testFromCode(code) {
357
+ const state = (0, testState_1.parseAndGetTestState)(code).state;
358
+ (0, renameModuleTestUtils_1.testMoveSymbolAtPosition)(state, state.getMarkerByName('marker').fileName, state.getMarkerByName('dest').fileName, state.getPositionRange('marker').start);
359
+ }
360
+ //# 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,37 @@
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
+ const state = (0, testState_1.parseAndGetTestState)(code).state;
25
+ 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);
26
+ (0, assert_1.default)(!actions);
27
+ });
28
+ test('source and destnation file can not be same', () => {
29
+ const code = `
30
+ // @filename: test.py
31
+ //// [|/*dest*/|]def [|/*marker*/foo|](): pass
32
+ `;
33
+ const state = (0, testState_1.parseAndGetTestState)(code).state;
34
+ 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);
35
+ (0, assert_1.default)(!actions);
36
+ });
37
+ //# 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,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,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACpD,MAAM,IAAI,GAAG;;;SAGR,CAAC;IAEN,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,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};