@zzzen/pyright-internal 1.2.0-dev.20261018 → 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 (105) hide show
  1. package/dist/analyzer/binder.js +20 -9
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.js +4 -0
  4. package/dist/analyzer/checker.js.map +1 -1
  5. package/dist/analyzer/codeFlowEngine.js +3 -3
  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/parseTreeUtils.d.ts +2 -0
  18. package/dist/analyzer/parseTreeUtils.js +43 -0
  19. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  20. package/dist/analyzer/patternMatching.js +3 -1
  21. package/dist/analyzer/patternMatching.js.map +1 -1
  22. package/dist/analyzer/sentinel.js +7 -1
  23. package/dist/analyzer/sentinel.js.map +1 -1
  24. package/dist/analyzer/sourceFile.js +13 -6
  25. package/dist/analyzer/sourceFile.js.map +1 -1
  26. package/dist/analyzer/tupleComparison.d.ts +6 -0
  27. package/dist/analyzer/tupleComparison.js +731 -0
  28. package/dist/analyzer/tupleComparison.js.map +1 -0
  29. package/dist/analyzer/tuples.js +35 -4
  30. package/dist/analyzer/tuples.js.map +1 -1
  31. package/dist/analyzer/typeEvaluator.js +232 -20
  32. package/dist/analyzer/typeEvaluator.js.map +1 -1
  33. package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -1
  34. package/dist/analyzer/typeEvaluatorTypes.js +2 -3
  35. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  36. package/dist/analyzer/typeGuards.d.ts +1 -0
  37. package/dist/analyzer/typeGuards.js +257 -41
  38. package/dist/analyzer/typeGuards.js.map +1 -1
  39. package/dist/analyzer/typeUtils.js +3 -0
  40. package/dist/analyzer/typeUtils.js.map +1 -1
  41. package/dist/analyzer/types.d.ts +14 -0
  42. package/dist/analyzer/types.js +215 -10
  43. package/dist/analyzer/types.js.map +1 -1
  44. package/dist/common/processUtils.d.ts +6 -0
  45. package/dist/common/processUtils.js +56 -1
  46. package/dist/common/processUtils.js.map +1 -1
  47. package/dist/common/textEditTracker.js +1 -1
  48. package/dist/common/textEditTracker.js.map +1 -1
  49. package/dist/common/windowsProcessTree.d.ts +2 -0
  50. package/dist/common/windowsProcessTree.js +23 -0
  51. package/dist/common/windowsProcessTree.js.map +1 -1
  52. package/dist/common/windowsProcessTree.json +23 -3
  53. package/dist/languageServerBase.d.ts +3 -0
  54. package/dist/languageServerBase.js +44 -12
  55. package/dist/languageServerBase.js.map +1 -1
  56. package/dist/languageService/callHierarchyProvider.js +6 -6
  57. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  58. package/dist/languageService/referencesProvider.js +3 -3
  59. package/dist/languageService/referencesProvider.js.map +1 -1
  60. package/dist/languageService/renameProvider.js +1 -1
  61. package/dist/languageService/renameProvider.js.map +1 -1
  62. package/dist/languageService/symbolIndexer.js +2 -2
  63. package/dist/languageService/symbolIndexer.js.map +1 -1
  64. package/dist/localization/localize.d.ts +2 -0
  65. package/dist/localization/localize.js +2 -0
  66. package/dist/localization/localize.js.map +1 -1
  67. package/dist/localization/package.nls.en-us.json +8 -0
  68. package/dist/parser/parseTreeTokenReuse.d.ts +34 -0
  69. package/dist/parser/parseTreeTokenReuse.js +897 -0
  70. package/dist/parser/parseTreeTokenReuse.js.map +1 -0
  71. package/dist/parser/tokenizer.d.ts +10 -1
  72. package/dist/parser/tokenizer.js +184 -130
  73. package/dist/parser/tokenizer.js.map +1 -1
  74. package/dist/tests/checker.test.js +8 -0
  75. package/dist/tests/checker.test.js.map +1 -1
  76. package/dist/tests/fourSlashParser.test.js +35 -0
  77. package/dist/tests/fourSlashParser.test.js.map +1 -1
  78. package/dist/tests/harness/fourslash/fourSlashParser.js +14 -4
  79. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  80. package/dist/tests/languageServer.test.js +15 -0
  81. package/dist/tests/languageServer.test.js.map +1 -1
  82. package/dist/tests/lsp/languageServer.js +6 -6
  83. package/dist/tests/lsp/languageServer.js.map +1 -1
  84. package/dist/tests/mypyPrimerAnalysis.test.js +133 -0
  85. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
  86. package/dist/tests/typeEvaluator1.test.js +3 -1
  87. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  88. package/dist/tests/typeEvaluator2.test.js +54 -1
  89. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  90. package/dist/tests/typeEvaluator4.test.js +10 -3
  91. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  92. package/dist/tests/typeEvaluator6.test.js +35 -0
  93. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  94. package/dist/tests/typeEvaluator7.test.js +20 -0
  95. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  96. package/dist/tests/typeEvaluator8.test.js +1291 -1
  97. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  98. package/dist/tests/types.test.js +55 -0
  99. package/dist/tests/types.test.js.map +1 -1
  100. package/dist/typeServer/programWrapper.js +8 -2
  101. package/dist/typeServer/programWrapper.js.map +1 -1
  102. package/dist/typeServer/server.d.ts +12 -2
  103. package/dist/typeServer/server.js +97 -0
  104. package/dist/typeServer/server.js.map +1 -1
  105. package/package.json +1 -1
@@ -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>