@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.
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +4 -1
- package/dist/analyzer/backgroundAnalysisProgram.js +12 -0
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -0
- package/dist/analyzer/checker.js +89 -6
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +14 -15
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructors.d.ts +6 -0
- package/dist/analyzer/constructors.js +513 -0
- package/dist/analyzer/constructors.js.map +1 -0
- package/dist/analyzer/dataClasses.js +86 -2
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/docStringConversion.js +1 -1
- package/dist/analyzer/docStringConversion.js.map +1 -1
- package/dist/analyzer/enums.js +62 -8
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/importResolver.js +47 -29
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +2 -2
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.js +3 -6
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.d.ts +16 -0
- package/dist/analyzer/operations.js +749 -0
- package/dist/analyzer/operations.js.map +1 -0
- package/dist/analyzer/parseTreeUtils.d.ts +4 -2
- package/dist/analyzer/parseTreeUtils.js +32 -1
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +16 -0
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +11 -33
- package/dist/analyzer/program.js +73 -735
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/protocols.js +1 -1
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.d.ts +5 -21
- package/dist/analyzer/service.js +26 -33
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +9 -41
- package/dist/analyzer/sourceFile.js +219 -238
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +3 -9
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/symbol.d.ts +3 -1
- package/dist/analyzer/symbol.js +5 -0
- package/dist/analyzer/symbol.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +460 -1425
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +42 -7
- package/dist/analyzer/typeEvaluatorTypes.js +33 -1
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +2 -8
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.d.ts +3 -3
- package/dist/analyzer/typePrinter.js +247 -100
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +14 -7
- package/dist/analyzer/typeUtils.js +204 -49
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.d.ts +6 -7
- package/dist/analyzer/typeVarContext.js +21 -32
- package/dist/analyzer/typeVarContext.js.map +1 -1
- package/dist/analyzer/typedDicts.js +2 -2
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +7 -4
- package/dist/analyzer/types.js +20 -10
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +1 -1
- package/dist/backgroundAnalysisBase.js +16 -0
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +0 -1
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/extensibility.d.ts +28 -4
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/logTracker.d.ts +2 -0
- package/dist/common/logTracker.js +8 -1
- package/dist/common/logTracker.js.map +1 -1
- package/dist/common/lspUtils.d.ts +4 -1
- package/dist/common/lspUtils.js +38 -1
- package/dist/common/lspUtils.js.map +1 -1
- package/dist/common/pathUtils.d.ts +11 -11
- package/dist/common/pathUtils.js.map +1 -1
- package/dist/common/pythonVersion.d.ts +2 -1
- package/dist/common/pythonVersion.js +1 -0
- package/dist/common/pythonVersion.js.map +1 -1
- package/dist/common/workspaceEditUtils.d.ts +8 -8
- package/dist/common/workspaceEditUtils.js +10 -10
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +3 -7
- package/dist/languageServerBase.js +41 -73
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/autoImporter.d.ts +50 -51
- package/dist/languageService/autoImporter.js +125 -210
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.d.ts +1 -1
- package/dist/languageService/callHierarchyProvider.js +11 -37
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +39 -81
- package/dist/languageService/completionProvider.js +572 -801
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/documentHighlightProvider.js +1 -1
- package/dist/languageService/documentHighlightProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.d.ts +6 -7
- package/dist/languageService/documentSymbolCollector.js +47 -28
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.d.ts +13 -35
- package/dist/languageService/documentSymbolProvider.js +52 -264
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +5 -6
- package/dist/languageService/hoverProvider.js +40 -132
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/referencesProvider.d.ts +6 -11
- package/dist/languageService/referencesProvider.js +23 -17
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/renameProvider.d.ts +16 -0
- package/dist/languageService/renameProvider.js +139 -0
- package/dist/languageService/renameProvider.js.map +1 -0
- package/dist/languageService/symbolIndexer.d.ts +31 -0
- package/dist/languageService/symbolIndexer.js +105 -0
- package/dist/languageService/symbolIndexer.js.map +1 -0
- package/dist/languageService/tooltipUtils.d.ts +8 -1
- package/dist/languageService/tooltipUtils.js +102 -1
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.d.ts +17 -0
- package/dist/languageService/workspaceSymbolProvider.js +133 -0
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -0
- package/dist/localization/localize.d.ts +33 -15
- package/dist/localization/localize.js +13 -7
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +14 -7
- package/dist/parser/parser.js +3 -0
- package/dist/parser/parser.js.map +1 -1
- package/dist/pyright.js +26 -4
- package/dist/pyright.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +15 -20
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/checker.test.js +14 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/completions.test.js +11 -236
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/docStringConversion.test.js +36 -2
- package/dist/tests/docStringConversion.test.js.map +1 -1
- package/dist/tests/documentSymbolCollector.test.js +3 -3
- package/dist/tests/documentSymbolCollector.test.js.map +1 -1
- package/dist/tests/fourslash/completions.override2.fourslash.js +1 -16
- package/dist/tests/fourslash/completions.override2.fourslash.js.map +1 -1
- package/dist/tests/fourslash/fourslash.d.ts +4 -4
- package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js +1 -1
- package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +17 -11
- package/dist/tests/harness/fourslash/testState.js +39 -50
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/importResolver.test.js +81 -1
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/sourceFile.test.js +1 -1
- package/dist/tests/sourceFile.test.js.map +1 -1
- package/dist/tests/testStateUtils.d.ts +2 -2
- package/dist/tests/testStateUtils.js +38 -8
- package/dist/tests/testStateUtils.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +13 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +5 -1
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +9 -1
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +25 -9
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +95 -6
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/package.json +4 -4
- package/dist/languageService/importAdder.d.ts +0 -40
- package/dist/languageService/importAdder.js +0 -388
- package/dist/languageService/importAdder.js.map +0 -1
- package/dist/languageService/indentationUtils.d.ts +0 -16
- package/dist/languageService/indentationUtils.js +0 -727
- package/dist/languageService/indentationUtils.js.map +0 -1
- package/dist/languageService/insertionPointUtils.d.ts +0 -9
- package/dist/languageService/insertionPointUtils.js +0 -132
- package/dist/languageService/insertionPointUtils.js.map +0 -1
- package/dist/languageService/renameModuleProvider.d.ts +0 -65
- package/dist/languageService/renameModuleProvider.js +0 -939
- package/dist/languageService/renameModuleProvider.js.map +0 -1
- package/dist/tests/fourslash/completions.commitChars.fourslash.d.ts +0 -1
- package/dist/tests/fourslash/completions.commitChars.fourslash.js +0 -81
- package/dist/tests/fourslash/completions.commitChars.fourslash.js.map +0 -1
- package/dist/tests/importAdder.test.d.ts +0 -1
- package/dist/tests/importAdder.test.js +0 -1325
- package/dist/tests/importAdder.test.js.map +0 -1
- package/dist/tests/indentationUtils.ptvs.test.d.ts +0 -1
- package/dist/tests/indentationUtils.ptvs.test.js +0 -324
- package/dist/tests/indentationUtils.ptvs.test.js.map +0 -1
- package/dist/tests/indentationUtils.reindent.test.d.ts +0 -1
- package/dist/tests/indentationUtils.reindent.test.js +0 -372
- package/dist/tests/indentationUtils.reindent.test.js.map +0 -1
- package/dist/tests/indentationUtils.test.d.ts +0 -1
- package/dist/tests/indentationUtils.test.js +0 -502
- package/dist/tests/indentationUtils.test.js.map +0 -1
- package/dist/tests/insertionPointUtils.test.d.ts +0 -1
- package/dist/tests/insertionPointUtils.test.js +0 -154
- package/dist/tests/insertionPointUtils.test.js.map +0 -1
- package/dist/tests/moveSymbol.importAdder.test.d.ts +0 -1
- package/dist/tests/moveSymbol.importAdder.test.js +0 -298
- package/dist/tests/moveSymbol.importAdder.test.js.map +0 -1
- package/dist/tests/moveSymbol.insertion.test.d.ts +0 -1
- package/dist/tests/moveSymbol.insertion.test.js +0 -537
- package/dist/tests/moveSymbol.insertion.test.js.map +0 -1
- package/dist/tests/moveSymbol.misc.test.d.ts +0 -1
- package/dist/tests/moveSymbol.misc.test.js +0 -169
- package/dist/tests/moveSymbol.misc.test.js.map +0 -1
- package/dist/tests/moveSymbol.updateReference.test.d.ts +0 -1
- package/dist/tests/moveSymbol.updateReference.test.js +0 -1071
- package/dist/tests/moveSymbol.updateReference.test.js.map +0 -1
- package/dist/tests/renameModule.folder.test.d.ts +0 -1
- package/dist/tests/renameModule.folder.test.js +0 -229
- package/dist/tests/renameModule.folder.test.js.map +0 -1
- package/dist/tests/renameModule.fromImports.test.d.ts +0 -1
- package/dist/tests/renameModule.fromImports.test.js +0 -790
- package/dist/tests/renameModule.fromImports.test.js.map +0 -1
- package/dist/tests/renameModule.imports.test.d.ts +0 -1
- package/dist/tests/renameModule.imports.test.js +0 -380
- package/dist/tests/renameModule.imports.test.js.map +0 -1
- package/dist/tests/renameModule.misc.test.d.ts +0 -1
- package/dist/tests/renameModule.misc.test.js +0 -615
- package/dist/tests/renameModule.misc.test.js.map +0 -1
- package/dist/tests/renameModule.relativePath.test.d.ts +0 -1
- package/dist/tests/renameModule.relativePath.test.js +0 -231
- package/dist/tests/renameModule.relativePath.test.js.map +0 -1
- package/dist/tests/renameModuleTestUtils.d.ts +0 -4
- package/dist/tests/renameModuleTestUtils.js +0 -76
- 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
|