@zzzen/pyright-internal 1.2.0-dev.20230326 → 1.2.0-dev.20230409

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/analyzer/binder.d.ts +8 -0
  2. package/dist/analyzer/binder.js +46 -1
  3. package/dist/analyzer/binder.js.map +1 -1
  4. package/dist/analyzer/cacheManager.js +1 -1
  5. package/dist/analyzer/checker.js +54 -20
  6. package/dist/analyzer/checker.js.map +1 -1
  7. package/dist/analyzer/constraintSolver.js +4 -1
  8. package/dist/analyzer/constraintSolver.js.map +1 -1
  9. package/dist/analyzer/constructorTransform.js +4 -3
  10. package/dist/analyzer/constructorTransform.js.map +1 -1
  11. package/dist/analyzer/declarationUtils.d.ts +8 -0
  12. package/dist/analyzer/declarationUtils.js +147 -1
  13. package/dist/analyzer/declarationUtils.js.map +1 -1
  14. package/dist/analyzer/importStatementUtils.js +1 -1
  15. package/dist/analyzer/parameterUtils.d.ts +25 -1
  16. package/dist/analyzer/parameterUtils.js +182 -1
  17. package/dist/analyzer/parameterUtils.js.map +1 -1
  18. package/dist/analyzer/patternMatching.js +39 -2
  19. package/dist/analyzer/patternMatching.js.map +1 -1
  20. package/dist/analyzer/program.d.ts +2 -0
  21. package/dist/analyzer/program.js +62 -11
  22. package/dist/analyzer/program.js.map +1 -1
  23. package/dist/analyzer/properties.js +13 -13
  24. package/dist/analyzer/properties.js.map +1 -1
  25. package/dist/analyzer/protocols.js +3 -2
  26. package/dist/analyzer/protocols.js.map +1 -1
  27. package/dist/analyzer/pythonPathUtils.js +1 -1
  28. package/dist/analyzer/regions.js +4 -4
  29. package/dist/analyzer/regions.js.map +1 -1
  30. package/dist/analyzer/service.js +17 -8
  31. package/dist/analyzer/service.js.map +1 -1
  32. package/dist/analyzer/sourceFile.js +2 -2
  33. package/dist/analyzer/sourceFile.js.map +1 -1
  34. package/dist/analyzer/sourceFileInfoUtils.js +1 -1
  35. package/dist/analyzer/sourceMapper.js +1 -1
  36. package/dist/analyzer/sourceMapperUtils.d.ts +0 -8
  37. package/dist/analyzer/sourceMapperUtils.js +18 -25
  38. package/dist/analyzer/sourceMapperUtils.js.map +1 -1
  39. package/dist/analyzer/staticExpressions.js +2 -2
  40. package/dist/analyzer/symbolUtils.js +1 -1
  41. package/dist/analyzer/testWalker.js +3 -0
  42. package/dist/analyzer/testWalker.js.map +1 -1
  43. package/dist/analyzer/tracePrinter.js +1 -1
  44. package/dist/analyzer/typeCacheUtils.js +25 -1
  45. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  46. package/dist/analyzer/typeEvaluator.js +180 -150
  47. package/dist/analyzer/typeEvaluator.js.map +1 -1
  48. package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -3
  49. package/dist/analyzer/typeEvaluatorTypes.js +0 -1
  50. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  51. package/dist/analyzer/typeEvaluatorWithTracker.js +3 -5
  52. package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
  53. package/dist/analyzer/typeGuards.js +182 -159
  54. package/dist/analyzer/typeGuards.js.map +1 -1
  55. package/dist/analyzer/typeUtils.d.ts +13 -25
  56. package/dist/analyzer/typeUtils.js +157 -235
  57. package/dist/analyzer/typeUtils.js.map +1 -1
  58. package/dist/analyzer/typeVarContext.js +6 -2
  59. package/dist/analyzer/typeVarContext.js.map +1 -1
  60. package/dist/analyzer/typedDicts.js +42 -7
  61. package/dist/analyzer/typedDicts.js.map +1 -1
  62. package/dist/analyzer/types.d.ts +1 -0
  63. package/dist/analyzer/types.js +10 -0
  64. package/dist/analyzer/types.js.map +1 -1
  65. package/dist/common/configOptions.js +1 -1
  66. package/dist/common/configOptions.js.map +1 -1
  67. package/dist/common/diagnosticSink.js +1 -1
  68. package/dist/common/envVarUtils.js +7 -7
  69. package/dist/common/envVarUtils.js.map +1 -1
  70. package/dist/common/fileBasedCancellationUtils.js +1 -1
  71. package/dist/common/host.js +1 -1
  72. package/dist/common/lspUtils.js +1 -1
  73. package/dist/common/pathConsts.d.ts +1 -0
  74. package/dist/common/pathConsts.js +2 -1
  75. package/dist/common/pathConsts.js.map +1 -1
  76. package/dist/common/positionUtils.d.ts +2 -1
  77. package/dist/common/positionUtils.js +18 -12
  78. package/dist/common/positionUtils.js.map +1 -1
  79. package/dist/common/progressReporter.js +4 -1
  80. package/dist/common/progressReporter.js.map +1 -1
  81. package/dist/common/pythonVersion.js +1 -2
  82. package/dist/common/pythonVersion.js.map +1 -1
  83. package/dist/common/realFileSystem.js +1 -1
  84. package/dist/common/textEditTracker.js +1 -1
  85. package/dist/common/workspaceEditUtils.js +1 -1
  86. package/dist/languageServerBase.js +1 -1
  87. package/dist/languageServerBase.js.map +1 -1
  88. package/dist/languageService/analyzerServiceExecutor.js +2 -2
  89. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  90. package/dist/languageService/autoImporter.js +1 -0
  91. package/dist/languageService/autoImporter.js.map +1 -1
  92. package/dist/languageService/callHierarchyProvider.d.ts +7 -3
  93. package/dist/languageService/callHierarchyProvider.js +38 -6
  94. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  95. package/dist/languageService/completionProvider.d.ts +1 -0
  96. package/dist/languageService/completionProvider.js +29 -10
  97. package/dist/languageService/completionProvider.js.map +1 -1
  98. package/dist/languageService/completionProviderUtils.js +2 -2
  99. package/dist/languageService/completionProviderUtils.js.map +1 -1
  100. package/dist/languageService/documentSymbolCollector.js +4 -1
  101. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  102. package/dist/languageService/documentSymbolProvider.js +1 -2
  103. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  104. package/dist/languageService/hoverProvider.d.ts +2 -0
  105. package/dist/languageService/hoverProvider.js +53 -43
  106. package/dist/languageService/hoverProvider.js.map +1 -1
  107. package/dist/languageService/importSorter.js +1 -1
  108. package/dist/languageService/indentationUtils.js +7 -1
  109. package/dist/languageService/indentationUtils.js.map +1 -1
  110. package/dist/languageService/insertionPointUtils.js +2 -1
  111. package/dist/languageService/insertionPointUtils.js.map +1 -1
  112. package/dist/languageService/tooltipUtils.js +2 -2
  113. package/dist/localization/localize.d.ts +0 -3
  114. package/dist/localization/localize.js +0 -1
  115. package/dist/localization/localize.js.map +1 -1
  116. package/dist/localization/package.nls.en-us.json +0 -1
  117. package/dist/pyright.js +1 -2
  118. package/dist/pyright.js.map +1 -1
  119. package/dist/tests/chainedSourceFiles.test.js +27 -0
  120. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  121. package/dist/tests/checker.test.js +1 -1
  122. package/dist/tests/checker.test.js.map +1 -1
  123. package/dist/tests/fourslash/fourslash.d.ts +5 -0
  124. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.d.ts +1 -0
  125. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js +34 -0
  126. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js.map +1 -0
  127. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.d.ts +1 -0
  128. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js +19 -0
  129. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js.map +1 -0
  130. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.d.ts +1 -0
  131. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js +39 -0
  132. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js.map +1 -0
  133. package/dist/tests/harness/fourslash/testState.d.ts +5 -0
  134. package/dist/tests/harness/fourslash/testState.js +21 -0
  135. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  136. package/dist/tests/indentationUtils.reindent.test.js +19 -0
  137. package/dist/tests/indentationUtils.reindent.test.js.map +1 -1
  138. package/dist/tests/insertionPointUtils.test.js +13 -0
  139. package/dist/tests/insertionPointUtils.test.js.map +1 -1
  140. package/dist/tests/moveSymbol.insertion.test.js +21 -0
  141. package/dist/tests/moveSymbol.insertion.test.js.map +1 -1
  142. package/dist/tests/positionUtils.test.d.ts +1 -0
  143. package/dist/tests/positionUtils.test.js +48 -0
  144. package/dist/tests/positionUtils.test.js.map +1 -0
  145. package/dist/tests/typeEvaluator1.test.js +10 -0
  146. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  147. package/dist/tests/typeEvaluator2.test.js +20 -0
  148. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  149. package/dist/tests/typeEvaluator3.test.js +9 -1
  150. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  151. package/dist/tests/typeEvaluator4.test.js +43 -115
  152. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  153. package/dist/tests/typeEvaluator5.test.js +1 -5
  154. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  155. package/dist/workspaceFactory.d.ts +1 -0
  156. package/dist/workspaceFactory.js +24 -14
  157. package/dist/workspaceFactory.js.map +1 -1
  158. package/package.json +1 -1
  159. package/dist/analyzer/aliasDeclarationUtils.d.ts +0 -9
  160. package/dist/analyzer/aliasDeclarationUtils.js +0 -157
  161. package/dist/analyzer/aliasDeclarationUtils.js.map +0 -1
@@ -12,6 +12,16 @@ class NumberReference {
12
12
  this.value = 0;
13
13
  }
14
14
  }
15
+ // Builds an array of imports from the 'from' to the 'to' entry where 'from'
16
+ // is on the front of the array and the item just before 'to' is on the
17
+ // back of the array.
18
+ function buildImportTree(to, from, next, token) {
19
+ const totalCountRef = new NumberReference();
20
+ const results = _buildImportTreeImpl(to, from, next, [], totalCountRef, token);
21
+ // Result should always have the 'from' node in it.
22
+ return results.length > 0 ? results : [from];
23
+ }
24
+ exports.buildImportTree = buildImportTree;
15
25
  function _buildImportTreeImpl(to, from, next, previous, totalSearched, token) {
16
26
  // Exit early if cancellation is requested or we've exceeded max count
17
27
  if (totalSearched.value > MAX_TREE_SEARCH_COUNT || token.isCancellationRequested) {
@@ -22,36 +32,19 @@ function _buildImportTreeImpl(to, from, next, previous, totalSearched, token) {
22
32
  // At the top, previous should have our way into this recursion.
23
33
  return previous.length ? previous : [from];
24
34
  }
25
- else if (previous.length > 1 && previous.find((s) => s === from)) {
35
+ if (previous.length > 1 && previous.find((s) => s === from)) {
26
36
  // Fail the search, we're stuck in a loop.
27
37
  return [];
28
38
  }
29
- else {
30
- const nextEntries = next(from);
31
- for (let i = 0; i < nextEntries.length && !token.isCancellationRequested; i++) {
32
- // Do a search through the next level to get to the 'to' entry.
33
- const subentries = _buildImportTreeImpl(to, nextEntries[i], next, [...previous, from], totalSearched, token);
34
- if (subentries.length > 0) {
35
- return subentries;
36
- }
39
+ const nextEntries = next(from);
40
+ for (let i = 0; i < nextEntries.length && !token.isCancellationRequested; i++) {
41
+ // Do a search through the next level to get to the 'to' entry.
42
+ const subentries = _buildImportTreeImpl(to, nextEntries[i], next, [...previous, from], totalSearched, token);
43
+ if (subentries.length > 0) {
44
+ return subentries;
37
45
  }
38
46
  }
39
- // Search failed on this tree, fail so we can exit recursion.
47
+ // Search failed on this tree. Fail so we can exit recursion.
40
48
  return [];
41
49
  }
42
- /**
43
- * Builds an array of imports from the 'from' to the 'to' entry where 'from' is on the front of the array and
44
- * the item just before 'to' is on the back of the array
45
- * @param to
46
- * @param from
47
- * @param next
48
- * @returns
49
- */
50
- function buildImportTree(to, from, next, token) {
51
- const totalCountRef = new NumberReference();
52
- const results = _buildImportTreeImpl(to, from, next, [], totalCountRef, token);
53
- // Result should always have the 'from' node in it.
54
- return results.length > 0 ? results : [from];
55
- }
56
- exports.buildImportTree = buildImportTree;
57
50
  //# sourceMappingURL=sourceMapperUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceMapperUtils.js","sourceRoot":"","sources":["../../../src/analyzer/sourceMapperUtils.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,MAAM,eAAe;IAArB;QACI,UAAK,GAAG,CAAC,CAAC;IACd,CAAC;CAAA;AAED,SAAS,oBAAoB,CACzB,EAAU,EACV,IAAY,EACZ,IAAgC,EAChC,QAAkB,EAClB,aAA8B,EAC9B,KAAwB;IAExB,sEAAsE;IACtE,IAAI,aAAa,CAAC,KAAK,GAAG,qBAAqB,IAAI,KAAK,CAAC,uBAAuB,EAAE;QAC9E,OAAO,EAAE,CAAC;KACb;IACD,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC;IAEzB,IAAI,IAAI,KAAK,EAAE,EAAE;QACb,gEAAgE;QAChE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC9C;SAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;QAChE,0CAA0C;QAC1C,OAAO,EAAE,CAAC;KACb;SAAM;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE;YAC3E,+DAA+D;YAC/D,MAAM,UAAU,GAAG,oBAAoB,CACnC,EAAE,EACF,WAAW,CAAC,CAAC,CAAC,EACd,IAAI,EACJ,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,EACnB,aAAa,EACb,KAAK,CACR,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,OAAO,UAAU,CAAC;aACrB;SACJ;KACJ;IACD,6DAA6D;IAC7D,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAC3B,EAAU,EACV,IAAY,EACZ,IAAgC,EAChC,KAAwB;IAExB,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAE/E,mDAAmD;IACnD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAXD,0CAWC"}
1
+ {"version":3,"file":"sourceMapperUtils.js","sourceRoot":"","sources":["../../../src/analyzer/sourceMapperUtils.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,MAAM,eAAe;IAArB;QACI,UAAK,GAAG,CAAC,CAAC;IACd,CAAC;CAAA;AAED,4EAA4E;AAC5E,uEAAuE;AACvE,qBAAqB;AACrB,SAAgB,eAAe,CAC3B,EAAU,EACV,IAAY,EACZ,IAAgC,EAChC,KAAwB;IAExB,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAE/E,mDAAmD;IACnD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAXD,0CAWC;AAED,SAAS,oBAAoB,CACzB,EAAU,EACV,IAAY,EACZ,IAAgC,EAChC,QAAkB,EAClB,aAA8B,EAC9B,KAAwB;IAExB,sEAAsE;IACtE,IAAI,aAAa,CAAC,KAAK,GAAG,qBAAqB,IAAI,KAAK,CAAC,uBAAuB,EAAE;QAC9E,OAAO,EAAE,CAAC;KACb;IACD,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC;IAEzB,IAAI,IAAI,KAAK,EAAE,EAAE;QACb,gEAAgE;QAChE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC9C;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;QACzD,0CAA0C;QAC1C,OAAO,EAAE,CAAC;KACb;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE;QAC3E,+DAA+D;QAC/D,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAE7G,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,OAAO,UAAU,CAAC;SACrB;KACJ;IAED,6DAA6D;IAC7D,OAAO,EAAE,CAAC;AACd,CAAC"}
@@ -5,8 +5,8 @@
5
5
  * Licensed under the MIT license.
6
6
  * Author: Eric Traut
7
7
  *
8
- * Collection of static methods that operate on expressions
9
- * (parse node trees).
8
+ * Functions that operate on expressions (parse node trees)
9
+ * whose values can be evaluated statically.
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.evaluateStaticBoolLikeExpression = exports.evaluateStaticBoolExpression = void 0;
@@ -5,7 +5,7 @@
5
5
  * Licensed under the MIT license.
6
6
  * Author: Eric Traut
7
7
  *
8
- * Collection of functions that operate on Symbol objects.
8
+ * Functions that operate on Symbol objects.
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.isVisibleExternally = exports.isTypedDictMemberAccessedThroughIndex = exports.getLastTypedDeclaredForSymbol = void 0;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  /*
3
3
  * testWalker.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ * Author: Eric Traut
4
7
  *
5
8
  * Walks a parse tree to validate internal consistency and completeness.
6
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"testWalker.js","sourceRoot":"","sources":["../../../src/analyzer/testWalker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testWalker.js","sourceRoot":"","sources":["../../../src/analyzer/testWalker.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Copyright (c) Microsoft Corporation.
5
5
  * Licensed under the MIT license.
6
6
  *
7
- * Converts various types into a string representation.
7
+ * Converts various types into string representations.
8
8
  */
9
9
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
10
  if (k2 === undefined) k2 = k;
@@ -98,12 +98,36 @@ class SpeculativeTypeTracker {
98
98
  if (this._speculativeContextStack.some((context) => !context.allowCacheRetention)) {
99
99
  return;
100
100
  }
101
+ const maxCacheEntriesPerNode = 8;
101
102
  let cacheEntries = this._speculativeTypeCache.get(node.id);
102
103
  if (!cacheEntries) {
103
104
  cacheEntries = [];
104
- this._speculativeTypeCache.set(node.id, cacheEntries);
105
105
  }
106
+ else {
107
+ cacheEntries = cacheEntries.filter((entry) => {
108
+ // Filter out any incomplete entries that no longer match the generation count.
109
+ // These are obsolete and cannot be used.
110
+ if (entry.typeResult.isIncomplete && entry.incompleteGenerationCount !== incompleteGenerationCount) {
111
+ return false;
112
+ }
113
+ // Filter out any entries that match the expected type of the
114
+ // new entry. The new entry replaces the old in this case.
115
+ if (expectedType) {
116
+ if (!entry.expectedType) {
117
+ return true;
118
+ }
119
+ return !(0, types_1.isTypeSame)(entry.expectedType, expectedType);
120
+ }
121
+ return !!entry.expectedType;
122
+ });
123
+ // Don't allow the cache to grow too large.
124
+ if (cacheEntries.length >= maxCacheEntriesPerNode) {
125
+ cacheEntries.slice(1);
126
+ }
127
+ }
128
+ // Add the new entry.
106
129
  cacheEntries.push({ typeResult, expectedType, incompleteGenerationCount });
130
+ this._speculativeTypeCache.set(node.id, cacheEntries);
107
131
  }
108
132
  getSpeculativeType(node, expectedType) {
109
133
  if (this._speculativeContextStack.some((context) => ParseTreeUtils.isNodeContainedWithin(node, context.speculativeRootNode))) {
@@ -1 +1 @@
1
- {"version":3,"file":"typeCacheUtils.js","sourceRoot":"","sources":["../../../src/analyzer/typeCacheUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typeCacheUtils.js","sourceRoot":"","sources":["../../../src/analyzer/typeCacheUtils.ts"],"names":[],"mappings":"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"}