@zzzen/pyright-internal 1.2.0-dev.20261011 → 1.2.0-dev.20261101

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 (144) hide show
  1. package/dist/analyzer/binder.js +28 -9
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.js +8 -3
  4. package/dist/analyzer/checker.js.map +1 -1
  5. package/dist/analyzer/codeFlowEngine.js +76 -30
  6. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  7. package/dist/analyzer/dataClasses.js +14 -5
  8. package/dist/analyzer/dataClasses.js.map +1 -1
  9. package/dist/analyzer/decorators.d.ts +1 -1
  10. package/dist/analyzer/decorators.js +22 -2
  11. package/dist/analyzer/decorators.js.map +1 -1
  12. package/dist/analyzer/namedTuples.d.ts +2 -1
  13. package/dist/analyzer/namedTuples.js +63 -35
  14. package/dist/analyzer/namedTuples.js.map +1 -1
  15. package/dist/analyzer/operations.js +45 -1
  16. package/dist/analyzer/operations.js.map +1 -1
  17. package/dist/analyzer/overloadResultAdmission.js +115 -3
  18. package/dist/analyzer/overloadResultAdmission.js.map +1 -1
  19. package/dist/analyzer/overloadResultController.js +36 -10
  20. package/dist/analyzer/overloadResultController.js.map +1 -1
  21. package/dist/analyzer/overloadResultSelector.js +32 -12
  22. package/dist/analyzer/overloadResultSelector.js.map +1 -1
  23. package/dist/analyzer/parseTreeUtils.d.ts +3 -0
  24. package/dist/analyzer/parseTreeUtils.js +56 -0
  25. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  26. package/dist/analyzer/patternMatching.js +67 -27
  27. package/dist/analyzer/patternMatching.js.map +1 -1
  28. package/dist/analyzer/program.d.ts +3 -0
  29. package/dist/analyzer/program.js +34 -9
  30. package/dist/analyzer/program.js.map +1 -1
  31. package/dist/analyzer/sentinel.js +7 -1
  32. package/dist/analyzer/sentinel.js.map +1 -1
  33. package/dist/analyzer/service.js +6 -2
  34. package/dist/analyzer/service.js.map +1 -1
  35. package/dist/analyzer/sourceEnumerator.d.ts +3 -1
  36. package/dist/analyzer/sourceEnumerator.js +30 -11
  37. package/dist/analyzer/sourceEnumerator.js.map +1 -1
  38. package/dist/analyzer/sourceFile.js +13 -6
  39. package/dist/analyzer/sourceFile.js.map +1 -1
  40. package/dist/analyzer/sourceMapper.d.ts +1 -0
  41. package/dist/analyzer/sourceMapper.js +10 -4
  42. package/dist/analyzer/sourceMapper.js.map +1 -1
  43. package/dist/analyzer/tupleComparison.d.ts +6 -0
  44. package/dist/analyzer/tupleComparison.js +731 -0
  45. package/dist/analyzer/tupleComparison.js.map +1 -0
  46. package/dist/analyzer/tuples.js +52 -10
  47. package/dist/analyzer/tuples.js.map +1 -1
  48. package/dist/analyzer/typeEvaluator.js +508 -63
  49. package/dist/analyzer/typeEvaluator.js.map +1 -1
  50. package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -1
  51. package/dist/analyzer/typeEvaluatorTypes.js +2 -3
  52. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  53. package/dist/analyzer/typeGuards.d.ts +6 -1
  54. package/dist/analyzer/typeGuards.js +373 -72
  55. package/dist/analyzer/typeGuards.js.map +1 -1
  56. package/dist/analyzer/typeStubRenderer.d.ts +6 -1
  57. package/dist/analyzer/typeStubRenderer.js +19 -12
  58. package/dist/analyzer/typeStubRenderer.js.map +1 -1
  59. package/dist/analyzer/typeUtils.js +3 -0
  60. package/dist/analyzer/typeUtils.js.map +1 -1
  61. package/dist/analyzer/typedDicts.d.ts +2 -1
  62. package/dist/analyzer/typedDicts.js +49 -10
  63. package/dist/analyzer/typedDicts.js.map +1 -1
  64. package/dist/analyzer/types.d.ts +14 -0
  65. package/dist/analyzer/types.js +215 -10
  66. package/dist/analyzer/types.js.map +1 -1
  67. package/dist/common/configOptions.d.ts +1 -0
  68. package/dist/common/configOptions.js +9 -0
  69. package/dist/common/configOptions.js.map +1 -1
  70. package/dist/common/processUtils.d.ts +6 -0
  71. package/dist/common/processUtils.js +56 -1
  72. package/dist/common/processUtils.js.map +1 -1
  73. package/dist/common/textEditTracker.js +1 -1
  74. package/dist/common/textEditTracker.js.map +1 -1
  75. package/dist/common/windowsProcessTree.d.ts +2 -0
  76. package/dist/common/windowsProcessTree.js +23 -0
  77. package/dist/common/windowsProcessTree.js.map +1 -1
  78. package/dist/common/windowsProcessTree.json +273 -34
  79. package/dist/languageServerBase.d.ts +3 -0
  80. package/dist/languageServerBase.js +44 -12
  81. package/dist/languageServerBase.js.map +1 -1
  82. package/dist/languageService/callHierarchyProvider.js +6 -6
  83. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  84. package/dist/languageService/referencesProvider.js +3 -3
  85. package/dist/languageService/referencesProvider.js.map +1 -1
  86. package/dist/languageService/renameProvider.js +1 -1
  87. package/dist/languageService/renameProvider.js.map +1 -1
  88. package/dist/languageService/symbolIndexer.js +2 -2
  89. package/dist/languageService/symbolIndexer.js.map +1 -1
  90. package/dist/localization/localize.d.ts +2 -0
  91. package/dist/localization/localize.js +2 -0
  92. package/dist/localization/localize.js.map +1 -1
  93. package/dist/localization/package.nls.en-us.json +8 -0
  94. package/dist/parser/parseTreeTokenReuse.d.ts +34 -0
  95. package/dist/parser/parseTreeTokenReuse.js +897 -0
  96. package/dist/parser/parseTreeTokenReuse.js.map +1 -0
  97. package/dist/parser/tokenizer.d.ts +10 -1
  98. package/dist/parser/tokenizer.js +184 -130
  99. package/dist/parser/tokenizer.js.map +1 -1
  100. package/dist/tests/checker.test.js +58 -0
  101. package/dist/tests/checker.test.js.map +1 -1
  102. package/dist/tests/config.test.js +126 -0
  103. package/dist/tests/config.test.js.map +1 -1
  104. package/dist/tests/fourSlashParser.test.js +35 -0
  105. package/dist/tests/fourSlashParser.test.js.map +1 -1
  106. package/dist/tests/fourslash/hover.typedDict.get.fourslash.js +11 -0
  107. package/dist/tests/fourslash/hover.typedDict.get.fourslash.js.map +1 -1
  108. package/dist/tests/harness/fourslash/fourSlashParser.js +14 -4
  109. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  110. package/dist/tests/languageServer.test.js +15 -0
  111. package/dist/tests/languageServer.test.js.map +1 -1
  112. package/dist/tests/lsp/languageServer.js +6 -6
  113. package/dist/tests/lsp/languageServer.js.map +1 -1
  114. package/dist/tests/mypyPrimerAnalysis.test.js +133 -0
  115. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
  116. package/dist/tests/overloadResultController.test.js +379 -1
  117. package/dist/tests/overloadResultController.test.js.map +1 -1
  118. package/dist/tests/signatureHelp.test.js +34 -0
  119. package/dist/tests/signatureHelp.test.js.map +1 -1
  120. package/dist/tests/sourceEnumeratorSymlink.test.js +98 -13
  121. package/dist/tests/sourceEnumeratorSymlink.test.js.map +1 -1
  122. package/dist/tests/sourceMapperUtils.test.js +143 -0
  123. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  124. package/dist/tests/typeEvaluator1.test.js +22 -3
  125. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  126. package/dist/tests/typeEvaluator2.test.js +54 -1
  127. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  128. package/dist/tests/typeEvaluator4.test.js +10 -3
  129. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  130. package/dist/tests/typeEvaluator5.test.js +1 -1
  131. package/dist/tests/typeEvaluator6.test.js +55 -0
  132. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  133. package/dist/tests/typeEvaluator7.test.js +30 -0
  134. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  135. package/dist/tests/typeEvaluator8.test.js +1293 -2
  136. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  137. package/dist/tests/types.test.js +55 -0
  138. package/dist/tests/types.test.js.map +1 -1
  139. package/dist/typeServer/programWrapper.js +8 -2
  140. package/dist/typeServer/programWrapper.js.map +1 -1
  141. package/dist/typeServer/server.d.ts +12 -2
  142. package/dist/typeServer/server.js +97 -0
  143. package/dist/typeServer/server.js.map +1 -1
  144. package/package.json +3 -3
@@ -2634,20 +2634,31 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
2634
2634
  allowDiscriminatedNarrowing: true,
2635
2635
  });
2636
2636
  }
2637
- // Look for "type(X) is Y" or "type(X) is not Y".
2638
- if (isOrIsNotOperator &&
2639
- expression.d.leftExpr.nodeType === 9 /* ParseNodeType.Call */ &&
2637
+ // Look for type(X) on either side without skipping references in the other operand.
2638
+ let isLeftNarrowing;
2639
+ if (expression.d.leftExpr.nodeType === 9 /* ParseNodeType.Call */ &&
2640
2640
  expression.d.leftExpr.d.leftExpr.nodeType === 38 /* ParseNodeType.Name */ &&
2641
2641
  expression.d.leftExpr.d.leftExpr.d.value === 'type' &&
2642
2642
  expression.d.leftExpr.d.args.length === 1 &&
2643
2643
  expression.d.leftExpr.d.args[0].d.argCategory === 0 /* ArgCategory.Simple */) {
2644
- return this._isNarrowingExpression(expression.d.leftExpr.d.args[0].d.valueExpr, expressionList, { ...options, isComplexExpression: true });
2644
+ isLeftNarrowing = this._isNarrowingExpression(expression.d.leftExpr.d.args[0].d.valueExpr, expressionList, { ...options, isComplexExpression: true });
2645
+ }
2646
+ else {
2647
+ isLeftNarrowing = this._isNarrowingExpression(expression.d.leftExpr, expressionList, {
2648
+ ...options,
2649
+ isComplexExpression: true,
2650
+ allowDiscriminatedNarrowing: true,
2651
+ });
2652
+ }
2653
+ // Look for "Y is type(X)", "Y is not type(X)", "Y == type(X)" or "Y != type(X)".
2654
+ if (expression.d.rightExpr.nodeType === 9 /* ParseNodeType.Call */ &&
2655
+ expression.d.rightExpr.d.leftExpr.nodeType === 38 /* ParseNodeType.Name */ &&
2656
+ expression.d.rightExpr.d.leftExpr.d.value === 'type' &&
2657
+ expression.d.rightExpr.d.args.length === 1 &&
2658
+ expression.d.rightExpr.d.args[0].d.argCategory === 0 /* ArgCategory.Simple */) {
2659
+ const isRightNarrowing = this._isNarrowingExpression(expression.d.rightExpr.d.args[0].d.valueExpr, expressionList, { ...options, isComplexExpression: true });
2660
+ return isLeftNarrowing || isRightNarrowing;
2645
2661
  }
2646
- const isLeftNarrowing = this._isNarrowingExpression(expression.d.leftExpr, expressionList, {
2647
- ...options,
2648
- isComplexExpression: true,
2649
- allowDiscriminatedNarrowing: true,
2650
- });
2651
2662
  // Look for "X is Y" or "X is not Y".
2652
2663
  // Look for X == <literal> or X != <literal>
2653
2664
  // Look for len(X) == <literal> or len(X) != <literal>
@@ -2790,6 +2801,10 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
2790
2801
  _createCallFlowNode(node) {
2791
2802
  if (!this._isCodeUnreachable()) {
2792
2803
  this._addExceptTargets(this._currentFlowNode);
2804
+ const deletionCall = ParseTreeUtils.getTypedDictKeyDeletionCall(node);
2805
+ if (deletionCall && (0, codeFlowTypes_1.isCodeFlowSupportedForReference)(deletionCall.d.leftExpr)) {
2806
+ this._currentScopeCodeFlowExpressions.add((0, codeFlowTypes_1.createKeyForReference)(deletionCall.d.leftExpr));
2807
+ }
2793
2808
  const flowNode = {
2794
2809
  flags: codeFlowTypes_1.FlowFlags.Call,
2795
2810
  id: this._getUniqueFlowNodeId(),
@@ -2838,6 +2853,10 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
2838
2853
  if (isSupportedReference) {
2839
2854
  this._currentScopeCodeFlowExpressions.add((0, codeFlowTypes_1.createKeyForReference)(node));
2840
2855
  }
2856
+ // Key presence changes the containing TypedDict's narrowed type.
2857
+ if (node.nodeType === 27 /* ParseNodeType.Index */ && (0, codeFlowTypes_1.isCodeFlowSupportedForReference)(node.d.leftExpr)) {
2858
+ this._currentScopeCodeFlowExpressions.add((0, codeFlowTypes_1.createKeyForReference)(node.d.leftExpr));
2859
+ }
2841
2860
  if (unbound) {
2842
2861
  flowNode.flags |= codeFlowTypes_1.FlowFlags.Unbind;
2843
2862
  }