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

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 (110) hide show
  1. package/dist/analyzer/checker.js +4 -4
  2. package/dist/analyzer/checker.js.map +1 -1
  3. package/dist/analyzer/commentUtils.js +15 -16
  4. package/dist/analyzer/commentUtils.js.map +1 -1
  5. package/dist/analyzer/constraintSolver.d.ts +1 -1
  6. package/dist/analyzer/constraintSolver.js +24 -8
  7. package/dist/analyzer/constraintSolver.js.map +1 -1
  8. package/dist/analyzer/constructorTransform.js +3 -3
  9. package/dist/analyzer/constructorTransform.js.map +1 -1
  10. package/dist/analyzer/constructors.js +153 -132
  11. package/dist/analyzer/constructors.js.map +1 -1
  12. package/dist/analyzer/dataClasses.js +1 -1
  13. package/dist/analyzer/dataClasses.js.map +1 -1
  14. package/dist/analyzer/docStringConversion.js +1 -1
  15. package/dist/analyzer/enums.js +1 -1
  16. package/dist/analyzer/enums.js.map +1 -1
  17. package/dist/analyzer/parameterUtils.js +7 -7
  18. package/dist/analyzer/parameterUtils.js.map +1 -1
  19. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  20. package/dist/analyzer/parseTreeUtils.js +21 -6
  21. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  22. package/dist/analyzer/patternMatching.js +2 -1
  23. package/dist/analyzer/patternMatching.js.map +1 -1
  24. package/dist/analyzer/program.js +9 -4
  25. package/dist/analyzer/program.js.map +1 -1
  26. package/dist/analyzer/service.js +8 -0
  27. package/dist/analyzer/service.js.map +1 -1
  28. package/dist/analyzer/sourceFile.d.ts +3 -2
  29. package/dist/analyzer/sourceFile.js +204 -190
  30. package/dist/analyzer/sourceFile.js.map +1 -1
  31. package/dist/analyzer/typeCacheUtils.d.ts +9 -2
  32. package/dist/analyzer/typeCacheUtils.js +52 -9
  33. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  34. package/dist/analyzer/typeEvaluator.js +220 -128
  35. package/dist/analyzer/typeEvaluator.js.map +1 -1
  36. package/dist/analyzer/typeGuards.js +3 -3
  37. package/dist/analyzer/typeGuards.js.map +1 -1
  38. package/dist/analyzer/typePrinter.js +9 -9
  39. package/dist/analyzer/typePrinter.js.map +1 -1
  40. package/dist/analyzer/typeStubWriter.js +2 -2
  41. package/dist/analyzer/typeStubWriter.js.map +1 -1
  42. package/dist/analyzer/typeUtils.d.ts +6 -6
  43. package/dist/analyzer/typeUtils.js +145 -159
  44. package/dist/analyzer/typeUtils.js.map +1 -1
  45. package/dist/analyzer/typeVarContext.js +12 -1
  46. package/dist/analyzer/typeVarContext.js.map +1 -1
  47. package/dist/analyzer/typeWalker.d.ts +22 -0
  48. package/dist/analyzer/typeWalker.js +164 -0
  49. package/dist/analyzer/typeWalker.js.map +1 -0
  50. package/dist/analyzer/typedDicts.js +2 -2
  51. package/dist/analyzer/typedDicts.js.map +1 -1
  52. package/dist/analyzer/types.d.ts +5 -2
  53. package/dist/analyzer/types.js +39 -22
  54. package/dist/analyzer/types.js.map +1 -1
  55. package/dist/backgroundAnalysisBase.d.ts +4 -2
  56. package/dist/commands/dumpFileDebugInfoCommand.js +2 -2
  57. package/dist/common/commandLineOptions.d.ts +1 -0
  58. package/dist/common/commandLineOptions.js.map +1 -1
  59. package/dist/common/textRange.d.ts +3 -3
  60. package/dist/common/textRange.js +17 -8
  61. package/dist/common/textRange.js.map +1 -1
  62. package/dist/common/uriParser.d.ts +1 -0
  63. package/dist/common/uriParser.js +9 -0
  64. package/dist/common/uriParser.js.map +1 -1
  65. package/dist/languageServerBase.js +4 -2
  66. package/dist/languageServerBase.js.map +1 -1
  67. package/dist/languageService/analyzerServiceExecutor.js +1 -0
  68. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  69. package/dist/languageService/completionProvider.js +5 -5
  70. package/dist/languageService/completionProvider.js.map +1 -1
  71. package/dist/languageService/renameProvider.d.ts +3 -3
  72. package/dist/languageService/renameProvider.js +6 -6
  73. package/dist/languageService/renameProvider.js.map +1 -1
  74. package/dist/localization/localize.d.ts +5 -0
  75. package/dist/localization/localize.js +3 -0
  76. package/dist/localization/localize.js.map +1 -1
  77. package/dist/localization/package.nls.en-us.json +3 -0
  78. package/dist/parser/parseNodes.d.ts +11 -3
  79. package/dist/parser/parseNodes.js +7 -9
  80. package/dist/parser/parseNodes.js.map +1 -1
  81. package/dist/parser/parser.js +13 -10
  82. package/dist/parser/parser.js.map +1 -1
  83. package/dist/parser/tokenizer.js +8 -7
  84. package/dist/parser/tokenizer.js.map +1 -1
  85. package/dist/tests/docStringConversion.test.js +44 -0
  86. package/dist/tests/docStringConversion.test.js.map +1 -1
  87. package/dist/tests/fourslash/fourslash.d.ts +1 -1
  88. package/dist/tests/fourslash/rename.function.untitledFile.fourslash.d.ts +1 -0
  89. package/dist/tests/fourslash/rename.function.untitledFile.fourslash.js +17 -0
  90. package/dist/tests/fourslash/rename.function.untitledFile.fourslash.js.map +1 -0
  91. package/dist/tests/harness/fourslash/testState.d.ts +1 -1
  92. package/dist/tests/harness/fourslash/testState.js +2 -2
  93. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  94. package/dist/tests/service.test.js +10 -0
  95. package/dist/tests/service.test.js.map +1 -1
  96. package/dist/tests/tokenizer.test.js +8 -0
  97. package/dist/tests/tokenizer.test.js.map +1 -1
  98. package/dist/tests/typeEvaluator1.test.js +5 -1
  99. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  100. package/dist/tests/typeEvaluator2.test.js +12 -0
  101. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  102. package/dist/tests/typeEvaluator3.test.js +17 -1
  103. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  104. package/dist/tests/typeEvaluator4.test.js +4 -0
  105. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  106. package/dist/tests/typePrinter.test.js +3 -3
  107. package/dist/tests/typePrinter.test.js.map +1 -1
  108. package/dist/workspaceFactory.js +4 -4
  109. package/dist/workspaceFactory.js.map +1 -1
  110. package/package.json +1 -1
@@ -7,7 +7,11 @@ interface SpeculativeEntry {
7
7
  interface SpeculativeContext {
8
8
  speculativeRootNode: ParseNode;
9
9
  entriesToUndo: SpeculativeEntry[];
10
- allowCacheRetention: boolean;
10
+ dependentType: Type | undefined;
11
+ }
12
+ interface DependentType {
13
+ speculativeRootNode: ParseNode;
14
+ dependentType: Type;
11
15
  }
12
16
  export interface TypeResult {
13
17
  type: Type;
@@ -17,11 +21,13 @@ export interface SpeculativeTypeEntry {
17
21
  typeResult: TypeResult;
18
22
  expectedType: Type | undefined;
19
23
  incompleteGenerationCount: number;
24
+ dependentTypes?: DependentType[];
20
25
  }
21
26
  export declare class SpeculativeTypeTracker {
22
27
  private _speculativeContextStack;
23
28
  private _speculativeTypeCache;
24
- enterSpeculativeContext(speculativeRootNode: ParseNode, allowCacheRetention: boolean): void;
29
+ private _activeDependentTypes;
30
+ enterSpeculativeContext(speculativeRootNode: ParseNode, dependentType: Type | undefined): void;
25
31
  leaveSpeculativeContext(): void;
26
32
  isSpeculative(node: ParseNode | undefined): boolean;
27
33
  trackEntry(cache: Map<number, any>, id: number): void;
@@ -29,5 +35,6 @@ export declare class SpeculativeTypeTracker {
29
35
  enableSpeculativeMode(stack: SpeculativeContext[]): void;
30
36
  addSpeculativeType(node: ParseNode, typeResult: TypeResult, incompleteGenerationCount: number, expectedType: Type | undefined): void;
31
37
  getSpeculativeType(node: ParseNode, expectedType: Type | undefined): SpeculativeTypeEntry | undefined;
38
+ private _dependentTypesMatch;
32
39
  }
33
40
  export {};
@@ -36,22 +36,41 @@ const types_1 = require("./types");
36
36
  // entries that were created within that context are removed from the
37
37
  // corresponding type caches because they are no longer valid.
38
38
  // Each type context also contains a map of "speculative types" that are
39
- // contextually evaluated based on an "expected type".
39
+ // contextually evaluated based on an "expected type" and potentially
40
+ // one or more "dependent types". The "expected type" applies in cases
41
+ // where the speculative root node is being evaluated with bidirectional
42
+ // type inference. Dependent types apply in cases where the type of
43
+ // many subnodes depends on the expected type of a parent node, as in the
44
+ // case of lambda type inference.
40
45
  class SpeculativeTypeTracker {
41
46
  constructor() {
42
47
  this._speculativeContextStack = [];
43
48
  this._speculativeTypeCache = new Map();
49
+ this._activeDependentTypes = [];
44
50
  }
45
- enterSpeculativeContext(speculativeRootNode, allowCacheRetention) {
51
+ enterSpeculativeContext(speculativeRootNode, dependentType) {
46
52
  this._speculativeContextStack.push({
47
53
  speculativeRootNode,
48
54
  entriesToUndo: [],
49
- allowCacheRetention,
55
+ dependentType,
50
56
  });
57
+ // Retain a list of active dependent types. This information is already
58
+ // contained within the speculative context stack, but we retain a copy
59
+ // in this alternate form for performance reasons.
60
+ if (dependentType) {
61
+ this._activeDependentTypes.push({
62
+ speculativeRootNode,
63
+ dependentType,
64
+ });
65
+ }
51
66
  }
52
67
  leaveSpeculativeContext() {
53
68
  (0, debug_1.assert)(this._speculativeContextStack.length > 0);
54
69
  const context = this._speculativeContextStack.pop();
70
+ if (context === null || context === void 0 ? void 0 : context.dependentType) {
71
+ (0, debug_1.assert)(this._activeDependentTypes.length > 0);
72
+ this._activeDependentTypes.pop();
73
+ }
55
74
  // Delete all of the speculative type cache entries
56
75
  // that were tracked in this context.
57
76
  context.entriesToUndo.forEach((entry) => {
@@ -95,9 +114,6 @@ class SpeculativeTypeTracker {
95
114
  }
96
115
  addSpeculativeType(node, typeResult, incompleteGenerationCount, expectedType) {
97
116
  (0, debug_1.assert)(this._speculativeContextStack.length > 0);
98
- if (this._speculativeContextStack.some((context) => !context.allowCacheRetention)) {
99
- return;
100
- }
101
117
  const maxCacheEntriesPerNode = 8;
102
118
  let cacheEntries = this._speculativeTypeCache.get(node.id);
103
119
  if (!cacheEntries) {
@@ -126,7 +142,15 @@ class SpeculativeTypeTracker {
126
142
  }
127
143
  }
128
144
  // Add the new entry.
129
- cacheEntries.push({ typeResult, expectedType, incompleteGenerationCount });
145
+ const newEntry = {
146
+ typeResult,
147
+ expectedType,
148
+ incompleteGenerationCount,
149
+ };
150
+ if (this._activeDependentTypes.length > 0) {
151
+ newEntry.dependentTypes = Array.from(this._activeDependentTypes);
152
+ }
153
+ cacheEntries.push(newEntry);
130
154
  this._speculativeTypeCache.set(node.id, cacheEntries);
131
155
  }
132
156
  getSpeculativeType(node, expectedType) {
@@ -135,11 +159,13 @@ class SpeculativeTypeTracker {
135
159
  if (entries) {
136
160
  for (const entry of entries) {
137
161
  if (!expectedType) {
138
- if (!entry.expectedType) {
162
+ if (!entry.expectedType && this._dependentTypesMatch(entry)) {
139
163
  return entry;
140
164
  }
141
165
  }
142
- else if (entry.expectedType && (0, types_1.isTypeSame)(expectedType, entry.expectedType)) {
166
+ else if (entry.expectedType &&
167
+ (0, types_1.isTypeSame)(expectedType, entry.expectedType) &&
168
+ this._dependentTypesMatch(entry)) {
143
169
  return entry;
144
170
  }
145
171
  }
@@ -147,6 +173,23 @@ class SpeculativeTypeTracker {
147
173
  }
148
174
  return undefined;
149
175
  }
176
+ // Determines whether a cache entry matches the current set of
177
+ // active dependent types. If not, the cache entry can't be used
178
+ // in the current context.
179
+ _dependentTypesMatch(entry) {
180
+ var _a;
181
+ const cachedDependentTypes = (_a = entry.dependentTypes) !== null && _a !== void 0 ? _a : [];
182
+ if (cachedDependentTypes.length !== this._activeDependentTypes.length) {
183
+ return false;
184
+ }
185
+ return cachedDependentTypes.every((cachedDepType, index) => {
186
+ const activeDepType = this._activeDependentTypes[index];
187
+ if (cachedDepType.speculativeRootNode !== activeDepType.speculativeRootNode) {
188
+ return false;
189
+ }
190
+ return (0, types_1.isTypeSame)(cachedDepType.dependentType, activeDepType.dependentType);
191
+ });
192
+ }
150
193
  }
151
194
  exports.SpeculativeTypeTracker = SpeculativeTypeTracker;
152
195
  //# sourceMappingURL=typeCacheUtils.js.map
@@ -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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"}