@zzzen/pyright-internal 1.2.0-dev.20230507 → 1.2.0-dev.20230521

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 (210) hide show
  1. package/dist/analyzer/analyzerFileInfo.d.ts +1 -0
  2. package/dist/analyzer/analyzerFileInfo.js +4 -3
  3. package/dist/analyzer/analyzerFileInfo.js.map +1 -1
  4. package/dist/analyzer/backgroundAnalysisProgram.d.ts +17 -15
  5. package/dist/analyzer/backgroundAnalysisProgram.js +43 -53
  6. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  7. package/dist/analyzer/binder.d.ts +0 -2
  8. package/dist/analyzer/binder.js +2 -20
  9. package/dist/analyzer/binder.js.map +1 -1
  10. package/dist/analyzer/checker.d.ts +1 -1
  11. package/dist/analyzer/checker.js +97 -29
  12. package/dist/analyzer/checker.js.map +1 -1
  13. package/dist/analyzer/constraintSolver.js +14 -15
  14. package/dist/analyzer/constraintSolver.js.map +1 -1
  15. package/dist/analyzer/constructorTransform.js +5 -1
  16. package/dist/analyzer/constructorTransform.js.map +1 -1
  17. package/dist/analyzer/constructors.js +248 -189
  18. package/dist/analyzer/constructors.js.map +1 -1
  19. package/dist/analyzer/dataClasses.js +5 -2
  20. package/dist/analyzer/dataClasses.js.map +1 -1
  21. package/dist/analyzer/declarationUtils.js +1 -0
  22. package/dist/analyzer/declarationUtils.js.map +1 -1
  23. package/dist/analyzer/docStringConversion.js +1 -1
  24. package/dist/analyzer/docStringConversion.js.map +1 -1
  25. package/dist/analyzer/enums.js +8 -0
  26. package/dist/analyzer/enums.js.map +1 -1
  27. package/dist/analyzer/importResolver.d.ts +4 -4
  28. package/dist/analyzer/importResolver.js +93 -69
  29. package/dist/analyzer/importResolver.js.map +1 -1
  30. package/dist/analyzer/importResult.d.ts +2 -2
  31. package/dist/analyzer/importStatementUtils.js +2 -2
  32. package/dist/analyzer/importStatementUtils.js.map +1 -1
  33. package/dist/analyzer/namedTuples.js +2 -5
  34. package/dist/analyzer/namedTuples.js.map +1 -1
  35. package/dist/analyzer/packageTypeVerifier.js +1 -1
  36. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  37. package/dist/analyzer/parseTreeUtils.js +2 -34
  38. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  39. package/dist/analyzer/parseTreeWalker.js +2 -2
  40. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  41. package/dist/analyzer/patternMatching.js +1 -0
  42. package/dist/analyzer/patternMatching.js.map +1 -1
  43. package/dist/analyzer/program.d.ts +18 -34
  44. package/dist/analyzer/program.js +57 -259
  45. package/dist/analyzer/program.js.map +1 -1
  46. package/dist/analyzer/protocols.js +4 -2
  47. package/dist/analyzer/protocols.js.map +1 -1
  48. package/dist/analyzer/service.d.ts +8 -16
  49. package/dist/analyzer/service.js +33 -47
  50. package/dist/analyzer/service.js.map +1 -1
  51. package/dist/analyzer/sourceFile.d.ts +1 -15
  52. package/dist/analyzer/sourceFile.js +14 -96
  53. package/dist/analyzer/sourceFile.js.map +1 -1
  54. package/dist/analyzer/sourceMapper.js +1 -1
  55. package/dist/analyzer/sourceMapper.js.map +1 -1
  56. package/dist/analyzer/symbol.d.ts +3 -1
  57. package/dist/analyzer/symbol.js +5 -0
  58. package/dist/analyzer/symbol.js.map +1 -1
  59. package/dist/analyzer/typeDocStringUtils.js +1 -1
  60. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  61. package/dist/analyzer/typeEvaluator.d.ts +2 -2
  62. package/dist/analyzer/typeEvaluator.js +495 -196
  63. package/dist/analyzer/typeEvaluator.js.map +1 -1
  64. package/dist/analyzer/typeEvaluatorTypes.d.ts +7 -2
  65. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  66. package/dist/analyzer/typeGuards.js +1 -0
  67. package/dist/analyzer/typeGuards.js.map +1 -1
  68. package/dist/analyzer/typePrinter.d.ts +3 -3
  69. package/dist/analyzer/typePrinter.js +255 -101
  70. package/dist/analyzer/typePrinter.js.map +1 -1
  71. package/dist/analyzer/typeUtils.d.ts +12 -7
  72. package/dist/analyzer/typeUtils.js +174 -49
  73. package/dist/analyzer/typeUtils.js.map +1 -1
  74. package/dist/analyzer/typeVarContext.d.ts +1 -2
  75. package/dist/analyzer/typeVarContext.js +16 -34
  76. package/dist/analyzer/typeVarContext.js.map +1 -1
  77. package/dist/analyzer/typedDicts.js +138 -41
  78. package/dist/analyzer/typedDicts.js.map +1 -1
  79. package/dist/analyzer/types.d.ts +10 -3
  80. package/dist/analyzer/types.js +32 -16
  81. package/dist/analyzer/types.js.map +1 -1
  82. package/dist/backgroundAnalysisBase.d.ts +25 -19
  83. package/dist/backgroundAnalysisBase.js +161 -115
  84. package/dist/backgroundAnalysisBase.js.map +1 -1
  85. package/dist/backgroundThreadBase.d.ts +1 -1
  86. package/dist/backgroundThreadBase.js +1 -1
  87. package/dist/backgroundThreadBase.js.map +1 -1
  88. package/dist/commands/dumpFileDebugInfoCommand.js +3 -4
  89. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  90. package/dist/common/configOptions.js +1 -1
  91. package/dist/common/configOptions.js.map +1 -1
  92. package/dist/common/extensibility.d.ts +26 -5
  93. package/dist/common/extensibility.js.map +1 -1
  94. package/dist/common/logTracker.d.ts +2 -0
  95. package/dist/common/logTracker.js +8 -1
  96. package/dist/common/logTracker.js.map +1 -1
  97. package/dist/common/lspUtils.d.ts +4 -1
  98. package/dist/common/lspUtils.js +38 -1
  99. package/dist/common/lspUtils.js.map +1 -1
  100. package/dist/common/pythonVersion.d.ts +2 -1
  101. package/dist/common/pythonVersion.js +1 -0
  102. package/dist/common/pythonVersion.js.map +1 -1
  103. package/dist/common/textRange.js +1 -1
  104. package/dist/common/textRange.js.map +1 -1
  105. package/dist/common/workspaceEditUtils.d.ts +3 -3
  106. package/dist/common/workspaceEditUtils.js +15 -17
  107. package/dist/common/workspaceEditUtils.js.map +1 -1
  108. package/dist/languageServerBase.d.ts +2 -5
  109. package/dist/languageServerBase.js +35 -62
  110. package/dist/languageServerBase.js.map +1 -1
  111. package/dist/languageService/autoImporter.d.ts +51 -52
  112. package/dist/languageService/autoImporter.js +126 -211
  113. package/dist/languageService/autoImporter.js.map +1 -1
  114. package/dist/languageService/callHierarchyProvider.js +8 -33
  115. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  116. package/dist/languageService/completionProvider.d.ts +42 -81
  117. package/dist/languageService/completionProvider.js +608 -841
  118. package/dist/languageService/completionProvider.js.map +1 -1
  119. package/dist/languageService/documentSymbolCollector.d.ts +2 -2
  120. package/dist/languageService/documentSymbolCollector.js +40 -30
  121. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  122. package/dist/languageService/documentSymbolProvider.d.ts +13 -35
  123. package/dist/languageService/documentSymbolProvider.js +52 -264
  124. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  125. package/dist/languageService/hoverProvider.d.ts +1 -3
  126. package/dist/languageService/hoverProvider.js +11 -97
  127. package/dist/languageService/hoverProvider.js.map +1 -1
  128. package/dist/languageService/referencesProvider.d.ts +3 -3
  129. package/dist/languageService/referencesProvider.js +6 -8
  130. package/dist/languageService/referencesProvider.js.map +1 -1
  131. package/dist/languageService/renameProvider.d.ts +0 -1
  132. package/dist/languageService/renameProvider.js +2 -6
  133. package/dist/languageService/renameProvider.js.map +1 -1
  134. package/dist/languageService/signatureHelpProvider.js +1 -1
  135. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  136. package/dist/languageService/symbolIndexer.d.ts +23 -0
  137. package/dist/languageService/symbolIndexer.js +105 -0
  138. package/dist/languageService/symbolIndexer.js.map +1 -0
  139. package/dist/languageService/tooltipUtils.d.ts +8 -1
  140. package/dist/languageService/tooltipUtils.js +102 -1
  141. package/dist/languageService/tooltipUtils.js.map +1 -1
  142. package/dist/languageService/workspaceSymbolProvider.d.ts +17 -0
  143. package/dist/languageService/workspaceSymbolProvider.js +133 -0
  144. package/dist/languageService/workspaceSymbolProvider.js.map +1 -0
  145. package/dist/localization/localize.d.ts +38 -4
  146. package/dist/localization/localize.js +21 -4
  147. package/dist/localization/localize.js.map +1 -1
  148. package/dist/localization/package.nls.en-us.json +23 -6
  149. package/dist/parser/parseNodes.d.ts +8 -8
  150. package/dist/parser/parseNodes.js +20 -10
  151. package/dist/parser/parseNodes.js.map +1 -1
  152. package/dist/parser/parser.d.ts +3 -3
  153. package/dist/parser/parser.js +136 -159
  154. package/dist/parser/parser.js.map +1 -1
  155. package/dist/parser/stringTokenUtils.d.ts +3 -13
  156. package/dist/parser/stringTokenUtils.js +8 -181
  157. package/dist/parser/stringTokenUtils.js.map +1 -1
  158. package/dist/parser/tokenizer.d.ts +3 -0
  159. package/dist/parser/tokenizer.js +211 -24
  160. package/dist/parser/tokenizer.js.map +1 -1
  161. package/dist/parser/tokenizerTypes.d.ts +31 -1
  162. package/dist/parser/tokenizerTypes.js +51 -1
  163. package/dist/parser/tokenizerTypes.js.map +1 -1
  164. package/dist/pyright.js +26 -4
  165. package/dist/pyright.js.map +1 -1
  166. package/dist/readonlyAugmentedFileSystem.js +1 -1
  167. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  168. package/dist/tests/chainedSourceFiles.test.js +15 -20
  169. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  170. package/dist/tests/checker.test.js +14 -0
  171. package/dist/tests/checker.test.js.map +1 -1
  172. package/dist/tests/completions.test.js +11 -236
  173. package/dist/tests/completions.test.js.map +1 -1
  174. package/dist/tests/docStringConversion.test.js +36 -2
  175. package/dist/tests/docStringConversion.test.js.map +1 -1
  176. package/dist/tests/fourslash/completions.override2.fourslash.js +1 -16
  177. package/dist/tests/fourslash/completions.override2.fourslash.js.map +1 -1
  178. package/dist/tests/harness/fourslash/testLanguageService.js +1 -1
  179. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  180. package/dist/tests/harness/fourslash/testState.d.ts +14 -8
  181. package/dist/tests/harness/fourslash/testState.js +27 -37
  182. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  183. package/dist/tests/importResolver.test.js +84 -4
  184. package/dist/tests/importResolver.test.js.map +1 -1
  185. package/dist/tests/textRange.test.js +45 -0
  186. package/dist/tests/textRange.test.js.map +1 -0
  187. package/dist/tests/tokenizer.test.js +272 -58
  188. package/dist/tests/tokenizer.test.js.map +1 -1
  189. package/dist/tests/typeEvaluator2.test.js +16 -0
  190. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  191. package/dist/tests/typeEvaluator3.test.js +14 -0
  192. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  193. package/dist/tests/typeEvaluator4.test.js +7 -2
  194. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  195. package/dist/tests/typeEvaluator5.test.js +29 -9
  196. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  197. package/dist/tests/workspaceEditUtils.test.js +15 -10
  198. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  199. package/dist/workspaceFactory.js +3 -5
  200. package/dist/workspaceFactory.js.map +1 -1
  201. package/package.json +1 -1
  202. package/dist/languageService/importAdder.d.ts +0 -40
  203. package/dist/languageService/importAdder.js +0 -388
  204. package/dist/languageService/importAdder.js.map +0 -1
  205. package/dist/tests/fourslash/completions.commitChars.fourslash.d.ts +0 -1
  206. package/dist/tests/fourslash/completions.commitChars.fourslash.js +0 -81
  207. package/dist/tests/fourslash/completions.commitChars.fourslash.js.map +0 -1
  208. package/dist/tests/importAdder.test.js +0 -1325
  209. package/dist/tests/importAdder.test.js.map +0 -1
  210. /package/dist/tests/{importAdder.test.d.ts → textRange.test.d.ts} +0 -0
@@ -1,388 +0,0 @@
1
- "use strict";
2
- /*
3
- * importAdder.ts
4
- * Copyright (c) Microsoft Corporation.
5
- * Licensed under the MIT license.
6
- *
7
- * Provides code that figures out imports needed for symbols
8
- * used in the given range and apply them later.
9
- */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.ImportAdder = void 0;
12
- const analyzerNodeInfo_1 = require("../analyzer/analyzerNodeInfo");
13
- const declaration_1 = require("../analyzer/declaration");
14
- const declarationUtils_1 = require("../analyzer/declarationUtils");
15
- const importStatementUtils_1 = require("../analyzer/importStatementUtils");
16
- const parseTreeUtils_1 = require("../analyzer/parseTreeUtils");
17
- const parseTreeWalker_1 = require("../analyzer/parseTreeWalker");
18
- const scopeUtils_1 = require("../analyzer/scopeUtils");
19
- const cancellationUtils_1 = require("../common/cancellationUtils");
20
- const collectionUtils_1 = require("../common/collectionUtils");
21
- const core_1 = require("../common/core");
22
- const pathUtils_1 = require("../common/pathUtils");
23
- const positionUtils_1 = require("../common/positionUtils");
24
- const textRange_1 = require("../common/textRange");
25
- class ImportAdder {
26
- constructor(_configOptions, _importResolver, _evaluator) {
27
- this._configOptions = _configOptions;
28
- this._importResolver = _importResolver;
29
- this._evaluator = _evaluator;
30
- }
31
- collectImportsForSymbolsUsed(root, ranges, token) {
32
- root = isParseResults(root) ? root.parseTree : root;
33
- ranges = (0, core_1.isArray)(ranges) ? ranges : [ranges];
34
- const collector = new NameCollector(this._evaluator, root, ranges, token);
35
- collector.walk(root);
36
- return {
37
- containsUnreferenceableSymbols: collector.containsUnreferenceableSymbols,
38
- declarations: collector.declsForSymbols,
39
- };
40
- }
41
- addImportInfo(importInfo, importData) {
42
- var _a;
43
- importData.importInfos = (_a = importData.importInfos) !== null && _a !== void 0 ? _a : [];
44
- importData.importInfos.push(importInfo);
45
- }
46
- addDeclaration(declaration, node, importData) {
47
- // We don't need import statement if decl is from builtins or synthesized.
48
- if (declaration.moduleName === 'builtins' || declaration.moduleName === '') {
49
- return false;
50
- }
51
- const name = node.nodeType === 38 /* Name */
52
- ? node
53
- : node.nodeType === 35 /* MemberAccess */
54
- ? node.memberName
55
- : undefined;
56
- if (!name) {
57
- return false;
58
- }
59
- (0, collectionUtils_1.getOrAdd)(importData.declarations, declaration, () => []).push(name);
60
- return true;
61
- }
62
- applyImports(result, filePath, parseResults, insertionPosition, importFormat, token) {
63
- (0, cancellationUtils_1.throwIfCancellationRequested)(token);
64
- const importStatements = (0, importStatementUtils_1.getTopLevelImports)(parseResults.parseTree);
65
- const importNameInfo = this._getImportNameWithModuleInfo(filePath, result, importFormat);
66
- const edits = [];
67
- const newNameInfo = [];
68
- for (const moduleAndInfo of (0, collectionUtils_1.createMapFromItems)(importNameInfo, (i) => i.module.moduleName)) {
69
- if (!this._tryProcessExistingImports(moduleAndInfo, importStatements, parseResults, edits)) {
70
- (0, collectionUtils_1.appendArray)(newNameInfo, moduleAndInfo[1]);
71
- continue;
72
- }
73
- }
74
- edits.push(...(0, importStatementUtils_1.getTextEditsForAutoImportInsertions)(newNameInfo, importStatements, parseResults, (0, positionUtils_1.convertOffsetToPosition)(insertionPosition, parseResults.tokenizerOutput.lines)));
75
- return edits;
76
- }
77
- applyImportsTo(result, parseResults, importFormat, textEditTracker, token) {
78
- (0, cancellationUtils_1.throwIfCancellationRequested)(token);
79
- const filePath = (0, analyzerNodeInfo_1.getFileInfo)(parseResults.parseTree).filePath;
80
- const importStatements = (0, importStatementUtils_1.getTopLevelImports)(parseResults.parseTree);
81
- const importNameInfo = this._getImportNameWithModuleInfo(filePath, result, importFormat);
82
- const newNameInfo = [];
83
- for (const moduleAndInfo of (0, collectionUtils_1.createMapFromItems)(importNameInfo, (i) => i.module.moduleName)) {
84
- if (!this._tryProcessExistingImports(moduleAndInfo, importStatements, parseResults, textEditTracker)) {
85
- (0, collectionUtils_1.appendArray)(newNameInfo, moduleAndInfo[1]);
86
- continue;
87
- }
88
- }
89
- for (const moduleAndInfo of (0, collectionUtils_1.createMapFromItems)(newNameInfo, (i) => i.module.moduleName)) {
90
- this._addOrUpdateImport(moduleAndInfo, importStatements, parseResults, moduleAndInfo[1], textEditTracker);
91
- }
92
- }
93
- _getImportNameWithModuleInfo(filePath, result, importFormat) {
94
- var _a;
95
- const importNameInfo = [];
96
- const execEnv = this._configOptions.findExecEnvironment(filePath);
97
- for (const decl of (_a = result.declarations.keys()) !== null && _a !== void 0 ? _a : []) {
98
- const importInfo = this._getImportInfo(decl, filePath);
99
- if (!importInfo || (0, declaration_1.isUnresolvedAliasDeclaration)(decl)) {
100
- continue;
101
- }
102
- this._appendImportNameInfo(filePath, execEnv, importFormat, importInfo, importNameInfo);
103
- }
104
- if (result.importInfos) {
105
- for (const importInfo of result.importInfos) {
106
- this._appendImportNameInfo(filePath, execEnv, importFormat, importInfo, importNameInfo);
107
- }
108
- }
109
- return importNameInfo;
110
- }
111
- _appendImportNameInfo(filePath, execEnv, importFormat, importInfo, importNameInfo) {
112
- const relativePath = (0, importStatementUtils_1.getRelativeModuleName)(this._importResolver.fileSystem, filePath, importInfo.filePath);
113
- const moduleAndType = this._importResolver.getModuleNameForImport(importInfo.filePath, execEnv);
114
- if (!moduleAndType.moduleName) {
115
- if (!importInfo.nameInfo.name) {
116
- return;
117
- }
118
- // module can't be addressed by absolute path in "from import" statement.
119
- // ex) namespace package at [workspace root] or [workspace root]\__init__.py(i)
120
- // use relative path
121
- importFormat = "relative" /* Relative */;
122
- }
123
- (0, collectionUtils_1.addIfUnique)(importNameInfo, {
124
- name: importInfo.nameInfo.name,
125
- alias: importInfo.nameInfo.alias,
126
- module: moduleAndType,
127
- nameForImportFrom: importFormat === "relative" /* Relative */ ? relativePath : undefined,
128
- }, (a, b) => this._areSame(a, b));
129
- }
130
- _tryProcessExistingImports(moduleAndInfo, importStatements, parseResults, edits) {
131
- for (const kindAndImports of (0, collectionUtils_1.createMapFromItems)(importStatements.orderedImports.filter((i) => i.moduleName === moduleAndInfo[0]), (i) => (i.node.nodeType === 20 /* Import */ ? 'import' : 'importFrom'))) {
132
- if (kindAndImports[0] === 'importFrom') {
133
- // We can't merge to "from module import *" statement.
134
- const imported = kindAndImports[1].filter((i) => i.node.nodeType === 22 /* ImportFrom */ && !i.node.isWildcardImport);
135
- if (imported.length === 0) {
136
- // No regular from import statement.
137
- continue;
138
- }
139
- // get name info that don't exist in any of existing import statements.
140
- const info = moduleAndInfo[1].filter((m) => !imported.some((n) => n.node.nodeType === 22 /* ImportFrom */ &&
141
- n.node.imports.some((i) => { var _a; return i.name.value === m.name && ((_a = i.alias) === null || _a === void 0 ? void 0 : _a.value) === m.alias; })));
142
- if ((0, core_1.isArray)(edits)) {
143
- (0, collectionUtils_1.appendArray)(edits, (0, importStatementUtils_1.getTextEditsForAutoImportSymbolAddition)(info, imported[0], parseResults));
144
- }
145
- else {
146
- this._addOrUpdateImport(moduleAndInfo, importStatements, parseResults, info, edits);
147
- }
148
- return true;
149
- }
150
- if (kindAndImports[0] === 'import') {
151
- // import statement already exists. skip those module info.
152
- (0, collectionUtils_1.removeArrayElements)(moduleAndInfo[1], (i) => !i.name && kindAndImports[1].some((n) => { var _a, _b; return i.alias === ((_b = (_a = n.subnode) === null || _a === void 0 ? void 0 : _a.alias) === null || _b === void 0 ? void 0 : _b.value); }));
153
- continue;
154
- }
155
- }
156
- return false;
157
- }
158
- _addOrUpdateImport(moduleAndInfo, importStatements, parseResults, info, editTracker) {
159
- if (info.length === 0) {
160
- return;
161
- }
162
- const name = moduleAndInfo[0];
163
- const nameForImportFrom = moduleAndInfo[1].length === 0 ? undefined : moduleAndInfo[1][0].nameForImportFrom;
164
- const importGroup = moduleAndInfo[1].length === 0
165
- ? 2 /* Local */
166
- : (0, importStatementUtils_1.getImportGroupFromModuleNameAndType)(moduleAndInfo[1][0].module);
167
- editTracker.addOrUpdateImport(parseResults, importStatements, { name, nameForImportFrom }, importGroup, info);
168
- }
169
- _getImportInfo(decl, destFilePath) {
170
- var _a, _b;
171
- if ((0, declaration_1.isAliasDeclaration)(decl)) {
172
- if (!decl.node) {
173
- // This is synthesized decl for implicit module case such as "import a.b"
174
- return { filePath: decl.path, nameInfo: {} };
175
- }
176
- if (decl.node.nodeType === 21 /* ImportAs */) {
177
- const importDecl = this._evaluator.getDeclarationsForNameNode(decl.node.module.nameParts[decl.node.module.nameParts.length - 1]);
178
- if (!importDecl || importDecl.length === 0) {
179
- // We have no idea where it came from.
180
- // ex) from unknown import unknown
181
- return undefined;
182
- }
183
- return {
184
- filePath: importDecl[0].path,
185
- nameInfo: { alias: decl.usesLocalName ? (_a = decl.node.alias) === null || _a === void 0 ? void 0 : _a.value : undefined },
186
- };
187
- }
188
- if (decl.node.nodeType === 23 /* ImportFromAs */) {
189
- let path = decl.path;
190
- if (!path) {
191
- // Check submodule case with no __init__
192
- if (decl.submoduleFallback) {
193
- path = (0, pathUtils_1.getDirectoryPath)(decl.submoduleFallback.path);
194
- }
195
- }
196
- if (!path) {
197
- // We have no idea where it came from.
198
- // ex) from unknown import unknown
199
- return undefined;
200
- }
201
- if (path === destFilePath && !decl.usesLocalName && !decl.submoduleFallback) {
202
- // Don't create import for the symbol (not module) defined in the current file
203
- // unless alias is used.
204
- //
205
- // We don't check insertion point since we don't create type alias for decl defined later
206
- // anyway. but in future, we could consider either rewrite or creating type alias for symbols
207
- // defined after insertion point.
208
- return undefined;
209
- }
210
- return {
211
- filePath: path,
212
- nameInfo: {
213
- name: decl.symbolName,
214
- alias: decl.usesLocalName ? (_b = decl.node.alias) === null || _b === void 0 ? void 0 : _b.value : undefined,
215
- },
216
- };
217
- }
218
- if (decl.node.nodeType === 22 /* ImportFrom */) {
219
- return {
220
- filePath: decl.path,
221
- nameInfo: { name: decl.symbolName },
222
- };
223
- }
224
- }
225
- if ((0, declaration_1.isVariableDeclaration)(decl) || (0, declaration_1.isFunctionDeclaration)(decl) || (0, declaration_1.isClassDeclaration)(decl)) {
226
- const name = (0, declarationUtils_1.getNameFromDeclaration)(decl);
227
- if (!name) {
228
- return undefined;
229
- }
230
- return {
231
- filePath: decl.path,
232
- nameInfo: { name },
233
- };
234
- }
235
- return undefined;
236
- }
237
- _areSame(a, b) {
238
- return (a.alias === b.alias &&
239
- a.name === b.name &&
240
- a.module.importType === b.module.importType &&
241
- a.module.isLocalTypingsFile === b.module.isLocalTypingsFile &&
242
- a.module.moduleName === b.module.moduleName);
243
- }
244
- }
245
- exports.ImportAdder = ImportAdder;
246
- class NameCollector extends parseTreeWalker_1.ParseTreeWalker {
247
- constructor(_evaluator, _root, _ranges, _token) {
248
- super();
249
- this._evaluator = _evaluator;
250
- this._root = _root;
251
- this._ranges = _ranges;
252
- this._token = _token;
253
- // Hold onto names that we need to move imports.
254
- this.declsForSymbols = new Map();
255
- this.containsUnreferenceableSymbols = false;
256
- this._filePath = (0, analyzerNodeInfo_1.getFileInfo)(this._root).filePath;
257
- // For now, we assume the given range is at right boundary such as statement, statements, expression or expressions.
258
- // In future, we might consider validating the range and adjusting it to the right boundary if needed.
259
- }
260
- walk(node) {
261
- if (!this._ranges.some((r) => textRange_1.TextRange.overlapsRange(r, node))) {
262
- return;
263
- }
264
- super.walk(node);
265
- }
266
- visitModuleName(node) {
267
- // We only care about references to module symbols. not decls.
268
- return false;
269
- }
270
- visitName(name) {
271
- if (!this._ranges.some((r) => textRange_1.TextRange.containsRange(r, name))) {
272
- return false;
273
- }
274
- (0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
275
- // We process dotted name as a whole rather than
276
- // process each part of dotted name.
277
- if (!(0, parseTreeUtils_1.isLastNameOfDottedName)(name)) {
278
- return false;
279
- }
280
- const type = this._evaluator.getType(name);
281
- if ((type === null || type === void 0 ? void 0 : type.category) === 10 /* TypeVar */) {
282
- // Currently, we don't add import statement for type variables
283
- // such as TypeVar, TypeVarTuple, ParamSpec, etc.
284
- return false;
285
- }
286
- const dottedName = (0, parseTreeUtils_1.getDottedName)((0, parseTreeUtils_1.getDottedNameWithGivenNodeAsLastName)(name));
287
- if (!dottedName) {
288
- // Not dotted name
289
- // ex) foo().[var]
290
- return false;
291
- }
292
- // See whether the first dotted name bound to symbols defined in current file.
293
- const firstName = dottedName[0];
294
- const firstNameDecls = this._getDeclarationsInModule(firstName);
295
- if (!firstNameDecls || firstNameDecls.length === 0) {
296
- return false;
297
- }
298
- // Simple case.
299
- // ex) import os
300
- // [os]
301
- if (dottedName.length === 1) {
302
- this._handleName(firstName, firstNameDecls);
303
- return false;
304
- }
305
- for (const firstNameDecl of firstNameDecls) {
306
- if (!(0, declaration_1.isAliasDeclaration)(firstNameDecl) || firstNameDecl.node.nodeType !== 21 /* ImportAs */) {
307
- // decls we have is for symbols defined in current module.
308
- // ex) [foo]()
309
- this._handleName(firstName, [firstNameDecl]);
310
- continue;
311
- }
312
- // Import with alias
313
- // ex) import json.encoder as j
314
- if (firstNameDecl.usesLocalName) {
315
- this._handleName(firstName, [firstNameDecl]);
316
- continue;
317
- }
318
- // Special casing import statement with sub module ex) import a.[b]
319
- // It is complex for import a.[b] case since decl for [b] doesn't exist. so
320
- // when binding a.[b].foo(), we don't get decl for "import a.[b]", we need to
321
- // do some tree walk to find import a.[b] and synthesize decl for it.
322
- this._handleImplicitImports(firstNameDecl, dottedName, 1);
323
- }
324
- return false;
325
- }
326
- _getDeclarationsInModule(name) {
327
- var _a;
328
- return (_a = this._evaluator.getDeclarationsForNameNode(name)) === null || _a === void 0 ? void 0 : _a.filter((d) => (0, declarationUtils_1.isDefinedInFile)(d, this._filePath));
329
- }
330
- _handleImplicitImports(aliasDecl, dottedName, nameIndex) {
331
- if (dottedName.length === nameIndex) {
332
- return;
333
- }
334
- if (!aliasDecl.implicitImports) {
335
- this._handleName(dottedName[nameIndex - 1], [(0, declarationUtils_1.createSynthesizedAliasDeclaration)(aliasDecl.path)]);
336
- return;
337
- }
338
- const implicitImportDecl = aliasDecl.implicitImports.get(dottedName[nameIndex].value);
339
- if (!implicitImportDecl) {
340
- this._handleName(dottedName[nameIndex - 1], [(0, declarationUtils_1.createSynthesizedAliasDeclaration)(aliasDecl.path)]);
341
- return;
342
- }
343
- this._handleImplicitImports(implicitImportDecl, dottedName, nameIndex + 1);
344
- }
345
- _handleName(name, decls) {
346
- for (const decl of decls) {
347
- if (decl.node && this._ranges.some((r) => textRange_1.TextRange.containsRange(r, decl.node))) {
348
- // Make sure our range doesn't already contain them.
349
- continue;
350
- }
351
- if ((0, declaration_1.isParameterDeclaration)(decl)) {
352
- // Parameter is not referenceable from import statement.
353
- this.containsUnreferenceableSymbols = true;
354
- continue;
355
- }
356
- if ((0, declaration_1.isVariableDeclaration)(decl) || (0, declaration_1.isFunctionDeclaration)(decl) || (0, declaration_1.isClassDeclaration)(decl)) {
357
- // For now, we will allow private variable to be referenced by import
358
- // so that user can fix it up once import is added.
359
- // We only support top level variables.
360
- const scope = (0, scopeUtils_1.getScopeForNode)(name);
361
- if (!scope) {
362
- this.containsUnreferenceableSymbols = true;
363
- continue;
364
- }
365
- const result = scope.lookUpSymbolRecursive(name.value);
366
- if (!result || result.scope.type !== 3 /* Module */) {
367
- this.containsUnreferenceableSymbols = true;
368
- continue;
369
- }
370
- }
371
- this._addName(decl, name);
372
- }
373
- }
374
- _addName(decl, name) {
375
- (0, collectionUtils_1.getOrAdd)(this.declsForSymbols, decl, () => []).push(name);
376
- }
377
- }
378
- function isParseResults(obj) {
379
- return (obj &&
380
- obj.text !== undefined &&
381
- obj.parseTree &&
382
- obj.importedModules &&
383
- obj.futureImports &&
384
- obj.tokenizerOutput &&
385
- obj.containsWildcardImport !== undefined &&
386
- obj.typingSymbolAliases);
387
- }
388
- //# sourceMappingURL=importAdder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"importAdder.js","sourceRoot":"","sources":["../../../src/languageService/importAdder.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- /// <reference path="fourslash.d.ts" />
@@ -1,81 +0,0 @@
1
- "use strict";
2
- /// <reference path="fourslash.ts" />
3
- // @filename: test.py
4
- //// from samples import *
5
- //// foo[|/*marker1*/|]
6
- //// fooClass().foo[|/*marker2*/|]
7
- // @filename: test1.py
8
- //// from .samp[|/*marker3*/|]
9
- // @filename: test2.py
10
- //// from samples import *
11
- //// [|/*marker4*/|]
12
- // @filename: samples.py
13
- //// import fooLib as fooLib
14
- //// def fooFunc(): ...
15
- //// class fooClass():
16
- //// def fooMethod(self): ...
17
- // @filename: fooLib.py
18
- //// # empty
19
- {
20
- helper.openFiles(helper.getMarkers().map((m) => m.fileName));
21
- // @ts-ignore
22
- await helper.verifyCompletion('included', 'markdown', {
23
- marker1: {
24
- completions: [
25
- {
26
- label: 'fooLib',
27
- kind: Consts.CompletionItemKind.Module,
28
- commitCharacters: ['.'],
29
- },
30
- {
31
- label: 'fooFunc',
32
- kind: Consts.CompletionItemKind.Function,
33
- commitCharacters: ['('],
34
- },
35
- {
36
- label: 'fooClass',
37
- kind: Consts.CompletionItemKind.Class,
38
- commitCharacters: ['.', '('],
39
- },
40
- ],
41
- },
42
- marker2: {
43
- completions: [
44
- {
45
- label: 'fooMethod',
46
- kind: Consts.CompletionItemKind.Method,
47
- commitCharacters: ['('],
48
- },
49
- ],
50
- },
51
- marker3: {
52
- completions: [
53
- {
54
- label: 'samples',
55
- kind: Consts.CompletionItemKind.Module,
56
- commitCharacters: [],
57
- },
58
- ],
59
- },
60
- marker4: {
61
- completions: [
62
- {
63
- label: 'fooLib',
64
- kind: Consts.CompletionItemKind.Module,
65
- commitCharacters: [],
66
- },
67
- {
68
- label: 'fooFunc',
69
- kind: Consts.CompletionItemKind.Function,
70
- commitCharacters: [],
71
- },
72
- {
73
- label: 'fooClass',
74
- kind: Consts.CompletionItemKind.Class,
75
- commitCharacters: [],
76
- },
77
- ],
78
- },
79
- });
80
- }
81
- //# sourceMappingURL=completions.commitChars.fourslash.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"completions.commitChars.fourslash.js","sourceRoot":"","sources":["../../../../src/tests/fourslash/completions.commitChars.fourslash.ts"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,qBAAqB;AACrB,0BAA0B;AAC1B,uBAAuB;AACvB,kCAAkC;AAElC,sBAAsB;AACtB,8BAA8B;AAE9B,sBAAsB;AACtB,0BAA0B;AAC1B,oBAAoB;AAEpB,wBAAwB;AACxB,4BAA4B;AAC5B,uBAAuB;AACvB,sBAAsB;AACtB,iCAAiC;AAEjC,uBAAuB;AACvB,YAAY;AAEZ;IACI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE7D,aAAa;IACb,MAAM,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE;QAClD,OAAO,EAAE;YACL,WAAW,EAAE;gBACT;oBACI,KAAK,EAAE,QAAQ;oBACf,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM;oBACtC,gBAAgB,EAAE,CAAC,GAAG,CAAC;iBAC1B;gBACD;oBACI,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,QAAQ;oBACxC,gBAAgB,EAAE,CAAC,GAAG,CAAC;iBAC1B;gBACD;oBACI,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,KAAK;oBACrC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;iBAC/B;aACJ;SACJ;QACD,OAAO,EAAE;YACL,WAAW,EAAE;gBACT;oBACI,KAAK,EAAE,WAAW;oBAClB,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM;oBACtC,gBAAgB,EAAE,CAAC,GAAG,CAAC;iBAC1B;aACJ;SACJ;QACD,OAAO,EAAE;YACL,WAAW,EAAE;gBACT;oBACI,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM;oBACtC,gBAAgB,EAAE,EAAE;iBACvB;aACJ;SACJ;QACD,OAAO,EAAE;YACL,WAAW,EAAE;gBACT;oBACI,KAAK,EAAE,QAAQ;oBACf,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM;oBACtC,gBAAgB,EAAE,EAAE;iBACvB;gBACD;oBACI,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,QAAQ;oBACxC,gBAAgB,EAAE,EAAE;iBACvB;gBACD;oBACI,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,KAAK;oBACrC,gBAAgB,EAAE,EAAE;iBACvB;aACJ;SACJ;KACJ,CAAC,CAAC;CACN"}