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

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 (260) hide show
  1. package/dist/analyzer/analyzerFileInfo.d.ts +4 -1
  2. package/dist/analyzer/analyzerFileInfo.js.map +1 -1
  3. package/dist/analyzer/backgroundAnalysisProgram.d.ts +7 -4
  4. package/dist/analyzer/backgroundAnalysisProgram.js +22 -7
  5. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  6. package/dist/analyzer/binder.js +12 -7
  7. package/dist/analyzer/binder.js.map +1 -1
  8. package/dist/analyzer/checker.d.ts +1 -0
  9. package/dist/analyzer/checker.js +58 -7
  10. package/dist/analyzer/checker.js.map +1 -1
  11. package/dist/analyzer/constructors.d.ts +6 -0
  12. package/dist/analyzer/constructors.js +456 -0
  13. package/dist/analyzer/constructors.js.map +1 -0
  14. package/dist/analyzer/dataClasses.js +89 -2
  15. package/dist/analyzer/dataClasses.js.map +1 -1
  16. package/dist/analyzer/declarationUtils.d.ts +6 -1
  17. package/dist/analyzer/declarationUtils.js +10 -8
  18. package/dist/analyzer/declarationUtils.js.map +1 -1
  19. package/dist/analyzer/enums.js +54 -8
  20. package/dist/analyzer/enums.js.map +1 -1
  21. package/dist/analyzer/importResolver.d.ts +15 -15
  22. package/dist/analyzer/importResolver.js +477 -477
  23. package/dist/analyzer/importResolver.js.map +1 -1
  24. package/dist/analyzer/importStatementUtils.d.ts +2 -2
  25. package/dist/analyzer/importStatementUtils.js.map +1 -1
  26. package/dist/analyzer/namedTuples.d.ts +1 -1
  27. package/dist/analyzer/namedTuples.js +30 -42
  28. package/dist/analyzer/namedTuples.js.map +1 -1
  29. package/dist/analyzer/operations.d.ts +16 -0
  30. package/dist/analyzer/operations.js +749 -0
  31. package/dist/analyzer/operations.js.map +1 -0
  32. package/dist/analyzer/packageTypeReport.d.ts +2 -1
  33. package/dist/analyzer/packageTypeReport.js +2 -1
  34. package/dist/analyzer/packageTypeReport.js.map +1 -1
  35. package/dist/analyzer/packageTypeVerifier.d.ts +1 -1
  36. package/dist/analyzer/packageTypeVerifier.js +27 -13
  37. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  38. package/dist/analyzer/parseTreeUtils.d.ts +4 -2
  39. package/dist/analyzer/parseTreeUtils.js +32 -1
  40. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  41. package/dist/analyzer/patternMatching.js +16 -0
  42. package/dist/analyzer/patternMatching.js.map +1 -1
  43. package/dist/analyzer/program.d.ts +29 -53
  44. package/dist/analyzer/program.js +1050 -1649
  45. package/dist/analyzer/program.js.map +1 -1
  46. package/dist/analyzer/protocols.js +1 -1
  47. package/dist/analyzer/protocols.js.map +1 -1
  48. package/dist/analyzer/service.d.ts +14 -35
  49. package/dist/analyzer/service.js +92 -121
  50. package/dist/analyzer/service.js.map +1 -1
  51. package/dist/analyzer/sourceFile.d.ts +14 -49
  52. package/dist/analyzer/sourceFile.js +271 -291
  53. package/dist/analyzer/sourceFile.js.map +1 -1
  54. package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -2
  55. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  56. package/dist/analyzer/typeEvaluator.js +417 -1570
  57. package/dist/analyzer/typeEvaluator.js.map +1 -1
  58. package/dist/analyzer/typeEvaluatorTypes.d.ts +44 -9
  59. package/dist/analyzer/typeEvaluatorTypes.js +33 -1
  60. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  61. package/dist/analyzer/typeGuards.js +5 -9
  62. package/dist/analyzer/typeGuards.js.map +1 -1
  63. package/dist/analyzer/typeStubWriter.js.map +1 -1
  64. package/dist/analyzer/typeUtils.d.ts +3 -0
  65. package/dist/analyzer/typeUtils.js +66 -9
  66. package/dist/analyzer/typeUtils.js.map +1 -1
  67. package/dist/analyzer/typeVarContext.d.ts +5 -5
  68. package/dist/analyzer/typeVarContext.js +7 -0
  69. package/dist/analyzer/typeVarContext.js.map +1 -1
  70. package/dist/analyzer/typedDicts.js +2 -2
  71. package/dist/analyzer/typedDicts.js.map +1 -1
  72. package/dist/analyzer/types.d.ts +4 -2
  73. package/dist/analyzer/types.js +7 -0
  74. package/dist/analyzer/types.js.map +1 -1
  75. package/dist/backgroundAnalysisBase.d.ts +10 -11
  76. package/dist/backgroundAnalysisBase.js +87 -87
  77. package/dist/backgroundAnalysisBase.js.map +1 -1
  78. package/dist/commands/dumpFileDebugInfoCommand.js +8 -8
  79. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  80. package/dist/commands/quickActionCommand.js +4 -1
  81. package/dist/commands/quickActionCommand.js.map +1 -1
  82. package/dist/common/cancellationUtils.d.ts +1 -1
  83. package/dist/common/cancellationUtils.js +9 -9
  84. package/dist/common/cancellationUtils.js.map +1 -1
  85. package/dist/common/commandLineOptions.d.ts +1 -2
  86. package/dist/common/commandLineOptions.js.map +1 -1
  87. package/dist/common/configOptions.d.ts +2 -2
  88. package/dist/common/configOptions.js.map +1 -1
  89. package/dist/common/console.d.ts +5 -9
  90. package/dist/common/console.js +46 -33
  91. package/dist/common/console.js.map +1 -1
  92. package/dist/common/deferred.js +10 -10
  93. package/dist/common/deferred.js.map +1 -1
  94. package/dist/common/extensibility.d.ts +27 -5
  95. package/dist/common/extensibility.js +1 -1
  96. package/dist/common/extensibility.js.map +1 -1
  97. package/dist/common/fileBasedCancellationUtils.js +5 -5
  98. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  99. package/dist/common/fileSystem.d.ts +12 -10
  100. package/dist/common/fileSystem.js.map +1 -1
  101. package/dist/common/fullAccessHost.d.ts +3 -3
  102. package/dist/common/fullAccessHost.js +6 -6
  103. package/dist/common/fullAccessHost.js.map +1 -1
  104. package/dist/common/pathUtils.d.ts +13 -13
  105. package/dist/common/pathUtils.js.map +1 -1
  106. package/dist/common/realFileSystem.js +12 -7
  107. package/dist/common/realFileSystem.js.map +1 -1
  108. package/dist/common/uriParser.d.ts +2 -2
  109. package/dist/common/uriParser.js +3 -3
  110. package/dist/common/uriParser.js.map +1 -1
  111. package/dist/common/workspaceEditUtils.d.ts +5 -5
  112. package/dist/common/workspaceEditUtils.js +7 -4
  113. package/dist/common/workspaceEditUtils.js.map +1 -1
  114. package/dist/languageServerBase.d.ts +32 -31
  115. package/dist/languageServerBase.js +278 -345
  116. package/dist/languageServerBase.js.map +1 -1
  117. package/dist/languageService/analyzerServiceExecutor.js +0 -1
  118. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  119. package/dist/languageService/callHierarchyProvider.d.ts +16 -12
  120. package/dist/languageService/callHierarchyProvider.js +125 -41
  121. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  122. package/dist/languageService/completionProvider.d.ts +10 -13
  123. package/dist/languageService/completionProvider.js +21 -10
  124. package/dist/languageService/completionProvider.js.map +1 -1
  125. package/dist/languageService/definitionProvider.d.ts +23 -9
  126. package/dist/languageService/definitionProvider.js +116 -91
  127. package/dist/languageService/definitionProvider.js.map +1 -1
  128. package/dist/languageService/documentHighlightProvider.d.ts +8 -3
  129. package/dist/languageService/documentHighlightProvider.js +17 -6
  130. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  131. package/dist/languageService/documentSymbolCollector.d.ts +6 -7
  132. package/dist/languageService/documentSymbolCollector.js +21 -11
  133. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  134. package/dist/languageService/documentSymbolProvider.js +5 -3
  135. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  136. package/dist/languageService/hoverProvider.d.ts +4 -3
  137. package/dist/languageService/hoverProvider.js +30 -36
  138. package/dist/languageService/hoverProvider.js.map +1 -1
  139. package/dist/languageService/navigationUtils.d.ts +6 -0
  140. package/dist/languageService/navigationUtils.js +28 -0
  141. package/dist/languageService/navigationUtils.js.map +1 -0
  142. package/dist/languageService/quickActions.d.ts +2 -2
  143. package/dist/languageService/quickActions.js +12 -1
  144. package/dist/languageService/quickActions.js.map +1 -1
  145. package/dist/languageService/referencesProvider.d.ts +13 -12
  146. package/dist/languageService/referencesProvider.js +102 -16
  147. package/dist/languageService/referencesProvider.js.map +1 -1
  148. package/dist/languageService/renameProvider.d.ts +17 -0
  149. package/dist/languageService/renameProvider.js +143 -0
  150. package/dist/languageService/renameProvider.js.map +1 -0
  151. package/dist/languageService/signatureHelpProvider.d.ts +19 -23
  152. package/dist/languageService/signatureHelpProvider.js +111 -18
  153. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  154. package/dist/localization/localize.d.ts +17 -14
  155. package/dist/localization/localize.js +4 -6
  156. package/dist/localization/localize.js.map +1 -1
  157. package/dist/localization/package.nls.en-us.json +5 -6
  158. package/dist/parser/characterStream.d.ts +3 -3
  159. package/dist/parser/characterStream.js +12 -12
  160. package/dist/parser/characterStream.js.map +1 -1
  161. package/dist/parser/parser.d.ts +1 -1
  162. package/dist/parser/parser.js.map +1 -1
  163. package/dist/pyright.js +57 -54
  164. package/dist/pyright.js.map +1 -1
  165. package/dist/pyrightFileSystem.d.ts +1 -1
  166. package/dist/pyrightFileSystem.js +21 -21
  167. package/dist/pyrightFileSystem.js.map +1 -1
  168. package/dist/readonlyAugmentedFileSystem.d.ts +6 -6
  169. package/dist/readonlyAugmentedFileSystem.js +28 -28
  170. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  171. package/dist/server.js +6 -6
  172. package/dist/server.js.map +1 -1
  173. package/dist/tests/chainedSourceFiles.test.js +1 -1
  174. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  175. package/dist/tests/checker.test.js +1 -1
  176. package/dist/tests/documentSymbolCollector.test.js +3 -3
  177. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  178. package/dist/tests/fourslash/fourslash.d.ts +4 -4
  179. package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js +1 -1
  180. package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js.map +1 -1
  181. package/dist/tests/harness/fourslash/testLanguageService.d.ts +3 -3
  182. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  183. package/dist/tests/harness/fourslash/testState.d.ts +11 -11
  184. package/dist/tests/harness/fourslash/testState.js +123 -113
  185. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  186. package/dist/tests/harness/vfs/filesystem.d.ts +8 -8
  187. package/dist/tests/harness/vfs/filesystem.js +68 -68
  188. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  189. package/dist/tests/importStatementUtils.test.js +34 -0
  190. package/dist/tests/importStatementUtils.test.js.map +1 -1
  191. package/dist/tests/signatureHelp.test.js +5 -1
  192. package/dist/tests/signatureHelp.test.js.map +1 -1
  193. package/dist/tests/sourceFile.test.js +2 -2
  194. package/dist/tests/sourceFile.test.js.map +1 -1
  195. package/dist/tests/testStateUtils.d.ts +2 -2
  196. package/dist/tests/testStateUtils.js +39 -9
  197. package/dist/tests/testStateUtils.js.map +1 -1
  198. package/dist/tests/typeEvaluator1.test.js +8 -0
  199. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  200. package/dist/tests/typeEvaluator2.test.js +13 -1
  201. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  202. package/dist/tests/typeEvaluator3.test.js +2 -2
  203. package/dist/tests/typeEvaluator4.test.js +9 -1
  204. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  205. package/dist/tests/typeEvaluator5.test.js +4 -0
  206. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  207. package/dist/tests/workspaceEditUtils.test.js +84 -0
  208. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  209. package/package.json +4 -4
  210. package/dist/languageService/indentationUtils.d.ts +0 -16
  211. package/dist/languageService/indentationUtils.js +0 -727
  212. package/dist/languageService/indentationUtils.js.map +0 -1
  213. package/dist/languageService/insertionPointUtils.d.ts +0 -9
  214. package/dist/languageService/insertionPointUtils.js +0 -132
  215. package/dist/languageService/insertionPointUtils.js.map +0 -1
  216. package/dist/languageService/renameModuleProvider.d.ts +0 -65
  217. package/dist/languageService/renameModuleProvider.js +0 -939
  218. package/dist/languageService/renameModuleProvider.js.map +0 -1
  219. package/dist/tests/indentationUtils.ptvs.test.d.ts +0 -1
  220. package/dist/tests/indentationUtils.ptvs.test.js +0 -324
  221. package/dist/tests/indentationUtils.ptvs.test.js.map +0 -1
  222. package/dist/tests/indentationUtils.reindent.test.d.ts +0 -1
  223. package/dist/tests/indentationUtils.reindent.test.js +0 -372
  224. package/dist/tests/indentationUtils.reindent.test.js.map +0 -1
  225. package/dist/tests/indentationUtils.test.d.ts +0 -1
  226. package/dist/tests/indentationUtils.test.js +0 -502
  227. package/dist/tests/indentationUtils.test.js.map +0 -1
  228. package/dist/tests/insertionPointUtils.test.d.ts +0 -1
  229. package/dist/tests/insertionPointUtils.test.js +0 -154
  230. package/dist/tests/insertionPointUtils.test.js.map +0 -1
  231. package/dist/tests/moveSymbol.importAdder.test.d.ts +0 -1
  232. package/dist/tests/moveSymbol.importAdder.test.js +0 -298
  233. package/dist/tests/moveSymbol.importAdder.test.js.map +0 -1
  234. package/dist/tests/moveSymbol.insertion.test.d.ts +0 -1
  235. package/dist/tests/moveSymbol.insertion.test.js +0 -537
  236. package/dist/tests/moveSymbol.insertion.test.js.map +0 -1
  237. package/dist/tests/moveSymbol.misc.test.d.ts +0 -1
  238. package/dist/tests/moveSymbol.misc.test.js +0 -169
  239. package/dist/tests/moveSymbol.misc.test.js.map +0 -1
  240. package/dist/tests/moveSymbol.updateReference.test.d.ts +0 -1
  241. package/dist/tests/moveSymbol.updateReference.test.js +0 -1057
  242. package/dist/tests/moveSymbol.updateReference.test.js.map +0 -1
  243. package/dist/tests/renameModule.folder.test.d.ts +0 -1
  244. package/dist/tests/renameModule.folder.test.js +0 -229
  245. package/dist/tests/renameModule.folder.test.js.map +0 -1
  246. package/dist/tests/renameModule.fromImports.test.d.ts +0 -1
  247. package/dist/tests/renameModule.fromImports.test.js +0 -790
  248. package/dist/tests/renameModule.fromImports.test.js.map +0 -1
  249. package/dist/tests/renameModule.imports.test.d.ts +0 -1
  250. package/dist/tests/renameModule.imports.test.js +0 -380
  251. package/dist/tests/renameModule.imports.test.js.map +0 -1
  252. package/dist/tests/renameModule.misc.test.d.ts +0 -1
  253. package/dist/tests/renameModule.misc.test.js +0 -615
  254. package/dist/tests/renameModule.misc.test.js.map +0 -1
  255. package/dist/tests/renameModule.relativePath.test.d.ts +0 -1
  256. package/dist/tests/renameModule.relativePath.test.js +0 -231
  257. package/dist/tests/renameModule.relativePath.test.js.map +0 -1
  258. package/dist/tests/renameModuleTestUtils.d.ts +0 -4
  259. package/dist/tests/renameModuleTestUtils.js +0 -76
  260. package/dist/tests/renameModuleTestUtils.js.map +0 -1
@@ -32,6 +32,7 @@ exports.ReferencesProvider = exports.FindReferencesTreeWalker = exports.Referenc
32
32
  const declaration_1 = require("../analyzer/declaration");
33
33
  const declarationUtils_1 = require("../analyzer/declarationUtils");
34
34
  const ParseTreeUtils = __importStar(require("../analyzer/parseTreeUtils"));
35
+ const sourceFileInfoUtils_1 = require("../analyzer/sourceFileInfoUtils");
35
36
  const symbolUtils_1 = require("../analyzer/symbolUtils");
36
37
  const types_1 = require("../analyzer/types");
37
38
  const cancellationUtils_1 = require("../common/cancellationUtils");
@@ -40,6 +41,7 @@ const debug_1 = require("../common/debug");
40
41
  const positionUtils_1 = require("../common/positionUtils");
41
42
  const textRange_1 = require("../common/textRange");
42
43
  const documentSymbolCollector_1 = require("./documentSymbolCollector");
44
+ const navigationUtils_1 = require("./navigationUtils");
43
45
  class ReferencesResult {
44
46
  constructor(requiresGlobalSearch, nodeAtOffset, symbolNames, declarations, useCase, _reporter) {
45
47
  this.requiresGlobalSearch = requiresGlobalSearch;
@@ -91,19 +93,24 @@ class ReferencesResult {
91
93
  }
92
94
  exports.ReferencesResult = ReferencesResult;
93
95
  class FindReferencesTreeWalker {
94
- constructor(_parseResults, _filePath, _referencesResult, _includeDeclaration, _evaluator, _cancellationToken) {
95
- this._parseResults = _parseResults;
96
+ constructor(_program, _filePath, _referencesResult, _includeDeclaration, _cancellationToken) {
97
+ this._program = _program;
96
98
  this._filePath = _filePath;
97
99
  this._referencesResult = _referencesResult;
98
100
  this._includeDeclaration = _includeDeclaration;
99
- this._evaluator = _evaluator;
100
101
  this._cancellationToken = _cancellationToken;
102
+ this._parseResults = this._program.getParseResults(this._filePath);
101
103
  }
102
- findReferences(rootNode = this._parseResults.parseTree) {
103
- const collector = new documentSymbolCollector_1.DocumentSymbolCollector(this._referencesResult.symbolNames, this._referencesResult.declarations, this._evaluator, this._cancellationToken, rootNode,
104
+ findReferences(rootNode) {
105
+ var _a;
106
+ if (rootNode === void 0) { rootNode = (_a = this._parseResults) === null || _a === void 0 ? void 0 : _a.parseTree; }
107
+ const results = [];
108
+ if (!this._parseResults) {
109
+ return results;
110
+ }
111
+ const collector = new documentSymbolCollector_1.DocumentSymbolCollector(this._program, this._referencesResult.symbolNames, this._referencesResult.declarations, this._cancellationToken, rootNode,
104
112
  /* treatModuleInImportAndFromImportSame */ true,
105
113
  /* skipUnreachableCode */ false, this._referencesResult.useCase);
106
- const results = [];
107
114
  for (const result of collector.collect()) {
108
115
  // Is it the same symbol?
109
116
  if (this._includeDeclaration || result.node !== this._referencesResult.nodeAtOffset) {
@@ -121,20 +128,103 @@ class FindReferencesTreeWalker {
121
128
  }
122
129
  exports.FindReferencesTreeWalker = FindReferencesTreeWalker;
123
130
  class ReferencesProvider {
124
- static getDeclarationForNode(sourceMapper, filePath, node, evaluator, reporter, useCase, token, implicitlyImportedBy) {
131
+ constructor(_program, _token) {
132
+ this._program = _program;
133
+ this._token = _token;
134
+ // empty
135
+ }
136
+ reportReferences(filePath, position, includeDeclaration, resultReporter) {
137
+ const sourceFileInfo = this._program.getSourceFileInfo(filePath);
138
+ if (!sourceFileInfo) {
139
+ return;
140
+ }
141
+ const parseResults = this._program.getParseResults(filePath);
142
+ if (!parseResults) {
143
+ return;
144
+ }
145
+ const locations = [];
146
+ const reporter = resultReporter
147
+ ? (range) => resultReporter.report((0, navigationUtils_1.convertDocumentRangesToLocation)(this._program.fileSystem, range))
148
+ : (range) => (0, collectionUtils_1.appendArray)(locations, (0, navigationUtils_1.convertDocumentRangesToLocation)(this._program.fileSystem, range));
149
+ const invokedFromUserFile = (0, sourceFileInfoUtils_1.isUserCode)(sourceFileInfo);
150
+ const referencesResult = ReferencesProvider.getDeclarationForPosition(this._program, filePath, position, reporter, documentSymbolCollector_1.DocumentSymbolCollectorUseCase.Reference, this._token,
151
+ // It is temporary fix for release.
152
+ Array.from((0, sourceFileInfoUtils_1.collectImportedByFiles)(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile));
153
+ if (!referencesResult) {
154
+ return;
155
+ }
156
+ // Do we need to do a global search as well?
157
+ if (!referencesResult.requiresGlobalSearch) {
158
+ this.addReferencesToResult(sourceFileInfo.sourceFile.getFilePath(), includeDeclaration, referencesResult);
159
+ }
160
+ for (const curSourceFileInfo of this._program.getSourceFileInfoList()) {
161
+ (0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
162
+ // "Find all references" will only include references from user code
163
+ // unless the file is explicitly opened in the editor or it is invoked from non user files.
164
+ if (curSourceFileInfo.isOpenByClient || !invokedFromUserFile || (0, sourceFileInfoUtils_1.isUserCode)(curSourceFileInfo)) {
165
+ // See if the reference symbol's string is located somewhere within the file.
166
+ // If not, we can skip additional processing for the file.
167
+ const fileContents = curSourceFileInfo.sourceFile.getFileContent();
168
+ if (!fileContents || referencesResult.symbolNames.some((s) => fileContents.search(s) >= 0)) {
169
+ this.addReferencesToResult(curSourceFileInfo.sourceFile.getFilePath(), includeDeclaration, referencesResult);
170
+ }
171
+ // This operation can consume significant memory, so check
172
+ // for situations where we need to discard the type cache.
173
+ this._program.handleMemoryHighUsage();
174
+ }
175
+ }
176
+ // Make sure to include declarations regardless where they are defined
177
+ // if includeDeclaration is set.
178
+ if (includeDeclaration) {
179
+ for (const decl of referencesResult.declarations) {
180
+ (0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
181
+ if (referencesResult.locations.some((l) => l.path === decl.path)) {
182
+ // Already included.
183
+ continue;
184
+ }
185
+ const declFileInfo = this._program.getSourceFileInfo(decl.path);
186
+ if (!declFileInfo) {
187
+ // The file the declaration belongs to doesn't belong to the program.
188
+ continue;
189
+ }
190
+ const tempResult = new ReferencesResult(referencesResult.requiresGlobalSearch, referencesResult.nodeAtOffset, referencesResult.symbolNames, referencesResult.declarations, referencesResult.useCase);
191
+ this.addReferencesToResult(declFileInfo.sourceFile.getFilePath(), includeDeclaration, tempResult);
192
+ for (const loc of tempResult.locations) {
193
+ // Include declarations only. And throw away any references
194
+ if (loc.path === decl.path && (0, textRange_1.doesRangeContain)(decl.range, loc.range)) {
195
+ referencesResult.addLocations(loc);
196
+ }
197
+ }
198
+ }
199
+ }
200
+ return locations;
201
+ }
202
+ addReferencesToResult(filePath, includeDeclaration, referencesResult) {
203
+ const parseResults = this._program.getParseResults(filePath);
204
+ if (!parseResults) {
205
+ return;
206
+ }
207
+ const refTreeWalker = new FindReferencesTreeWalker(this._program, filePath, referencesResult, includeDeclaration, this._token);
208
+ referencesResult.addLocations(...refTreeWalker.findReferences());
209
+ }
210
+ static getDeclarationForNode(program, filePath, node, reporter, useCase, token, implicitlyImportedBy) {
125
211
  (0, cancellationUtils_1.throwIfCancellationRequested)(token);
126
- const declarations = documentSymbolCollector_1.DocumentSymbolCollector.getDeclarationsForNode(node, evaluator,
127
- /* resolveLocalNames */ false, useCase, token, sourceMapper, implicitlyImportedBy);
212
+ const declarations = documentSymbolCollector_1.DocumentSymbolCollector.getDeclarationsForNode(program, node,
213
+ /* resolveLocalNames */ false, useCase, token, implicitlyImportedBy);
128
214
  if (declarations.length === 0) {
129
215
  return undefined;
130
216
  }
131
- const requiresGlobalSearch = isVisibleOutside(evaluator, filePath, node, declarations);
217
+ const requiresGlobalSearch = isVisibleOutside(program.evaluator, filePath, node, declarations);
132
218
  const symbolNames = new Set(declarations.map((d) => (0, declarationUtils_1.getNameFromDeclaration)(d)).filter((n) => !!n));
133
219
  symbolNames.add(node.value);
134
220
  return new ReferencesResult(requiresGlobalSearch, node, [...symbolNames.values()], declarations, useCase, reporter);
135
221
  }
136
- static getDeclarationForPosition(sourceMapper, parseResults, filePath, position, evaluator, reporter, useCase, token, implicitlyImportedBy) {
222
+ static getDeclarationForPosition(program, filePath, position, reporter, useCase, token, implicitlyImportedBy) {
137
223
  (0, cancellationUtils_1.throwIfCancellationRequested)(token);
224
+ const parseResults = program.getParseResults(filePath);
225
+ if (!parseResults) {
226
+ return undefined;
227
+ }
138
228
  const offset = (0, positionUtils_1.convertPositionToOffset)(position, parseResults.tokenizerOutput.lines);
139
229
  if (offset === undefined) {
140
230
  return undefined;
@@ -147,11 +237,7 @@ class ReferencesProvider {
147
237
  if (node.nodeType !== 38 /* Name */) {
148
238
  return undefined;
149
239
  }
150
- return this.getDeclarationForNode(sourceMapper, filePath, node, evaluator, reporter, useCase, token, implicitlyImportedBy);
151
- }
152
- static addReferences(parseResults, filePath, referencesResult, includeDeclaration, evaluator, token) {
153
- const refTreeWalker = new FindReferencesTreeWalker(parseResults, filePath, referencesResult, includeDeclaration, evaluator, token);
154
- referencesResult.addLocations(...refTreeWalker.findReferences());
240
+ return this.getDeclarationForNode(program, filePath, node, reporter, useCase, token, implicitlyImportedBy);
155
241
  }
156
242
  }
157
243
  exports.ReferencesProvider = ReferencesProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"referencesProvider.js","sourceRoot":"","sources":["../../../src/languageService/referencesProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"referencesProvider.js","sourceRoot":"","sources":["../../../src/languageService/referencesProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { CancellationToken, WorkspaceEdit } from 'vscode-languageserver';
2
+ import { ProgramView } from '../common/extensibility';
3
+ import { Position, Range } from '../common/textRange';
4
+ import { ReferencesResult } from '../languageService/referencesProvider';
5
+ export declare class RenameProvider {
6
+ private _program;
7
+ private _filePath;
8
+ private _position;
9
+ private _token;
10
+ private readonly _parseResults;
11
+ constructor(_program: ProgramView, _filePath: string, _position: Position, _token: CancellationToken);
12
+ canRenameSymbol(isDefaultWorkspace: boolean): Range | null;
13
+ renameSymbol(newName: string, isDefaultWorkspace: boolean): WorkspaceEdit | null;
14
+ static getRenameSymbolMode(program: ProgramView, filePath: string, referencesResult: ReferencesResult, isDefaultWorkspace: boolean): "none" | "singleFileMode" | "multiFileMode";
15
+ private _getReferenceResult;
16
+ private _getDeclaration;
17
+ }
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ /*
3
+ * renameProvider.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ * Author: Eric Traut
7
+ *
8
+ * Logic that rename identifier on the given position and its references.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.RenameProvider = void 0;
12
+ const debug_1 = require("../common/debug");
13
+ const positionUtils_1 = require("../common/positionUtils");
14
+ const documentSymbolCollector_1 = require("../languageService/documentSymbolCollector");
15
+ const referencesProvider_1 = require("../languageService/referencesProvider");
16
+ const sourceFileInfoUtils_1 = require("../analyzer/sourceFileInfoUtils");
17
+ const cancellationUtils_1 = require("../common/cancellationUtils");
18
+ const workspaceEditUtils_1 = require("../common/workspaceEditUtils");
19
+ class RenameProvider {
20
+ constructor(_program, _filePath, _position, _token) {
21
+ this._program = _program;
22
+ this._filePath = _filePath;
23
+ this._position = _position;
24
+ this._token = _token;
25
+ this._parseResults = this._program.getParseResults(this._filePath);
26
+ }
27
+ canRenameSymbol(isDefaultWorkspace) {
28
+ (0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
29
+ if (!this._parseResults) {
30
+ return null;
31
+ }
32
+ const referencesResult = this._getReferenceResult();
33
+ if (!referencesResult) {
34
+ return null;
35
+ }
36
+ const renameMode = RenameProvider.getRenameSymbolMode(this._program, this._filePath, referencesResult, isDefaultWorkspace);
37
+ if (renameMode === 'none') {
38
+ return null;
39
+ }
40
+ // Return the range of the symbol.
41
+ return (0, positionUtils_1.convertTextRangeToRange)(referencesResult.nodeAtOffset, this._parseResults.tokenizerOutput.lines);
42
+ }
43
+ renameSymbol(newName, isDefaultWorkspace) {
44
+ var _a;
45
+ (0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
46
+ if (!this._parseResults) {
47
+ return null;
48
+ }
49
+ const referencesResult = this._getReferenceResult();
50
+ if (!referencesResult) {
51
+ return null;
52
+ }
53
+ const referenceProvider = new referencesProvider_1.ReferencesProvider(this._program, this._token);
54
+ const renameMode = RenameProvider.getRenameSymbolMode(this._program, this._filePath, referencesResult, isDefaultWorkspace);
55
+ switch (renameMode) {
56
+ case 'singleFileMode':
57
+ referenceProvider.addReferencesToResult(this._filePath,
58
+ /* includeDeclaration */ true, referencesResult);
59
+ break;
60
+ case 'multiFileMode': {
61
+ for (const curSourceFileInfo of this._program.getSourceFileInfoList()) {
62
+ // Make sure we only add user code to the references to prevent us
63
+ // from accidentally changing third party library or type stub.
64
+ if ((0, sourceFileInfoUtils_1.isUserCode)(curSourceFileInfo)) {
65
+ // Make sure searching symbol name exists in the file.
66
+ const content = (_a = curSourceFileInfo.sourceFile.getFileContent()) !== null && _a !== void 0 ? _a : '';
67
+ if (!referencesResult.symbolNames.some((s) => content.search(s) >= 0)) {
68
+ continue;
69
+ }
70
+ referenceProvider.addReferencesToResult(curSourceFileInfo.sourceFile.getFilePath(),
71
+ /* includeDeclaration */ true, referencesResult);
72
+ }
73
+ // This operation can consume significant memory, so check
74
+ // for situations where we need to discard the type cache.
75
+ this._program.handleMemoryHighUsage();
76
+ }
77
+ break;
78
+ }
79
+ case 'none':
80
+ // Rename is not allowed.
81
+ // ex) rename symbols from libraries.
82
+ return null;
83
+ default:
84
+ (0, debug_1.assertNever)(renameMode);
85
+ }
86
+ const edits = [];
87
+ referencesResult.locations.forEach((loc) => {
88
+ edits.push({
89
+ filePath: loc.path,
90
+ range: loc.range,
91
+ replacementText: newName,
92
+ });
93
+ });
94
+ return (0, workspaceEditUtils_1.convertToWorkspaceEdit)(this._program.fileSystem, { edits, fileOperations: [] });
95
+ }
96
+ static getRenameSymbolMode(program, filePath, referencesResult, isDefaultWorkspace) {
97
+ const sourceFileInfo = program.getSourceFileInfo(filePath);
98
+ // We have 2 different cases
99
+ // Single file mode.
100
+ // 1. rename on default workspace (ex, standalone file mode).
101
+ // 2. rename local symbols.
102
+ // 3. rename symbols defined in the non user open file.
103
+ //
104
+ // and Multi file mode.
105
+ // 1. rename public symbols defined in user files on regular workspace (ex, open folder mode).
106
+ const userFile = (0, sourceFileInfoUtils_1.isUserCode)(sourceFileInfo);
107
+ if (isDefaultWorkspace ||
108
+ (userFile && !referencesResult.requiresGlobalSearch) ||
109
+ (!userFile &&
110
+ sourceFileInfo.isOpenByClient &&
111
+ referencesResult.declarations.every((d) => program.getSourceFileInfo(d.path) === sourceFileInfo))) {
112
+ return 'singleFileMode';
113
+ }
114
+ if (referencesResult.declarations.every((d) => (0, sourceFileInfoUtils_1.isUserCode)(program.getSourceFileInfo(d.path)))) {
115
+ return 'multiFileMode';
116
+ }
117
+ // Rename is not allowed.
118
+ // ex) rename symbols from libraries.
119
+ return 'none';
120
+ }
121
+ _getReferenceResult() {
122
+ const referencesResult = this._getDeclaration();
123
+ if (!referencesResult) {
124
+ return undefined;
125
+ }
126
+ if (referencesResult.containsOnlyImportDecls) {
127
+ return undefined;
128
+ }
129
+ if (referencesResult.nonImportDeclarations.length === 0) {
130
+ // There is no symbol we can rename.
131
+ return undefined;
132
+ }
133
+ // Use declarations that doesn't contain import decls.
134
+ return new referencesProvider_1.ReferencesResult(referencesResult.requiresGlobalSearch, referencesResult.nodeAtOffset, referencesResult.symbolNames, referencesResult.nonImportDeclarations, referencesResult.useCase);
135
+ }
136
+ _getDeclaration() {
137
+ const sourceFileInfo = this._program.getSourceFileInfo(this._filePath);
138
+ return referencesProvider_1.ReferencesProvider.getDeclarationForPosition(this._program, this._filePath, this._position,
139
+ /* reporter */ undefined, documentSymbolCollector_1.DocumentSymbolCollectorUseCase.Rename, this._token, Array.from((0, sourceFileInfoUtils_1.collectImportedByFiles)(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile));
140
+ }
141
+ }
142
+ exports.RenameProvider = RenameProvider;
143
+ //# sourceMappingURL=renameProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renameProvider.js","sourceRoot":"","sources":["../../../src/languageService/renameProvider.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,22 @@
1
- import { CancellationToken, MarkupContent, MarkupKind } from 'vscode-languageserver';
2
- import { SourceMapper } from '../analyzer/sourceMapper';
3
- import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes';
1
+ import { CancellationToken, MarkupKind, SignatureHelp, SignatureHelpContext } from 'vscode-languageserver';
2
+ import { ProgramView } from '../common/extensibility';
4
3
  import { Position } from '../common/textRange';
5
- import { ParseResults } from '../parser/parser';
6
- export interface ParamInfo {
7
- startOffset: number;
8
- endOffset: number;
9
- text: string;
10
- documentation?: string | undefined;
11
- }
12
- export interface SignatureInfo {
13
- label: string;
14
- documentation?: MarkupContent | undefined;
15
- parameters?: ParamInfo[] | undefined;
16
- activeParameter?: number | undefined;
17
- }
18
- export interface SignatureHelpResults {
19
- signatures: SignatureInfo[];
20
- callHasParameters: boolean;
21
- }
22
4
  export declare class SignatureHelpProvider {
23
- static getSignatureHelpForPosition(parseResults: ParseResults, position: Position, sourceMapper: SourceMapper, evaluator: TypeEvaluator, format: MarkupKind, token: CancellationToken): SignatureHelpResults | undefined;
24
- private static _makeSignature;
25
- private static _getDocStringFromCallNode;
5
+ private _program;
6
+ private _filePath;
7
+ private _position;
8
+ private _format;
9
+ private _hasSignatureLabelOffsetCapability;
10
+ private _hasActiveParameterCapability;
11
+ private _context;
12
+ private _token;
13
+ private readonly _parseResults;
14
+ private readonly _sourceMapper;
15
+ constructor(_program: ProgramView, _filePath: string, _position: Position, _format: MarkupKind, _hasSignatureLabelOffsetCapability: boolean, _hasActiveParameterCapability: boolean, _context: SignatureHelpContext | undefined, _token: CancellationToken);
16
+ getSignatureHelp(): SignatureHelp | undefined;
17
+ private get _evaluator();
18
+ private _getSignatureHelp;
19
+ private _convert;
20
+ private _makeSignature;
21
+ private _getDocStringFromCallNode;
26
22
  }
@@ -41,14 +41,35 @@ const cancellationUtils_1 = require("../common/cancellationUtils");
41
41
  const positionUtils_1 = require("../common/positionUtils");
42
42
  const tooltipUtils_1 = require("./tooltipUtils");
43
43
  class SignatureHelpProvider {
44
- static getSignatureHelpForPosition(parseResults, position, sourceMapper, evaluator, format, token) {
44
+ constructor(_program, _filePath, _position, _format, _hasSignatureLabelOffsetCapability, _hasActiveParameterCapability, _context, _token) {
45
+ this._program = _program;
46
+ this._filePath = _filePath;
47
+ this._position = _position;
48
+ this._format = _format;
49
+ this._hasSignatureLabelOffsetCapability = _hasSignatureLabelOffsetCapability;
50
+ this._hasActiveParameterCapability = _hasActiveParameterCapability;
51
+ this._context = _context;
52
+ this._token = _token;
53
+ this._parseResults = this._program.getParseResults(this._filePath);
54
+ this._sourceMapper = this._program.getSourceMapper(this._filePath, this._token, /* mapCompiled */ true);
55
+ }
56
+ getSignatureHelp() {
57
+ return this._convert(this._getSignatureHelp());
58
+ }
59
+ get _evaluator() {
60
+ return this._program.evaluator;
61
+ }
62
+ _getSignatureHelp() {
45
63
  var _a;
46
- (0, cancellationUtils_1.throwIfCancellationRequested)(token);
47
- const offset = (0, positionUtils_1.convertPositionToOffset)(position, parseResults.tokenizerOutput.lines);
64
+ (0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
65
+ if (!this._parseResults) {
66
+ return undefined;
67
+ }
68
+ const offset = (0, positionUtils_1.convertPositionToOffset)(this._position, this._parseResults.tokenizerOutput.lines);
48
69
  if (offset === undefined) {
49
70
  return undefined;
50
71
  }
51
- let node = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset);
72
+ let node = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, offset);
52
73
  // See if we can get to a "better" node by backing up a few columns.
53
74
  // A "better" node is defined as one that's deeper than the current
54
75
  // node.
@@ -60,11 +81,11 @@ class SignatureHelpProvider {
60
81
  // arguments, and we don't want to mistakenly think that we're
61
82
  // pointing to a previous argument. Don't scan across open parenthesis so that
62
83
  // we don't go into the wrong function call
63
- const ch = parseResults.text.substr(curOffset, 1);
84
+ const ch = this._parseResults.text.substr(curOffset, 1);
64
85
  if (ch === ',' || ch === '(') {
65
86
  break;
66
87
  }
67
- const curNode = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, curOffset);
88
+ const curNode = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, curOffset);
68
89
  if (curNode && curNode !== initialNode) {
69
90
  if (ParseTreeUtils.getNodeDepth(curNode) > initialDepth) {
70
91
  node = curNode;
@@ -76,27 +97,99 @@ class SignatureHelpProvider {
76
97
  if (node === undefined) {
77
98
  return undefined;
78
99
  }
79
- const callInfo = (0, parseTreeUtils_1.getCallNodeAndActiveParameterIndex)(node, offset, parseResults.tokenizerOutput.tokens);
100
+ const callInfo = (0, parseTreeUtils_1.getCallNodeAndActiveParameterIndex)(node, offset, this._parseResults.tokenizerOutput.tokens);
80
101
  if (!callInfo) {
81
102
  return;
82
103
  }
83
- const callSignatureInfo = evaluator.getCallSignatureInfo(callInfo.callNode, callInfo.activeIndex, callInfo.activeOrFake);
104
+ const callSignatureInfo = this._evaluator.getCallSignatureInfo(callInfo.callNode, callInfo.activeIndex, callInfo.activeOrFake);
84
105
  if (!callSignatureInfo) {
85
106
  return undefined;
86
107
  }
87
- const signatures = callSignatureInfo.signatures.map((sig) => this._makeSignature(callSignatureInfo.callNode, sig, sourceMapper, evaluator, format));
108
+ const signatures = callSignatureInfo.signatures.map((sig) => this._makeSignature(callSignatureInfo.callNode, sig));
88
109
  const callHasParameters = !!((_a = callSignatureInfo.callNode.arguments) === null || _a === void 0 ? void 0 : _a.length);
89
110
  return {
90
111
  signatures,
91
112
  callHasParameters,
92
113
  };
93
114
  }
94
- static _makeSignature(callNode, signature, sourceMapper, evaluator, format) {
115
+ _convert(signatureHelpResults) {
116
+ var _a, _b;
117
+ if (!signatureHelpResults) {
118
+ return undefined;
119
+ }
120
+ const signatures = signatureHelpResults.signatures.map((sig) => {
121
+ let paramInfo = [];
122
+ if (sig.parameters) {
123
+ paramInfo = sig.parameters.map((param) => vscode_languageserver_1.ParameterInformation.create(this._hasSignatureLabelOffsetCapability ? [param.startOffset, param.endOffset] : param.text, param.documentation));
124
+ }
125
+ const sigInfo = vscode_languageserver_1.SignatureInformation.create(sig.label, /* documentation */ undefined, ...paramInfo);
126
+ if (sig.documentation !== undefined) {
127
+ sigInfo.documentation = sig.documentation;
128
+ }
129
+ if (sig.activeParameter !== undefined) {
130
+ sigInfo.activeParameter = sig.activeParameter;
131
+ }
132
+ return sigInfo;
133
+ });
134
+ // A signature is active if it contains an active parameter,
135
+ // or if both the signature and its invocation have no parameters.
136
+ const isActive = (sig) => { var _a; return sig.activeParameter !== undefined || (!signatureHelpResults.callHasParameters && !((_a = sig.parameters) === null || _a === void 0 ? void 0 : _a.length)); };
137
+ let activeSignature = signatures.findIndex(isActive);
138
+ if (activeSignature === -1) {
139
+ activeSignature = undefined;
140
+ }
141
+ let activeParameter = activeSignature !== undefined ? signatures[activeSignature].activeParameter : undefined;
142
+ // Check if we should reuse the user's signature selection. If the retrigger was not "invoked"
143
+ // (i.e., the signature help call was automatically generated by the client due to some navigation
144
+ // or text change), check to see if the previous signature is still "active". If so, we mark it as
145
+ // active in our response.
146
+ //
147
+ // This isn't a perfect method. For nested calls, we can't tell when we are moving between them.
148
+ // Ideally, we would include a token in the signature help responses to compare later, allowing us
149
+ // to know when the user's navigated to a nested call (and therefore the old signature's info does
150
+ // not apply), but for now manually retriggering the signature help will work around the issue.
151
+ if (((_a = this._context) === null || _a === void 0 ? void 0 : _a.isRetrigger) && this._context.triggerKind !== vscode_languageserver_1.SignatureHelpTriggerKind.Invoked) {
152
+ const prevActiveSignature = (_b = this._context.activeSignatureHelp) === null || _b === void 0 ? void 0 : _b.activeSignature;
153
+ if (prevActiveSignature !== undefined && prevActiveSignature < signatures.length) {
154
+ const sig = signatures[prevActiveSignature];
155
+ if (isActive(sig)) {
156
+ activeSignature = prevActiveSignature;
157
+ activeParameter = sig.activeParameter;
158
+ }
159
+ }
160
+ }
161
+ if (this._hasActiveParameterCapability || activeSignature === undefined) {
162
+ // If there is no active parameter, then we want the client to not highlight anything.
163
+ // Unfortunately, the LSP spec says that "undefined" or "out of bounds" values should be
164
+ // treated as 0, which is the first parameter. That's not what we want, but thankfully
165
+ // VS Code (and potentially other clients) choose to handle out of bounds values by
166
+ // not highlighting them, which is what we want.
167
+ //
168
+ // The spec defines activeParameter as uinteger, so use the maximum length of any
169
+ // signature's parameter list to ensure that the value is always out of range.
170
+ //
171
+ // We always set this even if some signature has an active parameter, as this
172
+ // value is used as the fallback for signatures that don't explicitly specify an
173
+ // active parameter (and we use "undefined" to mean "no active parameter").
174
+ //
175
+ // We could apply this hack to each individual signature such that they all specify
176
+ // activeParameter, but that would make it more difficult to determine which actually
177
+ // are active when comparing, and we already have to set this for clients which don't
178
+ // support per-signature activeParameter.
179
+ //
180
+ // See:
181
+ // - https://github.com/microsoft/language-server-protocol/issues/1271
182
+ // - https://github.com/microsoft/pyright/pull/1783
183
+ activeParameter = Math.max(...signatures.map((s) => { var _a, _b; return (_b = (_a = s.parameters) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; }));
184
+ }
185
+ return { signatures, activeSignature, activeParameter };
186
+ }
187
+ _makeSignature(callNode, signature) {
95
188
  var _a;
96
189
  const functionType = signature.type;
97
- const stringParts = evaluator.printFunctionParts(functionType, 1024 /* ExpandTypedDictArgs */);
190
+ const stringParts = this._evaluator.printFunctionParts(functionType, 1024 /* ExpandTypedDictArgs */);
98
191
  const parameters = [];
99
- const functionDocString = (_a = (0, tooltipUtils_1.getFunctionDocStringFromType)(functionType, sourceMapper, evaluator)) !== null && _a !== void 0 ? _a : this._getDocStringFromCallNode(callNode, sourceMapper, evaluator);
192
+ const functionDocString = (_a = (0, tooltipUtils_1.getFunctionDocStringFromType)(functionType, this._sourceMapper, this._evaluator)) !== null && _a !== void 0 ? _a : this._getDocStringFromCallNode(callNode);
100
193
  let label = '(';
101
194
  let activeParameter;
102
195
  const params = functionType.details.parameters;
@@ -149,7 +242,7 @@ class SignatureHelpProvider {
149
242
  activeParameter,
150
243
  };
151
244
  if (functionDocString) {
152
- if (format === vscode_languageserver_1.MarkupKind.Markdown) {
245
+ if (this._format === vscode_languageserver_1.MarkupKind.Markdown) {
153
246
  sigInfo.documentation = {
154
247
  kind: vscode_languageserver_1.MarkupKind.Markdown,
155
248
  value: (0, docStringConversion_1.convertDocStringToMarkdown)(functionDocString),
@@ -164,7 +257,7 @@ class SignatureHelpProvider {
164
257
  }
165
258
  return sigInfo;
166
259
  }
167
- static _getDocStringFromCallNode(callNode, sourceMapper, evaluator) {
260
+ _getDocStringFromCallNode(callNode) {
168
261
  var _a;
169
262
  // This is a heuristic to see whether we can get some docstring
170
263
  // from call node when all other methods failed.
@@ -180,16 +273,16 @@ class SignatureHelpProvider {
180
273
  if (!name) {
181
274
  return undefined;
182
275
  }
183
- for (const decl of (_a = evaluator.getDeclarationsForNameNode(name)) !== null && _a !== void 0 ? _a : []) {
184
- const resolveDecl = evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true);
276
+ for (const decl of (_a = this._evaluator.getDeclarationsForNameNode(name)) !== null && _a !== void 0 ? _a : []) {
277
+ const resolveDecl = this._evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true);
185
278
  if (!resolveDecl) {
186
279
  continue;
187
280
  }
188
- const type = evaluator.getType(name);
281
+ const type = this._evaluator.getType(name);
189
282
  if (!type) {
190
283
  continue;
191
284
  }
192
- const part = (0, tooltipUtils_1.getDocumentationPartsForTypeAndDecl)(sourceMapper, type, resolveDecl, evaluator);
285
+ const part = (0, tooltipUtils_1.getDocumentationPartsForTypeAndDecl)(this._sourceMapper, type, resolveDecl, this._evaluator);
193
286
  if (part) {
194
287
  return part;
195
288
  }