@zzzen/pyright-internal 1.2.0-dev.20240407 → 1.2.0-dev.20240414

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 (95) hide show
  1. package/dist/analyzer/binder.js +13 -0
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.js +21 -12
  4. package/dist/analyzer/checker.js.map +1 -1
  5. package/dist/analyzer/constraintSolver.js +24 -8
  6. package/dist/analyzer/constraintSolver.js.map +1 -1
  7. package/dist/analyzer/constructors.d.ts +2 -2
  8. package/dist/analyzer/constructors.js +162 -109
  9. package/dist/analyzer/constructors.js.map +1 -1
  10. package/dist/analyzer/dataClasses.js +12 -1
  11. package/dist/analyzer/dataClasses.js.map +1 -1
  12. package/dist/analyzer/importResolver.js +1 -1
  13. package/dist/analyzer/importResolver.js.map +1 -1
  14. package/dist/analyzer/importStatementUtils.js +1 -1
  15. package/dist/analyzer/importStatementUtils.js.map +1 -1
  16. package/dist/analyzer/parseTreeUtils.d.ts +2 -0
  17. package/dist/analyzer/parseTreeUtils.js +24 -1
  18. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  19. package/dist/analyzer/properties.js +2 -2
  20. package/dist/analyzer/protocols.js +5 -5
  21. package/dist/analyzer/protocols.js.map +1 -1
  22. package/dist/analyzer/pyTypedUtils.d.ts +4 -0
  23. package/dist/analyzer/pyTypedUtils.js +17 -3
  24. package/dist/analyzer/pyTypedUtils.js.map +1 -1
  25. package/dist/analyzer/symbolUtils.d.ts +1 -1
  26. package/dist/analyzer/symbolUtils.js +3 -3
  27. package/dist/analyzer/symbolUtils.js.map +1 -1
  28. package/dist/analyzer/typeEvaluator.js +148 -70
  29. package/dist/analyzer/typeEvaluator.js.map +1 -1
  30. package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -1
  31. package/dist/analyzer/typeGuards.js +105 -57
  32. package/dist/analyzer/typeGuards.js.map +1 -1
  33. package/dist/analyzer/typeUtils.d.ts +1 -1
  34. package/dist/analyzer/typeUtils.js +20 -17
  35. package/dist/analyzer/typeUtils.js.map +1 -1
  36. package/dist/analyzer/typeVarContext.js +1 -1
  37. package/dist/analyzer/typeVarContext.js.map +1 -1
  38. package/dist/analyzer/typedDicts.js +1 -1
  39. package/dist/analyzer/typedDicts.js.map +1 -1
  40. package/dist/analyzer/types.d.ts +2 -2
  41. package/dist/analyzer/types.js +28 -8
  42. package/dist/analyzer/types.js.map +1 -1
  43. package/dist/backgroundAnalysisBase.js +3 -1
  44. package/dist/backgroundAnalysisBase.js.map +1 -1
  45. package/dist/backgroundThreadBase.d.ts +5 -5
  46. package/dist/backgroundThreadBase.js +4 -4
  47. package/dist/backgroundThreadBase.js.map +1 -1
  48. package/dist/languageService/completionProvider.d.ts +0 -2
  49. package/dist/languageService/completionProvider.js +7 -28
  50. package/dist/languageService/completionProvider.js.map +1 -1
  51. package/dist/languageService/symbolIndexer.js +1 -1
  52. package/dist/languageService/symbolIndexer.js.map +1 -1
  53. package/dist/languageService/tooltipUtils.d.ts +1 -1
  54. package/dist/languageService/tooltipUtils.js +4 -4
  55. package/dist/localization/localize.d.ts +4 -0
  56. package/dist/localization/localize.js +4 -0
  57. package/dist/localization/localize.js.map +1 -1
  58. package/dist/localization/package.nls.cs.json +1 -0
  59. package/dist/localization/package.nls.de.json +2 -1
  60. package/dist/localization/package.nls.en-us.json +27 -23
  61. package/dist/localization/package.nls.es.json +5 -4
  62. package/dist/localization/package.nls.fr.json +5 -4
  63. package/dist/localization/package.nls.it.json +2 -1
  64. package/dist/localization/package.nls.ja.json +1 -0
  65. package/dist/localization/package.nls.ko.json +4 -3
  66. package/dist/localization/package.nls.pl.json +4 -3
  67. package/dist/localization/package.nls.pt-br.json +1 -0
  68. package/dist/localization/package.nls.qps-ploc.json +1 -0
  69. package/dist/localization/package.nls.ru.json +2 -1
  70. package/dist/localization/package.nls.tr.json +3 -2
  71. package/dist/localization/package.nls.zh-cn.json +2 -1
  72. package/dist/localization/package.nls.zh-tw.json +1 -0
  73. package/dist/parser/parser.js +3 -2
  74. package/dist/parser/parser.js.map +1 -1
  75. package/dist/parser/tokenizer.js +1 -0
  76. package/dist/parser/tokenizer.js.map +1 -1
  77. package/dist/parser/tokenizerTypes.d.ts +1 -0
  78. package/dist/parser/tokenizerTypes.js +1 -0
  79. package/dist/parser/tokenizerTypes.js.map +1 -1
  80. package/dist/tests/harness/fourslash/testState.d.ts +1 -1
  81. package/dist/tests/harness/fourslash/testState.js +2 -2
  82. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  83. package/dist/tests/harness/fourslash/workspaceEditTestUtils.d.ts +2 -2
  84. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +5 -5
  85. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
  86. package/dist/tests/tokenizer.test.js +4 -4
  87. package/dist/tests/tokenizer.test.js.map +1 -1
  88. package/dist/tests/typeEvaluator1.test.js +5 -1
  89. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  90. package/dist/tests/typeEvaluator2.test.js +4 -0
  91. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  92. package/dist/tests/typeEvaluator3.test.js +11 -7
  93. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  94. package/dist/tests/typeEvaluator4.test.js +1 -1
  95. package/package.json +2 -2
@@ -2189,7 +2189,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2189
2189
  // If there's one or more declaration with a declared type,
2190
2190
  // all other declarations should match. The only exception is
2191
2191
  // for functions that have an overload.
2192
- const primaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(symbol);
2192
+ const primaryDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(symbol);
2193
2193
  // If there's no declaration with a declared type, we're done.
2194
2194
  if (!primaryDecl) {
2195
2195
  return;
@@ -4085,8 +4085,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4085
4085
  ? this._evaluator.getEffectiveTypeOfSymbol(childOverrideSymbol)
4086
4086
  : undefined;
4087
4087
  let diag;
4088
- const overrideDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(overrideClassAndSymbol.symbol);
4089
- const overriddenDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(overriddenClassAndSymbol.symbol);
4088
+ const overrideDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(overrideClassAndSymbol.symbol);
4089
+ const overriddenDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(overriddenClassAndSymbol.symbol);
4090
4090
  if ((0, types_1.isFunction)(overriddenType) || (0, types_1.isOverloadedFunction)(overriddenType)) {
4091
4091
  const diagAddendum = new diagnostic_1.DiagnosticAddendum();
4092
4092
  let overrideFunction;
@@ -4134,7 +4134,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4134
4134
  // This check can be expensive, so don't perform it if the corresponding
4135
4135
  // rule is disabled.
4136
4136
  if (this._fileInfo.diagnosticRuleSet.reportIncompatibleVariableOverride !== 'none') {
4137
- const primaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(overriddenClassAndSymbol.symbol);
4137
+ const primaryDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(overriddenClassAndSymbol.symbol);
4138
4138
  let isInvariant = (primaryDecl === null || primaryDecl === void 0 ? void 0 : primaryDecl.type) === 1 /* DeclarationType.Variable */ && !primaryDecl.isFinal;
4139
4139
  // If the entry is a member of a frozen dataclass, it is immutable,
4140
4140
  // so it does not need to be invariant.
@@ -4209,7 +4209,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4209
4209
  // but subsequent ones are, an error should be reported.
4210
4210
  _validateOverloadDecoratorConsistency(classType) {
4211
4211
  types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
4212
- const primaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(symbol);
4212
+ const primaryDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(symbol);
4213
4213
  if (!primaryDecl || primaryDecl.type !== 5 /* DeclarationType.Function */) {
4214
4214
  return;
4215
4215
  }
@@ -4489,13 +4489,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4489
4489
  }
4490
4490
  }
4491
4491
  if (reportFinalMethodOverride) {
4492
- const decl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(overrideSymbol);
4492
+ const decl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(overrideSymbol);
4493
4493
  if (decl && decl.type === 5 /* DeclarationType.Function */) {
4494
4494
  const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.finalMethodOverride().format({
4495
4495
  name: memberName,
4496
4496
  className: baseClass.details.name,
4497
4497
  }), decl.node.name);
4498
- const origDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(baseClassAndSymbol.symbol);
4498
+ const origDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(baseClassAndSymbol.symbol);
4499
4499
  if (diag && origDecl) {
4500
4500
  diag.addRelatedInfo(localize_1.LocAddendum.finalMethod(), origDecl.uri, origDecl.range);
4501
4501
  }
@@ -4516,13 +4516,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4516
4516
  if (!this._evaluator.validateOverrideMethod(baseType, overrideType, childClassType, diagAddendum, enforceParamNameMatch)) {
4517
4517
  const decl = (0, types_1.isFunction)(overrideType) && overrideType.details.declaration
4518
4518
  ? overrideType.details.declaration
4519
- : (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(overrideSymbol);
4519
+ : (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(overrideSymbol);
4520
4520
  if (decl) {
4521
4521
  const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.incompatibleMethodOverride().format({
4522
4522
  name: memberName,
4523
4523
  className: baseClass.details.name,
4524
4524
  }) + diagAddendum.getString(), (_a = (0, declarationUtils_1.getNameNodeForDeclaration)(decl)) !== null && _a !== void 0 ? _a : decl.node);
4525
- const origDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(baseClassAndSymbol.symbol);
4525
+ const origDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(baseClassAndSymbol.symbol);
4526
4526
  if (diag && origDecl) {
4527
4527
  diag.addRelatedInfo(localize_1.LocAddendum.overriddenMethod(), origDecl.uri, origDecl.range);
4528
4528
  }
@@ -4543,7 +4543,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4543
4543
  className: baseClass.details.name,
4544
4544
  type: this._evaluator.printType(overrideType),
4545
4545
  }), (_b = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _b !== void 0 ? _b : lastDecl.node);
4546
- const origDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(baseClassAndSymbol.symbol);
4546
+ const origDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(baseClassAndSymbol.symbol);
4547
4547
  if (diag && origDecl) {
4548
4548
  diag.addRelatedInfo(localize_1.LocAddendum.overriddenMethod(), origDecl.uri, origDecl.range);
4549
4549
  }
@@ -4683,7 +4683,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4683
4683
  name: memberName,
4684
4684
  className: baseClass.details.name,
4685
4685
  }) + diagAddendum.getString(), (_h = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _h !== void 0 ? _h : lastDecl.node);
4686
- const origDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(baseClassAndSymbol.symbol);
4686
+ const origDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(baseClassAndSymbol.symbol);
4687
4687
  if (diag && origDecl) {
4688
4688
  diag.addRelatedInfo(localize_1.LocAddendum.overriddenSymbol(), origDecl.uri, origDecl.range);
4689
4689
  }
@@ -4750,7 +4750,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4750
4750
  name: memberName,
4751
4751
  className: baseClass.details.name,
4752
4752
  }), (_m = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _m !== void 0 ? _m : lastDecl.node);
4753
- const origDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(baseClassAndSymbol.symbol);
4753
+ const origDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(baseClassAndSymbol.symbol);
4754
4754
  if (diag && origDecl) {
4755
4755
  diag.addRelatedInfo(localize_1.LocAddendum.overriddenSymbol(), origDecl.uri, origDecl.range);
4756
4756
  }
@@ -4926,6 +4926,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4926
4926
  if (!paramInfo.typeAnnotation || !paramInfo.name) {
4927
4927
  return;
4928
4928
  }
4929
+ // If this is an __init__ method, we need to specifically check for the
4930
+ // use of class-scoped TypeVars, which are not allowed in this context
4931
+ // according to the typing spec.
4932
+ if (functionType.details.name === '__init__' && functionType.details.methodClass) {
4933
+ const typeVars = (0, typeUtils_1.getTypeVarArgumentsRecursive)(paramInfo.type);
4934
+ if (typeVars.some((typeVar) => { var _a; return typeVar.scopeId === ((_a = functionType.details.methodClass) === null || _a === void 0 ? void 0 : _a.details.typeVarScopeId); })) {
4935
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.initMethodSelfParamTypeVar(), paramInfo.typeAnnotation);
4936
+ }
4937
+ }
4929
4938
  // If this is a protocol class, the self and cls parameters can be bound
4930
4939
  // to something other than the class.
4931
4940
  if (types_1.ClassType.isProtocolClass(classType)) {