@zzzen/pyright-internal 1.2.0-dev.20230326 → 1.2.0-dev.20230409

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 (161) hide show
  1. package/dist/analyzer/binder.d.ts +8 -0
  2. package/dist/analyzer/binder.js +46 -1
  3. package/dist/analyzer/binder.js.map +1 -1
  4. package/dist/analyzer/cacheManager.js +1 -1
  5. package/dist/analyzer/checker.js +54 -20
  6. package/dist/analyzer/checker.js.map +1 -1
  7. package/dist/analyzer/constraintSolver.js +4 -1
  8. package/dist/analyzer/constraintSolver.js.map +1 -1
  9. package/dist/analyzer/constructorTransform.js +4 -3
  10. package/dist/analyzer/constructorTransform.js.map +1 -1
  11. package/dist/analyzer/declarationUtils.d.ts +8 -0
  12. package/dist/analyzer/declarationUtils.js +147 -1
  13. package/dist/analyzer/declarationUtils.js.map +1 -1
  14. package/dist/analyzer/importStatementUtils.js +1 -1
  15. package/dist/analyzer/parameterUtils.d.ts +25 -1
  16. package/dist/analyzer/parameterUtils.js +182 -1
  17. package/dist/analyzer/parameterUtils.js.map +1 -1
  18. package/dist/analyzer/patternMatching.js +39 -2
  19. package/dist/analyzer/patternMatching.js.map +1 -1
  20. package/dist/analyzer/program.d.ts +2 -0
  21. package/dist/analyzer/program.js +62 -11
  22. package/dist/analyzer/program.js.map +1 -1
  23. package/dist/analyzer/properties.js +13 -13
  24. package/dist/analyzer/properties.js.map +1 -1
  25. package/dist/analyzer/protocols.js +3 -2
  26. package/dist/analyzer/protocols.js.map +1 -1
  27. package/dist/analyzer/pythonPathUtils.js +1 -1
  28. package/dist/analyzer/regions.js +4 -4
  29. package/dist/analyzer/regions.js.map +1 -1
  30. package/dist/analyzer/service.js +17 -8
  31. package/dist/analyzer/service.js.map +1 -1
  32. package/dist/analyzer/sourceFile.js +2 -2
  33. package/dist/analyzer/sourceFile.js.map +1 -1
  34. package/dist/analyzer/sourceFileInfoUtils.js +1 -1
  35. package/dist/analyzer/sourceMapper.js +1 -1
  36. package/dist/analyzer/sourceMapperUtils.d.ts +0 -8
  37. package/dist/analyzer/sourceMapperUtils.js +18 -25
  38. package/dist/analyzer/sourceMapperUtils.js.map +1 -1
  39. package/dist/analyzer/staticExpressions.js +2 -2
  40. package/dist/analyzer/symbolUtils.js +1 -1
  41. package/dist/analyzer/testWalker.js +3 -0
  42. package/dist/analyzer/testWalker.js.map +1 -1
  43. package/dist/analyzer/tracePrinter.js +1 -1
  44. package/dist/analyzer/typeCacheUtils.js +25 -1
  45. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  46. package/dist/analyzer/typeEvaluator.js +180 -150
  47. package/dist/analyzer/typeEvaluator.js.map +1 -1
  48. package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -3
  49. package/dist/analyzer/typeEvaluatorTypes.js +0 -1
  50. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  51. package/dist/analyzer/typeEvaluatorWithTracker.js +3 -5
  52. package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
  53. package/dist/analyzer/typeGuards.js +182 -159
  54. package/dist/analyzer/typeGuards.js.map +1 -1
  55. package/dist/analyzer/typeUtils.d.ts +13 -25
  56. package/dist/analyzer/typeUtils.js +157 -235
  57. package/dist/analyzer/typeUtils.js.map +1 -1
  58. package/dist/analyzer/typeVarContext.js +6 -2
  59. package/dist/analyzer/typeVarContext.js.map +1 -1
  60. package/dist/analyzer/typedDicts.js +42 -7
  61. package/dist/analyzer/typedDicts.js.map +1 -1
  62. package/dist/analyzer/types.d.ts +1 -0
  63. package/dist/analyzer/types.js +10 -0
  64. package/dist/analyzer/types.js.map +1 -1
  65. package/dist/common/configOptions.js +1 -1
  66. package/dist/common/configOptions.js.map +1 -1
  67. package/dist/common/diagnosticSink.js +1 -1
  68. package/dist/common/envVarUtils.js +7 -7
  69. package/dist/common/envVarUtils.js.map +1 -1
  70. package/dist/common/fileBasedCancellationUtils.js +1 -1
  71. package/dist/common/host.js +1 -1
  72. package/dist/common/lspUtils.js +1 -1
  73. package/dist/common/pathConsts.d.ts +1 -0
  74. package/dist/common/pathConsts.js +2 -1
  75. package/dist/common/pathConsts.js.map +1 -1
  76. package/dist/common/positionUtils.d.ts +2 -1
  77. package/dist/common/positionUtils.js +18 -12
  78. package/dist/common/positionUtils.js.map +1 -1
  79. package/dist/common/progressReporter.js +4 -1
  80. package/dist/common/progressReporter.js.map +1 -1
  81. package/dist/common/pythonVersion.js +1 -2
  82. package/dist/common/pythonVersion.js.map +1 -1
  83. package/dist/common/realFileSystem.js +1 -1
  84. package/dist/common/textEditTracker.js +1 -1
  85. package/dist/common/workspaceEditUtils.js +1 -1
  86. package/dist/languageServerBase.js +1 -1
  87. package/dist/languageServerBase.js.map +1 -1
  88. package/dist/languageService/analyzerServiceExecutor.js +2 -2
  89. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  90. package/dist/languageService/autoImporter.js +1 -0
  91. package/dist/languageService/autoImporter.js.map +1 -1
  92. package/dist/languageService/callHierarchyProvider.d.ts +7 -3
  93. package/dist/languageService/callHierarchyProvider.js +38 -6
  94. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  95. package/dist/languageService/completionProvider.d.ts +1 -0
  96. package/dist/languageService/completionProvider.js +29 -10
  97. package/dist/languageService/completionProvider.js.map +1 -1
  98. package/dist/languageService/completionProviderUtils.js +2 -2
  99. package/dist/languageService/completionProviderUtils.js.map +1 -1
  100. package/dist/languageService/documentSymbolCollector.js +4 -1
  101. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  102. package/dist/languageService/documentSymbolProvider.js +1 -2
  103. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  104. package/dist/languageService/hoverProvider.d.ts +2 -0
  105. package/dist/languageService/hoverProvider.js +53 -43
  106. package/dist/languageService/hoverProvider.js.map +1 -1
  107. package/dist/languageService/importSorter.js +1 -1
  108. package/dist/languageService/indentationUtils.js +7 -1
  109. package/dist/languageService/indentationUtils.js.map +1 -1
  110. package/dist/languageService/insertionPointUtils.js +2 -1
  111. package/dist/languageService/insertionPointUtils.js.map +1 -1
  112. package/dist/languageService/tooltipUtils.js +2 -2
  113. package/dist/localization/localize.d.ts +0 -3
  114. package/dist/localization/localize.js +0 -1
  115. package/dist/localization/localize.js.map +1 -1
  116. package/dist/localization/package.nls.en-us.json +0 -1
  117. package/dist/pyright.js +1 -2
  118. package/dist/pyright.js.map +1 -1
  119. package/dist/tests/chainedSourceFiles.test.js +27 -0
  120. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  121. package/dist/tests/checker.test.js +1 -1
  122. package/dist/tests/checker.test.js.map +1 -1
  123. package/dist/tests/fourslash/fourslash.d.ts +5 -0
  124. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.d.ts +1 -0
  125. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js +34 -0
  126. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js.map +1 -0
  127. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.d.ts +1 -0
  128. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js +19 -0
  129. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js.map +1 -0
  130. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.d.ts +1 -0
  131. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js +39 -0
  132. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js.map +1 -0
  133. package/dist/tests/harness/fourslash/testState.d.ts +5 -0
  134. package/dist/tests/harness/fourslash/testState.js +21 -0
  135. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  136. package/dist/tests/indentationUtils.reindent.test.js +19 -0
  137. package/dist/tests/indentationUtils.reindent.test.js.map +1 -1
  138. package/dist/tests/insertionPointUtils.test.js +13 -0
  139. package/dist/tests/insertionPointUtils.test.js.map +1 -1
  140. package/dist/tests/moveSymbol.insertion.test.js +21 -0
  141. package/dist/tests/moveSymbol.insertion.test.js.map +1 -1
  142. package/dist/tests/positionUtils.test.d.ts +1 -0
  143. package/dist/tests/positionUtils.test.js +48 -0
  144. package/dist/tests/positionUtils.test.js.map +1 -0
  145. package/dist/tests/typeEvaluator1.test.js +10 -0
  146. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  147. package/dist/tests/typeEvaluator2.test.js +20 -0
  148. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  149. package/dist/tests/typeEvaluator3.test.js +9 -1
  150. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  151. package/dist/tests/typeEvaluator4.test.js +43 -115
  152. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  153. package/dist/tests/typeEvaluator5.test.js +1 -5
  154. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  155. package/dist/workspaceFactory.d.ts +1 -0
  156. package/dist/workspaceFactory.js +24 -14
  157. package/dist/workspaceFactory.js.map +1 -1
  158. package/package.json +1 -1
  159. package/dist/analyzer/aliasDeclarationUtils.d.ts +0 -9
  160. package/dist/analyzer/aliasDeclarationUtils.js +0 -157
  161. package/dist/analyzer/aliasDeclarationUtils.js.map +0 -1
@@ -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");
@@ -3170,7 +3171,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3170
3171
  !postInitType.details.declaration) {
3171
3172
  return;
3172
3173
  }
3173
- const paramListDetails = (0, typeUtils_1.getParameterListDetails)(postInitType);
3174
+ const paramListDetails = (0, parameterUtils_1.getParameterListDetails)(postInitType);
3174
3175
  // If there is an *args or **kwargs parameter or a keyword-only separator,
3175
3176
  // don't bother checking.
3176
3177
  if (paramListDetails.argsIndex !== undefined ||
@@ -3736,6 +3737,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3736
3737
  });
3737
3738
  }
3738
3739
  _validateOverrideDecoratorPresent(overrideType, baseMember) {
3740
+ var _a;
3739
3741
  // Skip this check if disabled.
3740
3742
  if (this._fileInfo.diagnosticRuleSet.reportImplicitOverride === 'none') {
3741
3743
  return;
@@ -3747,9 +3749,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3747
3749
  else if ((0, types_1.isOverloadedFunction)(overrideType)) {
3748
3750
  overrideFunction = types_1.OverloadedFunctionType.getImplementation(overrideType);
3749
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
+ }
3750
3761
  if (!(overrideFunction === null || overrideFunction === void 0 ? void 0 : overrideFunction.details.declaration) || types_1.FunctionType.isOverridden(overrideFunction)) {
3751
3762
  return;
3752
3763
  }
3764
+ // Constructors are exempt.
3765
+ if (overrideFunction.details.name === '__init__' || overrideFunction.details.name === '__new__') {
3766
+ return;
3767
+ }
3753
3768
  const funcNode = overrideFunction.details.declaration.node;
3754
3769
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportImplicitOverride, diagnosticRules_1.DiagnosticRule.reportImplicitOverride, localize_1.Localizer.Diagnostic.overrideDecoratorMissing().format({
3755
3770
  name: funcNode.name.value,
@@ -3760,6 +3775,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3760
3775
  // decorator. In this case, an error is reported because no base class has declared
3761
3776
  // a method of the same name.
3762
3777
  _validateOverrideDecoratorNotPresent(overrideType) {
3778
+ var _a;
3763
3779
  let overrideFunction;
3764
3780
  if ((0, types_1.isFunction)(overrideType)) {
3765
3781
  overrideFunction = overrideType;
@@ -3767,6 +3783,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3767
3783
  else if ((0, types_1.isOverloadedFunction)(overrideType)) {
3768
3784
  overrideFunction = types_1.OverloadedFunctionType.getImplementation(overrideType);
3769
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
+ }
3770
3795
  if (!(overrideFunction === null || overrideFunction === void 0 ? void 0 : overrideFunction.details.declaration) || !types_1.FunctionType.isOverridden(overrideFunction)) {
3771
3796
  return;
3772
3797
  }
@@ -4187,10 +4212,19 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4187
4212
  return;
4188
4213
  }
4189
4214
  // Don't enforce this for an overloaded method because the "self" param
4190
- // annotation can be used as a filter for the overload.
4215
+ // annotation can be used as a filter for the overload. This differs from
4216
+ // mypy, which enforces this check for overloads, but there are legitimate
4217
+ // uses for this in an overloaded method.
4191
4218
  if (types_1.FunctionType.isOverloaded(functionType)) {
4192
4219
  return;
4193
4220
  }
4221
+ // If the declared type is LiteralString and the class is str, exempt this case.
4222
+ // It's used in the typeshed stubs.
4223
+ if ((0, types_1.isClassInstance)(paramType) &&
4224
+ types_1.ClassType.isBuiltIn(paramType, 'LiteralString') &&
4225
+ types_1.ClassType.isBuiltIn(classType, 'str')) {
4226
+ return;
4227
+ }
4194
4228
  const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(functionType));
4195
4229
  if (!this._evaluator.assignType(paramType, expectedType, /* diag */ undefined, typeVarContext)) {
4196
4230
  // We exempt Never from this check because it has a legitimate use in this case.
@@ -4359,11 +4393,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4359
4393
  });
4360
4394
  }
4361
4395
  _addDiagnosticForRegionComment(regionComment, message) {
4362
- // extend range to include # character
4363
- const range = regionComment.comment;
4364
- range.start -= 1;
4365
- range.length += 1;
4366
- return this._evaluator.addDiagnosticForTextRange(this._fileInfo, 'error', '', message, range);
4396
+ return this._evaluator.addDiagnosticForTextRange(this._fileInfo, 'error', '', message, {
4397
+ // extend range to include # character
4398
+ start: regionComment.comment.start - 1,
4399
+ length: regionComment.comment.length + 1,
4400
+ });
4367
4401
  }
4368
4402
  }
4369
4403
  exports.Checker = Checker;