@zzzen/pyright-internal 1.2.0-dev.20230924 → 1.2.0-dev.20231008

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 (143) hide show
  1. package/dist/analyzer/checker.d.ts +3 -1
  2. package/dist/analyzer/checker.js +59 -18
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/codeFlowEngine.js +17 -3
  5. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  6. package/dist/analyzer/decorators.d.ts +6 -1
  7. package/dist/analyzer/decorators.js +34 -24
  8. package/dist/analyzer/decorators.js.map +1 -1
  9. package/dist/analyzer/operations.js +4 -2
  10. package/dist/analyzer/operations.js.map +1 -1
  11. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  12. package/dist/analyzer/parseTreeUtils.js +21 -2
  13. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  14. package/dist/analyzer/patternMatching.js +47 -16
  15. package/dist/analyzer/patternMatching.js.map +1 -1
  16. package/dist/analyzer/program.d.ts +2 -3
  17. package/dist/analyzer/program.js +6 -6
  18. package/dist/analyzer/program.js.map +1 -1
  19. package/dist/analyzer/properties.js +4 -0
  20. package/dist/analyzer/properties.js.map +1 -1
  21. package/dist/analyzer/protocols.js +7 -1
  22. package/dist/analyzer/protocols.js.map +1 -1
  23. package/dist/analyzer/scopeUtils.js +3 -2
  24. package/dist/analyzer/scopeUtils.js.map +1 -1
  25. package/dist/analyzer/service.d.ts +4 -4
  26. package/dist/analyzer/service.js +4 -18
  27. package/dist/analyzer/service.js.map +1 -1
  28. package/dist/analyzer/sourceFile.d.ts +3 -1
  29. package/dist/analyzer/sourceFile.js +9 -5
  30. package/dist/analyzer/sourceFile.js.map +1 -1
  31. package/dist/analyzer/typeEvaluator.d.ts +2 -1
  32. package/dist/analyzer/typeEvaluator.js +211 -233
  33. package/dist/analyzer/typeEvaluator.js.map +1 -1
  34. package/dist/analyzer/typeEvaluatorTypes.d.ts +7 -0
  35. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  36. package/dist/analyzer/typeGuards.d.ts +1 -1
  37. package/dist/analyzer/typeGuards.js +55 -43
  38. package/dist/analyzer/typeGuards.js.map +1 -1
  39. package/dist/analyzer/typeUtils.d.ts +1 -0
  40. package/dist/analyzer/typeUtils.js +22 -3
  41. package/dist/analyzer/typeUtils.js.map +1 -1
  42. package/dist/analyzer/types.d.ts +2 -1
  43. package/dist/analyzer/types.js +9 -3
  44. package/dist/analyzer/types.js.map +1 -1
  45. package/dist/backgroundAnalysisBase.js +0 -22
  46. package/dist/backgroundAnalysisBase.js.map +1 -1
  47. package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
  48. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  49. package/dist/common/configOptions.d.ts +1 -0
  50. package/dist/common/configOptions.js +4 -0
  51. package/dist/common/configOptions.js.map +1 -1
  52. package/dist/common/diagnosticRules.d.ts +1 -0
  53. package/dist/common/diagnosticRules.js +1 -0
  54. package/dist/common/diagnosticRules.js.map +1 -1
  55. package/dist/common/extensibility.d.ts +26 -28
  56. package/dist/common/extensibility.js +6 -97
  57. package/dist/common/extensibility.js.map +1 -1
  58. package/dist/common/pathUtils.d.ts +3 -0
  59. package/dist/common/pathUtils.js +13 -8
  60. package/dist/common/pathUtils.js.map +1 -1
  61. package/dist/common/pythonVersion.d.ts +1 -1
  62. package/dist/common/pythonVersion.js +1 -1
  63. package/dist/common/realFileSystem.js +9 -16
  64. package/dist/common/realFileSystem.js.map +1 -1
  65. package/dist/common/serviceProvider.d.ts +22 -3
  66. package/dist/common/serviceProvider.js +89 -9
  67. package/dist/common/serviceProvider.js.map +1 -1
  68. package/dist/common/serviceProviderExtensions.d.ts +5 -1
  69. package/dist/common/serviceProviderExtensions.js +5 -2
  70. package/dist/common/serviceProviderExtensions.js.map +1 -1
  71. package/dist/languageServerBase.d.ts +2 -0
  72. package/dist/languageServerBase.js +28 -4
  73. package/dist/languageServerBase.js.map +1 -1
  74. package/dist/languageService/callHierarchyProvider.d.ts +0 -1
  75. package/dist/languageService/callHierarchyProvider.js +33 -16
  76. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  77. package/dist/languageService/definitionProvider.d.ts +3 -2
  78. package/dist/languageService/definitionProvider.js +13 -11
  79. package/dist/languageService/definitionProvider.js.map +1 -1
  80. package/dist/languageService/documentHighlightProvider.js +5 -2
  81. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  82. package/dist/languageService/documentSymbolCollector.d.ts +32 -23
  83. package/dist/languageService/documentSymbolCollector.js +171 -266
  84. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  85. package/dist/languageService/hoverProvider.js +5 -9
  86. package/dist/languageService/hoverProvider.js.map +1 -1
  87. package/dist/languageService/referencesProvider.d.ts +6 -6
  88. package/dist/languageService/referencesProvider.js +23 -8
  89. package/dist/languageService/referencesProvider.js.map +1 -1
  90. package/dist/languageService/renameProvider.js +3 -3
  91. package/dist/languageService/renameProvider.js.map +1 -1
  92. package/dist/localization/localize.d.ts +29 -1
  93. package/dist/localization/localize.js +11 -1
  94. package/dist/localization/localize.js.map +1 -1
  95. package/dist/localization/package.nls.cs.json +8 -1
  96. package/dist/localization/package.nls.de.json +8 -1
  97. package/dist/localization/package.nls.en-us.json +11 -1
  98. package/dist/localization/package.nls.es.json +8 -1
  99. package/dist/localization/package.nls.fr.json +8 -1
  100. package/dist/localization/package.nls.it.json +8 -1
  101. package/dist/localization/package.nls.ja.json +8 -1
  102. package/dist/localization/package.nls.ko.json +8 -1
  103. package/dist/localization/package.nls.pl.json +8 -1
  104. package/dist/localization/package.nls.pt-br.json +8 -1
  105. package/dist/localization/package.nls.qps-ploc.json +8 -1
  106. package/dist/localization/package.nls.ru.json +8 -1
  107. package/dist/localization/package.nls.tr.json +8 -1
  108. package/dist/localization/package.nls.zh-cn.json +8 -1
  109. package/dist/localization/package.nls.zh-tw.json +8 -1
  110. package/dist/parser/stringTokenUtils.js +9 -5
  111. package/dist/parser/stringTokenUtils.js.map +1 -1
  112. package/dist/parser/tokenizer.d.ts +1 -0
  113. package/dist/parser/tokenizer.js +5 -5
  114. package/dist/parser/tokenizer.js.map +1 -1
  115. package/dist/tests/checker.test.js +8 -0
  116. package/dist/tests/checker.test.js.map +1 -1
  117. package/dist/tests/documentSymbolCollector.test.js +8 -363
  118. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  119. package/dist/tests/importResolver.test.js +654 -481
  120. package/dist/tests/importResolver.test.js.map +1 -1
  121. package/dist/tests/pathUtils.test.js +39 -1
  122. package/dist/tests/pathUtils.test.js.map +1 -1
  123. package/dist/tests/sourceFile.test.js +2 -1
  124. package/dist/tests/sourceFile.test.js.map +1 -1
  125. package/dist/tests/testStateUtils.d.ts +3 -0
  126. package/dist/tests/testStateUtils.js +25 -1
  127. package/dist/tests/testStateUtils.js.map +1 -1
  128. package/dist/tests/typeEvaluator1.test.js +1 -1
  129. package/dist/tests/typeEvaluator2.test.js +12 -6
  130. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  131. package/dist/tests/typeEvaluator3.test.js +14 -4
  132. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  133. package/dist/tests/typeEvaluator4.test.js +9 -8
  134. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  135. package/dist/tests/typeEvaluator5.test.js +4 -2
  136. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  137. package/dist/workspaceFactory.d.ts +2 -1
  138. package/dist/workspaceFactory.js +3 -1
  139. package/dist/workspaceFactory.js.map +1 -1
  140. package/package.json +3 -2
  141. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.d.ts +0 -1
  142. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.js +0 -40
  143. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.js.map +0 -1
@@ -103,7 +103,9 @@ export declare class Checker extends ParseTreeWalker {
103
103
  private _validateIsInstanceCall;
104
104
  private _isTypeSupportedTypeForIsInstance;
105
105
  private _isSymbolPrivate;
106
- private _reportDeprecatedUse;
106
+ private _reportDeprecatedUseForMemberAccess;
107
+ private _reportDeprecatedUseForType;
108
+ private _reportDeprecatedDiagnostic;
107
109
  private _reportUnboundName;
108
110
  private _conditionallyReportShadowedModule;
109
111
  private _conditionallyReportShadowedImport;
@@ -892,7 +892,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
892
892
  }
893
893
  // Report the use of a deprecated symbol.
894
894
  const type = this._evaluator.getType(node);
895
- this._reportDeprecatedUse(node, type);
895
+ this._reportDeprecatedUseForType(node, type);
896
896
  return true;
897
897
  }
898
898
  visitDel(node) {
@@ -903,9 +903,14 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
903
903
  return false;
904
904
  }
905
905
  visitMemberAccess(node) {
906
- const type = this._evaluator.getType(node);
906
+ var _a;
907
+ const typeResult = this._evaluator.getTypeResult(node);
908
+ const type = (_a = typeResult === null || typeResult === void 0 ? void 0 : typeResult.type) !== null && _a !== void 0 ? _a : types_1.UnknownType.create();
907
909
  const leftExprType = this._evaluator.getType(node.leftExpression);
908
- this._reportDeprecatedUse(node.memberName, type, leftExprType && (0, types_1.isModule)(leftExprType) && leftExprType.moduleName === 'typing');
910
+ this._reportDeprecatedUseForType(node.memberName, type, leftExprType && (0, types_1.isModule)(leftExprType) && leftExprType.moduleName === 'typing');
911
+ if (typeResult === null || typeResult === void 0 ? void 0 : typeResult.memberAccessDeprecationInfo) {
912
+ this._reportDeprecatedUseForMemberAccess(node.memberName, typeResult.memberAccessDeprecationInfo);
913
+ }
909
914
  this._conditionallyReportPrivateUsage(node.memberName);
910
915
  // Walk the leftExpression but not the memberName.
911
916
  this.walk(node.leftExpression);
@@ -977,7 +982,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
977
982
  }
978
983
  }
979
984
  const type = this._evaluator.getType((_b = node.alias) !== null && _b !== void 0 ? _b : node.name);
980
- this._reportDeprecatedUse(node.name, type, isImportFromTyping);
985
+ this._reportDeprecatedUseForType(node.name, type, isImportFromTyping);
981
986
  return false;
982
987
  }
983
988
  visitModuleName(node) {
@@ -1919,7 +1924,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1919
1924
  for (const paramList of this._typeParameterLists) {
1920
1925
  for (const param of paramList.parameters) {
1921
1926
  const symbol = AnalyzerNodeInfo.getTypeParameterSymbol(param.name);
1922
- (0, debug_1.assert)(symbol);
1927
+ if (!symbol) {
1928
+ // This can happen if the code is unreachable.
1929
+ return;
1930
+ }
1923
1931
  if (!accessedSymbolSet.has(symbol.id)) {
1924
1932
  const decls = symbol.getDeclarations();
1925
1933
  decls.forEach((decl) => {
@@ -2538,7 +2546,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2538
2546
  const filterType = (varType) => {
2539
2547
  const filteredTypes = [];
2540
2548
  for (const filterType of classTypeList) {
2541
- const filterIsSuperclass = (0, typeGuards_1.isIsinstanceFilterSuperclass)(this._evaluator, varType, filterType, filterType, isInstanceCheck);
2549
+ const filterIsSuperclass = (0, typeGuards_1.isIsinstanceFilterSuperclass)(this._evaluator, varType, varType, filterType, filterType, isInstanceCheck);
2542
2550
  const filterIsSubclass = (0, typeGuards_1.isIsinstanceFilterSubclass)(this._evaluator, varType, filterType, isInstanceCheck);
2543
2551
  // Normally, a class should never be both a subclass and a
2544
2552
  // superclass. However, this can happen if one of the classes
@@ -2645,7 +2653,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2645
2653
  }
2646
2654
  break;
2647
2655
  case 5 /* Function */:
2648
- isSupported = types_1.TypeBase.isInstantiable(subtype);
2656
+ if (!types_1.TypeBase.isInstantiable(subtype) || subtype.isCallableWithTypeArgs) {
2657
+ isSupported = false;
2658
+ }
2649
2659
  break;
2650
2660
  case 9 /* Union */:
2651
2661
  isSupported = this._isTypeSupportedTypeForIsInstance(subtype, isInstanceCheck);
@@ -2674,7 +2684,35 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2674
2684
  }
2675
2685
  return false;
2676
2686
  }
2677
- _reportDeprecatedUse(node, type, isImportFromTyping = false) {
2687
+ _reportDeprecatedUseForMemberAccess(node, info) {
2688
+ let errorMessage;
2689
+ if (info.accessType === 'property') {
2690
+ if (info.accessMethod === 'get') {
2691
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedPropertyGetter().format({ name: node.value });
2692
+ }
2693
+ else if (info.accessMethod === 'set') {
2694
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedPropertySetter().format({ name: node.value });
2695
+ }
2696
+ else {
2697
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedPropertyDeleter().format({ name: node.value });
2698
+ }
2699
+ }
2700
+ else if (info.accessType === 'descriptor') {
2701
+ if (info.accessMethod === 'get') {
2702
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedDescriptorGetter().format({ name: node.value });
2703
+ }
2704
+ else if (info.accessMethod === 'set') {
2705
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedDescriptorSetter().format({ name: node.value });
2706
+ }
2707
+ else {
2708
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedDescriptorDeleter().format({ name: node.value });
2709
+ }
2710
+ }
2711
+ if (errorMessage) {
2712
+ this._reportDeprecatedDiagnostic(node, errorMessage, info.deprecationMessage);
2713
+ }
2714
+ }
2715
+ _reportDeprecatedUseForType(node, type, isImportFromTyping = false) {
2678
2716
  var _a, _b;
2679
2717
  if (!type) {
2680
2718
  return;
@@ -2762,16 +2800,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2762
2800
  }
2763
2801
  });
2764
2802
  if (errorMessage) {
2765
- const diag = new diagnostic_1.DiagnosticAddendum();
2766
- if (deprecatedMessage) {
2767
- diag.addMessage(deprecatedMessage);
2768
- }
2769
- if (this._fileInfo.diagnosticRuleSet.reportDeprecated === 'none') {
2770
- this._evaluator.addDeprecated(errorMessage + diag.getString(), node);
2771
- }
2772
- else {
2773
- this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportDeprecated, diagnosticRules_1.DiagnosticRule.reportDeprecated, errorMessage + diag.getString(), node);
2774
- }
2803
+ this._reportDeprecatedDiagnostic(node, errorMessage, deprecatedMessage);
2775
2804
  }
2776
2805
  if (this._fileInfo.diagnosticRuleSet.deprecateTypingAliases) {
2777
2806
  const deprecatedForm = (_a = deprecatedSymbols_1.deprecatedAliases.get(node.value)) !== null && _a !== void 0 ? _a : deprecatedSymbols_1.deprecatedSpecialForms.get(node.value);
@@ -2798,6 +2827,18 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2798
2827
  }
2799
2828
  }
2800
2829
  }
2830
+ _reportDeprecatedDiagnostic(node, diagnosticMessage, deprecatedMessage) {
2831
+ const diag = new diagnostic_1.DiagnosticAddendum();
2832
+ if (deprecatedMessage) {
2833
+ diag.addMessage(deprecatedMessage);
2834
+ }
2835
+ if (this._fileInfo.diagnosticRuleSet.reportDeprecated === 'none') {
2836
+ this._evaluator.addDeprecated(diagnosticMessage + diag.getString(), node);
2837
+ }
2838
+ else {
2839
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportDeprecated, diagnosticRules_1.DiagnosticRule.reportDeprecated, diagnosticMessage + diag.getString(), node);
2840
+ }
2841
+ }
2801
2842
  _reportUnboundName(node) {
2802
2843
  if (this._fileInfo.diagnosticRuleSet.reportUnboundVariable === 'none') {
2803
2844
  return;