@zzzen/pyright-internal 1.2.0-dev.20230319 → 1.2.0-dev.20230402

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 (142) hide show
  1. package/dist/analyzer/cacheManager.js +1 -1
  2. package/dist/analyzer/checker.js +52 -26
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/constraintSolver.js +4 -1
  5. package/dist/analyzer/constraintSolver.js.map +1 -1
  6. package/dist/analyzer/constructorTransform.js +4 -3
  7. package/dist/analyzer/constructorTransform.js.map +1 -1
  8. package/dist/analyzer/dataClasses.js +10 -0
  9. package/dist/analyzer/dataClasses.js.map +1 -1
  10. package/dist/analyzer/declarationUtils.d.ts +8 -0
  11. package/dist/analyzer/declarationUtils.js +147 -1
  12. package/dist/analyzer/declarationUtils.js.map +1 -1
  13. package/dist/analyzer/importStatementUtils.js +1 -1
  14. package/dist/analyzer/parameterUtils.d.ts +25 -1
  15. package/dist/analyzer/parameterUtils.js +182 -1
  16. package/dist/analyzer/parameterUtils.js.map +1 -1
  17. package/dist/analyzer/patternMatching.js +55 -5
  18. package/dist/analyzer/patternMatching.js.map +1 -1
  19. package/dist/analyzer/program.js +40 -26
  20. package/dist/analyzer/program.js.map +1 -1
  21. package/dist/analyzer/properties.js +13 -13
  22. package/dist/analyzer/properties.js.map +1 -1
  23. package/dist/analyzer/protocols.js +21 -5
  24. package/dist/analyzer/protocols.js.map +1 -1
  25. package/dist/analyzer/pythonPathUtils.js +1 -1
  26. package/dist/analyzer/regions.js +4 -4
  27. package/dist/analyzer/regions.js.map +1 -1
  28. package/dist/analyzer/service.js +16 -22
  29. package/dist/analyzer/service.js.map +1 -1
  30. package/dist/analyzer/sourceFile.js +1 -1
  31. package/dist/analyzer/sourceFileInfoUtils.js +1 -1
  32. package/dist/analyzer/sourceMapper.js +1 -1
  33. package/dist/analyzer/sourceMapperUtils.d.ts +0 -8
  34. package/dist/analyzer/sourceMapperUtils.js +18 -25
  35. package/dist/analyzer/sourceMapperUtils.js.map +1 -1
  36. package/dist/analyzer/staticExpressions.js +2 -2
  37. package/dist/analyzer/symbolUtils.js +1 -1
  38. package/dist/analyzer/testWalker.js +3 -0
  39. package/dist/analyzer/testWalker.js.map +1 -1
  40. package/dist/analyzer/tracePrinter.js +1 -1
  41. package/dist/analyzer/typeEvaluator.js +187 -87
  42. package/dist/analyzer/typeEvaluator.js.map +1 -1
  43. package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -3
  44. package/dist/analyzer/typeEvaluatorTypes.js +0 -1
  45. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  46. package/dist/analyzer/typeEvaluatorWithTracker.js +3 -5
  47. package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
  48. package/dist/analyzer/typeGuards.js +182 -159
  49. package/dist/analyzer/typeGuards.js.map +1 -1
  50. package/dist/analyzer/typeUtils.d.ts +2 -25
  51. package/dist/analyzer/typeUtils.js +59 -188
  52. package/dist/analyzer/typeUtils.js.map +1 -1
  53. package/dist/analyzer/typeVarContext.js +6 -2
  54. package/dist/analyzer/typeVarContext.js.map +1 -1
  55. package/dist/analyzer/typedDicts.js +2 -1
  56. package/dist/analyzer/typedDicts.js.map +1 -1
  57. package/dist/analyzer/types.d.ts +1 -0
  58. package/dist/analyzer/types.js.map +1 -1
  59. package/dist/common/configOptions.js +1 -1
  60. package/dist/common/configOptions.js.map +1 -1
  61. package/dist/common/diagnosticSink.js +1 -1
  62. package/dist/common/envVarUtils.js +7 -7
  63. package/dist/common/envVarUtils.js.map +1 -1
  64. package/dist/common/fileBasedCancellationUtils.js +5 -1
  65. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  66. package/dist/common/host.js +1 -1
  67. package/dist/common/lspUtils.js +1 -1
  68. package/dist/common/pathConsts.d.ts +1 -0
  69. package/dist/common/pathConsts.js +2 -1
  70. package/dist/common/pathConsts.js.map +1 -1
  71. package/dist/common/progressReporter.js +4 -1
  72. package/dist/common/progressReporter.js.map +1 -1
  73. package/dist/common/pythonVersion.js +1 -2
  74. package/dist/common/pythonVersion.js.map +1 -1
  75. package/dist/common/realFileSystem.js +1 -1
  76. package/dist/common/textEditTracker.js +1 -1
  77. package/dist/common/workspaceEditUtils.js +1 -1
  78. package/dist/languageServerBase.js +2 -2
  79. package/dist/languageServerBase.js.map +1 -1
  80. package/dist/languageService/analyzerServiceExecutor.js +2 -2
  81. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  82. package/dist/languageService/autoImporter.d.ts +1 -1
  83. package/dist/languageService/autoImporter.js +6 -3
  84. package/dist/languageService/autoImporter.js.map +1 -1
  85. package/dist/languageService/callHierarchyProvider.d.ts +7 -3
  86. package/dist/languageService/callHierarchyProvider.js +38 -6
  87. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  88. package/dist/languageService/completionProvider.d.ts +1 -0
  89. package/dist/languageService/completionProvider.js +30 -11
  90. package/dist/languageService/completionProvider.js.map +1 -1
  91. package/dist/languageService/completionProviderUtils.js +2 -2
  92. package/dist/languageService/completionProviderUtils.js.map +1 -1
  93. package/dist/languageService/documentSymbolProvider.js +1 -2
  94. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  95. package/dist/languageService/hoverProvider.js +1 -1
  96. package/dist/languageService/hoverProvider.js.map +1 -1
  97. package/dist/languageService/importSorter.js +1 -1
  98. package/dist/languageService/indentationUtils.js +2 -1
  99. package/dist/languageService/indentationUtils.js.map +1 -1
  100. package/dist/languageService/signatureHelpProvider.js +9 -7
  101. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  102. package/dist/languageService/tooltipUtils.js +2 -2
  103. package/dist/localization/localize.d.ts +0 -3
  104. package/dist/localization/localize.js +0 -1
  105. package/dist/localization/localize.js.map +1 -1
  106. package/dist/localization/package.nls.en-us.json +0 -1
  107. package/dist/tests/checker.test.js +1 -1
  108. package/dist/tests/checker.test.js.map +1 -1
  109. package/dist/tests/completions.test.js +41 -0
  110. package/dist/tests/completions.test.js.map +1 -1
  111. package/dist/tests/fourslash/fourslash.d.ts +5 -0
  112. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.d.ts +1 -0
  113. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js +34 -0
  114. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js.map +1 -0
  115. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.d.ts +1 -0
  116. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js +19 -0
  117. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js.map +1 -0
  118. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.d.ts +1 -0
  119. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js +39 -0
  120. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js.map +1 -0
  121. package/dist/tests/harness/fourslash/testState.d.ts +5 -0
  122. package/dist/tests/harness/fourslash/testState.js +21 -0
  123. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  124. package/dist/tests/hoverProvider.test.js +50 -0
  125. package/dist/tests/hoverProvider.test.js.map +1 -1
  126. package/dist/tests/typeEvaluator1.test.js +8 -0
  127. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  128. package/dist/tests/typeEvaluator2.test.js +13 -1
  129. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  130. package/dist/tests/typeEvaluator3.test.js +9 -1
  131. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  132. package/dist/tests/typeEvaluator4.test.js +48 -116
  133. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  134. package/dist/tests/typeEvaluator5.test.js +1 -5
  135. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  136. package/dist/workspaceFactory.d.ts +1 -0
  137. package/dist/workspaceFactory.js +20 -10
  138. package/dist/workspaceFactory.js.map +1 -1
  139. package/package.json +1 -1
  140. package/dist/analyzer/aliasDeclarationUtils.d.ts +0 -9
  141. package/dist/analyzer/aliasDeclarationUtils.js +0 -142
  142. package/dist/analyzer/aliasDeclarationUtils.js.map +0 -1
@@ -5,7 +5,7 @@
5
5
  * Licensed under the MIT license.
6
6
  * Author: Eric Traut
7
7
  *
8
- * A singleton that tracks the size of caches and empty them
8
+ * A singleton that tracks the size of caches and empties them
9
9
  * if memory usage approaches the max heap space.
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,17 @@
1
1
  "use strict";
2
+ /*
3
+ * checker.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ * Author: Eric Traut
7
+ *
8
+ * A parse tree walker that performs static type checking for
9
+ * a source file. Most of its work is performed by the type
10
+ * evaluator, but this module touches every node in the file
11
+ * to ensure that all statements and expressions are evaluated
12
+ * and checked. It also performs some additional checks that
13
+ * cannot (or should not be) performed lazily.
14
+ */
2
15
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
16
  if (k2 === undefined) k2 = k;
4
17
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -20,19 +33,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
20
33
  };
21
34
  Object.defineProperty(exports, "__esModule", { value: true });
22
35
  exports.Checker = void 0;
23
- /*
24
- * checker.ts
25
- * Copyright (c) Microsoft Corporation.
26
- * Licensed under the MIT license.
27
- * Author: Eric Traut
28
- *
29
- * A parse tree walker that performs static type checking for
30
- * a source file. Most of its work is performed by the type
31
- * evaluator, but this module touches every node in the file
32
- * to ensure that all statements and expressions are evaluated
33
- * and checked. It also performs some additional checks that
34
- * cannot (or should not be) performed lazily.
35
- */
36
36
  const vscode_languageserver_1 = require("vscode-languageserver");
37
37
  const debug_1 = require("../common/debug");
38
38
  const diagnostic_1 = require("../common/diagnostic");
@@ -48,6 +48,7 @@ const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
48
48
  const declaration_1 = require("./declaration");
49
49
  const importResolver_1 = require("./importResolver");
50
50
  const importStatementUtils_1 = require("./importStatementUtils");
51
+ const parameterUtils_1 = require("./parameterUtils");
51
52
  const ParseTreeUtils = __importStar(require("./parseTreeUtils"));
52
53
  const parseTreeWalker_1 = require("./parseTreeWalker");
53
54
  const patternMatching_1 = require("./patternMatching");
@@ -1338,7 +1339,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1338
1339
  }
1339
1340
  }
1340
1341
  // Does the class have an operator overload for eq?
1341
- if ((0, typeUtils_1.lookUpClassMember)(types_1.ClassType.cloneAsInstantiable(leftType), '__eq__', 4 /* SkipObjectBaseClass */)) {
1342
+ const eqMethod = (0, typeUtils_1.lookUpClassMember)(types_1.ClassType.cloneAsInstantiable(leftType), '__eq__', 4 /* SkipObjectBaseClass */);
1343
+ if (eqMethod) {
1344
+ // If this is a synthesized method for a dataclass, we can assume
1345
+ // that other dataclass types will not be comparable.
1346
+ if (types_1.ClassType.isDataClass(leftType) && eqMethod.symbol.getSynthesizedType()) {
1347
+ return false;
1348
+ }
1342
1349
  return true;
1343
1350
  }
1344
1351
  return false;
@@ -3164,7 +3171,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3164
3171
  !postInitType.details.declaration) {
3165
3172
  return;
3166
3173
  }
3167
- const paramListDetails = (0, typeUtils_1.getParameterListDetails)(postInitType);
3174
+ const paramListDetails = (0, parameterUtils_1.getParameterListDetails)(postInitType);
3168
3175
  // If there is an *args or **kwargs parameter or a keyword-only separator,
3169
3176
  // don't bother checking.
3170
3177
  if (paramListDetails.argsIndex !== undefined ||
@@ -3730,6 +3737,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3730
3737
  });
3731
3738
  }
3732
3739
  _validateOverrideDecoratorPresent(overrideType, baseMember) {
3740
+ var _a;
3733
3741
  // Skip this check if disabled.
3734
3742
  if (this._fileInfo.diagnosticRuleSet.reportImplicitOverride === 'none') {
3735
3743
  return;
@@ -3741,11 +3749,24 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3741
3749
  else if ((0, types_1.isOverloadedFunction)(overrideType)) {
3742
3750
  overrideFunction = types_1.OverloadedFunctionType.getImplementation(overrideType);
3743
3751
  }
3752
+ else if ((0, types_1.isClassInstance)(overrideType) && types_1.ClassType.isPropertyClass(overrideType)) {
3753
+ const fgetSymbol = overrideType.details.fields.get('fget');
3754
+ if (fgetSymbol) {
3755
+ const fgetType = (_a = this._evaluator.getDeclaredTypeOfSymbol(fgetSymbol)) === null || _a === void 0 ? void 0 : _a.type;
3756
+ if (fgetType && (0, types_1.isFunction)(fgetType)) {
3757
+ overrideFunction = fgetType;
3758
+ }
3759
+ }
3760
+ }
3744
3761
  if (!(overrideFunction === null || overrideFunction === void 0 ? void 0 : overrideFunction.details.declaration) || types_1.FunctionType.isOverridden(overrideFunction)) {
3745
3762
  return;
3746
3763
  }
3764
+ // Constructors are exempt.
3765
+ if (overrideFunction.details.name === '__init__' || overrideFunction.details.name === '__new__') {
3766
+ return;
3767
+ }
3747
3768
  const funcNode = overrideFunction.details.declaration.node;
3748
- this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.overrideDecoratorMissing().format({
3769
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportImplicitOverride, diagnosticRules_1.DiagnosticRule.reportImplicitOverride, localize_1.Localizer.Diagnostic.overrideDecoratorMissing().format({
3749
3770
  name: funcNode.name.value,
3750
3771
  className: this._evaluator.printType((0, typeUtils_1.convertToInstance)(baseMember.classType)),
3751
3772
  }), funcNode.name);
@@ -3754,6 +3775,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3754
3775
  // decorator. In this case, an error is reported because no base class has declared
3755
3776
  // a method of the same name.
3756
3777
  _validateOverrideDecoratorNotPresent(overrideType) {
3778
+ var _a;
3757
3779
  let overrideFunction;
3758
3780
  if ((0, types_1.isFunction)(overrideType)) {
3759
3781
  overrideFunction = overrideType;
@@ -3761,6 +3783,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3761
3783
  else if ((0, types_1.isOverloadedFunction)(overrideType)) {
3762
3784
  overrideFunction = types_1.OverloadedFunctionType.getImplementation(overrideType);
3763
3785
  }
3786
+ else if ((0, types_1.isClassInstance)(overrideType) && types_1.ClassType.isPropertyClass(overrideType)) {
3787
+ const fgetSymbol = overrideType.details.fields.get('fget');
3788
+ if (fgetSymbol) {
3789
+ const fgetType = (_a = this._evaluator.getDeclaredTypeOfSymbol(fgetSymbol)) === null || _a === void 0 ? void 0 : _a.type;
3790
+ if (fgetType && (0, types_1.isFunction)(fgetType)) {
3791
+ overrideFunction = fgetType;
3792
+ }
3793
+ }
3794
+ }
3764
3795
  if (!(overrideFunction === null || overrideFunction === void 0 ? void 0 : overrideFunction.details.declaration) || !types_1.FunctionType.isOverridden(overrideFunction)) {
3765
3796
  return;
3766
3797
  }
@@ -4180,11 +4211,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4180
4211
  if ((0, types_1.isClassInstance)(paramType) && types_1.ClassType.isProtocolClass(paramType)) {
4181
4212
  return;
4182
4213
  }
4183
- // Don't enforce this for an overloaded method because the "self" param
4184
- // annotation can be used as a filter for the overload.
4185
- if (types_1.FunctionType.isOverloaded(functionType)) {
4186
- return;
4187
- }
4188
4214
  const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(functionType));
4189
4215
  if (!this._evaluator.assignType(paramType, expectedType, /* diag */ undefined, typeVarContext)) {
4190
4216
  // We exempt Never from this check because it has a legitimate use in this case.
@@ -4353,11 +4379,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4353
4379
  });
4354
4380
  }
4355
4381
  _addDiagnosticForRegionComment(regionComment, message) {
4356
- // extend range to include # character
4357
- const range = regionComment.comment;
4358
- range.start -= 1;
4359
- range.length += 1;
4360
- return this._evaluator.addDiagnosticForTextRange(this._fileInfo, 'error', '', message, range);
4382
+ return this._evaluator.addDiagnosticForTextRange(this._fileInfo, 'error', '', message, {
4383
+ // extend range to include # character
4384
+ start: regionComment.comment.start - 1,
4385
+ length: regionComment.comment.length + 1,
4386
+ });
4361
4387
  }
4362
4388
  }
4363
4389
  exports.Checker = Checker;