@zzzen/pyright-internal 1.2.0-dev.20231001 → 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 (110) hide show
  1. package/dist/analyzer/checker.d.ts +3 -1
  2. package/dist/analyzer/checker.js +55 -17
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/codeFlowEngine.js +10 -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 +31 -24
  8. package/dist/analyzer/decorators.js.map +1 -1
  9. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  10. package/dist/analyzer/parseTreeUtils.js +21 -2
  11. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  12. package/dist/analyzer/properties.js +4 -0
  13. package/dist/analyzer/properties.js.map +1 -1
  14. package/dist/analyzer/protocols.js +7 -1
  15. package/dist/analyzer/protocols.js.map +1 -1
  16. package/dist/analyzer/scopeUtils.js +3 -2
  17. package/dist/analyzer/scopeUtils.js.map +1 -1
  18. package/dist/analyzer/typeEvaluator.d.ts +2 -1
  19. package/dist/analyzer/typeEvaluator.js +147 -222
  20. package/dist/analyzer/typeEvaluator.js.map +1 -1
  21. package/dist/analyzer/typeEvaluatorTypes.d.ts +7 -0
  22. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  23. package/dist/analyzer/typeGuards.d.ts +1 -1
  24. package/dist/analyzer/typeGuards.js +55 -43
  25. package/dist/analyzer/typeGuards.js.map +1 -1
  26. package/dist/analyzer/typeUtils.js +1 -1
  27. package/dist/analyzer/typeUtils.js.map +1 -1
  28. package/dist/analyzer/types.d.ts +1 -0
  29. package/dist/analyzer/types.js +3 -0
  30. package/dist/analyzer/types.js.map +1 -1
  31. package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
  32. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  33. package/dist/common/extensibility.d.ts +19 -6
  34. package/dist/common/extensibility.js +6 -7
  35. package/dist/common/extensibility.js.map +1 -1
  36. package/dist/common/pythonVersion.d.ts +1 -1
  37. package/dist/common/pythonVersion.js +1 -1
  38. package/dist/common/realFileSystem.js +9 -16
  39. package/dist/common/realFileSystem.js.map +1 -1
  40. package/dist/common/serviceProvider.d.ts +1 -1
  41. package/dist/common/serviceProvider.js.map +1 -1
  42. package/dist/common/serviceProviderExtensions.d.ts +3 -2
  43. package/dist/common/serviceProviderExtensions.js +2 -1
  44. package/dist/common/serviceProviderExtensions.js.map +1 -1
  45. package/dist/languageServerBase.d.ts +2 -0
  46. package/dist/languageServerBase.js +28 -1
  47. package/dist/languageServerBase.js.map +1 -1
  48. package/dist/languageService/callHierarchyProvider.d.ts +0 -1
  49. package/dist/languageService/callHierarchyProvider.js +33 -16
  50. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  51. package/dist/languageService/definitionProvider.js +4 -5
  52. package/dist/languageService/definitionProvider.js.map +1 -1
  53. package/dist/languageService/documentHighlightProvider.js +5 -2
  54. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  55. package/dist/languageService/documentSymbolCollector.d.ts +32 -23
  56. package/dist/languageService/documentSymbolCollector.js +170 -267
  57. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  58. package/dist/languageService/hoverProvider.js +1 -5
  59. package/dist/languageService/hoverProvider.js.map +1 -1
  60. package/dist/languageService/referencesProvider.d.ts +6 -6
  61. package/dist/languageService/referencesProvider.js +23 -8
  62. package/dist/languageService/referencesProvider.js.map +1 -1
  63. package/dist/languageService/renameProvider.js +3 -3
  64. package/dist/languageService/renameProvider.js.map +1 -1
  65. package/dist/localization/localize.d.ts +21 -0
  66. package/dist/localization/localize.js +7 -0
  67. package/dist/localization/localize.js.map +1 -1
  68. package/dist/localization/package.nls.cs.json +4 -0
  69. package/dist/localization/package.nls.de.json +4 -0
  70. package/dist/localization/package.nls.en-us.json +7 -0
  71. package/dist/localization/package.nls.es.json +4 -0
  72. package/dist/localization/package.nls.fr.json +4 -0
  73. package/dist/localization/package.nls.it.json +4 -0
  74. package/dist/localization/package.nls.ja.json +4 -0
  75. package/dist/localization/package.nls.ko.json +4 -0
  76. package/dist/localization/package.nls.pl.json +4 -0
  77. package/dist/localization/package.nls.pt-br.json +4 -0
  78. package/dist/localization/package.nls.qps-ploc.json +4 -0
  79. package/dist/localization/package.nls.ru.json +4 -0
  80. package/dist/localization/package.nls.tr.json +4 -0
  81. package/dist/localization/package.nls.zh-cn.json +4 -0
  82. package/dist/localization/package.nls.zh-tw.json +4 -0
  83. package/dist/parser/stringTokenUtils.js +9 -5
  84. package/dist/parser/stringTokenUtils.js.map +1 -1
  85. package/dist/parser/tokenizer.d.ts +1 -0
  86. package/dist/parser/tokenizer.js +5 -5
  87. package/dist/parser/tokenizer.js.map +1 -1
  88. package/dist/tests/checker.test.js +8 -0
  89. package/dist/tests/checker.test.js.map +1 -1
  90. package/dist/tests/documentSymbolCollector.test.js +8 -363
  91. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  92. package/dist/tests/testStateUtils.d.ts +3 -0
  93. package/dist/tests/testStateUtils.js +25 -1
  94. package/dist/tests/testStateUtils.js.map +1 -1
  95. package/dist/tests/typeEvaluator1.test.js +1 -1
  96. package/dist/tests/typeEvaluator2.test.js +9 -5
  97. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  98. package/dist/tests/typeEvaluator3.test.js +7 -3
  99. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  100. package/dist/tests/typeEvaluator4.test.js +8 -8
  101. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  102. package/dist/tests/typeEvaluator5.test.js +4 -2
  103. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  104. package/dist/workspaceFactory.d.ts +2 -1
  105. package/dist/workspaceFactory.js +3 -1
  106. package/dist/workspaceFactory.js.map +1 -1
  107. package/package.json +1 -1
  108. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.d.ts +0 -1
  109. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.js +0 -40
  110. 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) {
@@ -2541,7 +2546,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2541
2546
  const filterType = (varType) => {
2542
2547
  const filteredTypes = [];
2543
2548
  for (const filterType of classTypeList) {
2544
- 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);
2545
2550
  const filterIsSubclass = (0, typeGuards_1.isIsinstanceFilterSubclass)(this._evaluator, varType, filterType, isInstanceCheck);
2546
2551
  // Normally, a class should never be both a subclass and a
2547
2552
  // superclass. However, this can happen if one of the classes
@@ -2648,7 +2653,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2648
2653
  }
2649
2654
  break;
2650
2655
  case 5 /* Function */:
2651
- isSupported = types_1.TypeBase.isInstantiable(subtype);
2656
+ if (!types_1.TypeBase.isInstantiable(subtype) || subtype.isCallableWithTypeArgs) {
2657
+ isSupported = false;
2658
+ }
2652
2659
  break;
2653
2660
  case 9 /* Union */:
2654
2661
  isSupported = this._isTypeSupportedTypeForIsInstance(subtype, isInstanceCheck);
@@ -2677,7 +2684,35 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2677
2684
  }
2678
2685
  return false;
2679
2686
  }
2680
- _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) {
2681
2716
  var _a, _b;
2682
2717
  if (!type) {
2683
2718
  return;
@@ -2765,16 +2800,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2765
2800
  }
2766
2801
  });
2767
2802
  if (errorMessage) {
2768
- const diag = new diagnostic_1.DiagnosticAddendum();
2769
- if (deprecatedMessage) {
2770
- diag.addMessage(deprecatedMessage);
2771
- }
2772
- if (this._fileInfo.diagnosticRuleSet.reportDeprecated === 'none') {
2773
- this._evaluator.addDeprecated(errorMessage + diag.getString(), node);
2774
- }
2775
- else {
2776
- this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportDeprecated, diagnosticRules_1.DiagnosticRule.reportDeprecated, errorMessage + diag.getString(), node);
2777
- }
2803
+ this._reportDeprecatedDiagnostic(node, errorMessage, deprecatedMessage);
2778
2804
  }
2779
2805
  if (this._fileInfo.diagnosticRuleSet.deprecateTypingAliases) {
2780
2806
  const deprecatedForm = (_a = deprecatedSymbols_1.deprecatedAliases.get(node.value)) !== null && _a !== void 0 ? _a : deprecatedSymbols_1.deprecatedSpecialForms.get(node.value);
@@ -2801,6 +2827,18 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2801
2827
  }
2802
2828
  }
2803
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
+ }
2804
2842
  _reportUnboundName(node) {
2805
2843
  if (this._fileInfo.diagnosticRuleSet.reportUnboundVariable === 'none') {
2806
2844
  return;