@zzzen/pyright-internal 1.2.0-dev.20240714 → 1.2.0-dev.20240721

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 (91) hide show
  1. package/dist/analyzer/checker.js +23 -21
  2. package/dist/analyzer/checker.js.map +1 -1
  3. package/dist/analyzer/codeFlowEngine.js +26 -3
  4. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  5. package/dist/analyzer/constraintSolver.js +2 -2
  6. package/dist/analyzer/constraintSolver.js.map +1 -1
  7. package/dist/analyzer/constructorTransform.d.ts +1 -2
  8. package/dist/analyzer/constructorTransform.js +4 -5
  9. package/dist/analyzer/constructorTransform.js.map +1 -1
  10. package/dist/analyzer/constructors.d.ts +2 -2
  11. package/dist/analyzer/constructors.js +49 -147
  12. package/dist/analyzer/constructors.js.map +1 -1
  13. package/dist/analyzer/dataClasses.js +1 -4
  14. package/dist/analyzer/dataClasses.js.map +1 -1
  15. package/dist/analyzer/decorators.js +1 -2
  16. package/dist/analyzer/decorators.js.map +1 -1
  17. package/dist/analyzer/operations.js +135 -86
  18. package/dist/analyzer/operations.js.map +1 -1
  19. package/dist/analyzer/parameterUtils.js +2 -1
  20. package/dist/analyzer/parameterUtils.js.map +1 -1
  21. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  22. package/dist/analyzer/parseTreeUtils.js +27 -4
  23. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  24. package/dist/analyzer/patternMatching.js +2 -2
  25. package/dist/analyzer/patternMatching.js.map +1 -1
  26. package/dist/analyzer/properties.js +4 -0
  27. package/dist/analyzer/properties.js.map +1 -1
  28. package/dist/analyzer/protocols.js +9 -5
  29. package/dist/analyzer/protocols.js.map +1 -1
  30. package/dist/analyzer/testWalker.js +13 -1
  31. package/dist/analyzer/testWalker.js.map +1 -1
  32. package/dist/analyzer/typeEvaluator.js +710 -564
  33. package/dist/analyzer/typeEvaluator.js.map +1 -1
  34. package/dist/analyzer/typeEvaluatorTypes.d.ts +7 -4
  35. package/dist/analyzer/typeEvaluatorTypes.js +3 -0
  36. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  37. package/dist/analyzer/typeGuards.js +3 -6
  38. package/dist/analyzer/typeGuards.js.map +1 -1
  39. package/dist/analyzer/typeUtils.d.ts +16 -12
  40. package/dist/analyzer/typeUtils.js +114 -46
  41. package/dist/analyzer/typeUtils.js.map +1 -1
  42. package/dist/analyzer/typedDicts.js +1 -1
  43. package/dist/analyzer/typedDicts.js.map +1 -1
  44. package/dist/analyzer/types.d.ts +11 -7
  45. package/dist/analyzer/types.js +40 -9
  46. package/dist/analyzer/types.js.map +1 -1
  47. package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
  48. package/dist/languageService/hoverProvider.js +11 -3
  49. package/dist/languageService/hoverProvider.js.map +1 -1
  50. package/dist/languageService/referencesProvider.d.ts +10 -4
  51. package/dist/languageService/referencesProvider.js +22 -10
  52. package/dist/languageService/referencesProvider.js.map +1 -1
  53. package/dist/languageService/renameProvider.js +21 -4
  54. package/dist/languageService/renameProvider.js.map +1 -1
  55. package/dist/localization/localize.d.ts +4 -3
  56. package/dist/localization/localize.js +2 -1
  57. package/dist/localization/localize.js.map +1 -1
  58. package/dist/localization/package.nls.cs.json +0 -1
  59. package/dist/localization/package.nls.de.json +0 -1
  60. package/dist/localization/package.nls.en-us.json +2 -1
  61. package/dist/localization/package.nls.es.json +0 -1
  62. package/dist/localization/package.nls.fr.json +0 -1
  63. package/dist/localization/package.nls.it.json +0 -1
  64. package/dist/localization/package.nls.ja.json +0 -1
  65. package/dist/localization/package.nls.ko.json +0 -1
  66. package/dist/localization/package.nls.pl.json +0 -1
  67. package/dist/localization/package.nls.pt-br.json +0 -1
  68. package/dist/localization/package.nls.qps-ploc.json +0 -1
  69. package/dist/localization/package.nls.ru.json +0 -1
  70. package/dist/localization/package.nls.tr.json +0 -1
  71. package/dist/localization/package.nls.zh-cn.json +0 -1
  72. package/dist/localization/package.nls.zh-tw.json +0 -1
  73. package/dist/parser/parseNodes.d.ts +3 -1
  74. package/dist/parser/parseNodes.js +3 -1
  75. package/dist/parser/parseNodes.js.map +1 -1
  76. package/dist/parser/parser.js +36 -13
  77. package/dist/parser/parser.js.map +1 -1
  78. package/dist/tests/fourslash/rename.args.fourslash.d.ts +1 -0
  79. package/dist/tests/fourslash/rename.args.fourslash.js +71 -0
  80. package/dist/tests/fourslash/rename.args.fourslash.js.map +1 -0
  81. package/dist/tests/typeEvaluator1.test.js +17 -0
  82. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  83. package/dist/tests/typeEvaluator2.test.js +4 -0
  84. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  85. package/dist/tests/typeEvaluator4.test.js +10 -6
  86. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  87. package/dist/tests/typeEvaluator6.test.js +6 -2
  88. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  89. package/dist/tests/typeEvaluator7.test.js +7 -3
  90. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  91. package/package.json +1 -1
@@ -547,7 +547,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
547
547
  let returnTypeResult;
548
548
  let returnType;
549
549
  const enclosingFunctionNode = ParseTreeUtils.getEnclosingFunction(node);
550
- const declaredReturnType = enclosingFunctionNode
550
+ let declaredReturnType = enclosingFunctionNode
551
551
  ? this._evaluator.getFunctionDeclaredReturnType(enclosingFunctionNode)
552
552
  : undefined;
553
553
  if (node.d.expr) {
@@ -577,10 +577,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
577
577
  this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.noReturnContainsReturn(), node);
578
578
  }
579
579
  else {
580
+ const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node);
581
+ declaredReturnType = (0, typeUtils_1.updateTypeWithInternalTypeVars)(declaredReturnType, liveScopes);
580
582
  let diagAddendum = new diagnostic_1.DiagnosticAddendum();
581
583
  let returnTypeMatches = false;
582
584
  if (this._evaluator.assignType(declaredReturnType, returnType, diagAddendum,
583
- /* destTypeVarContext */ undefined,
585
+ /* destTypeVarContext */ new typeVarContext_1.TypeVarContext(),
584
586
  /* srcTypeVarContext */ undefined, 128 /* AssignTypeFlags.AllowBoolTypeGuard */)) {
585
587
  returnTypeMatches = true;
586
588
  }
@@ -1851,12 +1853,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1851
1853
  if (types_1.FunctionType.isInstanceMethod(functionType) && functionType.shared.name === '__get__') {
1852
1854
  return false;
1853
1855
  }
1854
- let flags = 64 /* AssignTypeFlags.SkipFunctionReturnTypeCheck */ | 16 /* AssignTypeFlags.OverloadOverlapCheck */;
1856
+ let flags = 64 /* AssignTypeFlags.SkipReturnTypeCheck */ | 16 /* AssignTypeFlags.OverloadOverlap */;
1855
1857
  if (partialOverlap) {
1856
- flags |= 32 /* AssignTypeFlags.PartialOverloadOverlapCheck */;
1858
+ flags |= 32 /* AssignTypeFlags.PartialOverloadOverlap */;
1857
1859
  }
1858
1860
  return this._evaluator.assignType(functionType, prevOverload,
1859
- /* diag */ undefined, new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(functionType)),
1861
+ /* diag */ undefined, new typeVarContext_1.TypeVarContext(),
1860
1862
  /* srcTypeVarContext */ undefined, flags);
1861
1863
  }
1862
1864
  _isLegalOverloadImplementation(overload, implementation, diag) {
@@ -1864,7 +1866,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1864
1866
  const implTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(implementation));
1865
1867
  const overloadTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(overload));
1866
1868
  // First check the parameters to see if they are assignable.
1867
- let isLegal = this._evaluator.assignType(overload, implementation, diag, overloadTypeVarContext, implTypeVarContext, 64 /* AssignTypeFlags.SkipFunctionReturnTypeCheck */ |
1869
+ let isLegal = this._evaluator.assignType(overload, implementation, diag, overloadTypeVarContext, implTypeVarContext, 64 /* AssignTypeFlags.SkipReturnTypeCheck */ |
1868
1870
  2 /* AssignTypeFlags.ReverseTypeVarMatching */ |
1869
1871
  512 /* AssignTypeFlags.SkipSelfClsTypeCheck */);
1870
1872
  // Now check the return types.
@@ -3628,15 +3630,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3628
3630
  this._evaluator.validateCallArguments(errorNode, argList, newMemberTypeResult,
3629
3631
  /* typeVarContext */ undefined,
3630
3632
  /* skipUnknownArgCheck */ undefined,
3631
- /* inferenceContext */ undefined,
3632
- /* signatureTracker */ undefined);
3633
+ /* inferenceContext */ undefined);
3633
3634
  }
3634
3635
  if (initMemberTypeResult) {
3635
3636
  this._evaluator.validateCallArguments(errorNode, argList, initMemberTypeResult,
3636
3637
  /* typeVarContext */ undefined,
3637
3638
  /* skipUnknownArgCheck */ undefined,
3638
- /* inferenceContext */ undefined,
3639
- /* signatureTracker */ undefined);
3639
+ /* inferenceContext */ undefined);
3640
3640
  }
3641
3641
  }
3642
3642
  }
@@ -4047,11 +4047,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4047
4047
  if (!this._evaluator.assignType(newMemberType, initMemberType,
4048
4048
  /* diag */ undefined,
4049
4049
  /* destTypeVarContext */ undefined,
4050
- /* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.SkipFunctionReturnTypeCheck */) ||
4050
+ /* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.SkipReturnTypeCheck */) ||
4051
4051
  !this._evaluator.assignType(initMemberType, newMemberType,
4052
4052
  /* diag */ undefined,
4053
4053
  /* destTypeVarContext */ undefined,
4054
- /* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.SkipFunctionReturnTypeCheck */)) {
4054
+ /* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.SkipReturnTypeCheck */)) {
4055
4055
  const displayOnInit = types_1.ClassType.isSameGenericClass(initMethodResult.classType, classType);
4056
4056
  const initDecl = initMemberType.shared.declaration;
4057
4057
  const newDecl = newMemberType.shared.declaration;
@@ -4208,10 +4208,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4208
4208
  return;
4209
4209
  }
4210
4210
  let overriddenType = this._evaluator.getEffectiveTypeOfSymbol(overriddenClassAndSymbol.symbol);
4211
- overriddenType = (0, typeUtils_1.partiallySpecializeType)(overriddenType, overriddenClassAndSymbol.classType);
4211
+ overriddenType = (0, typeUtils_1.partiallySpecializeType)(overriddenType, overriddenClassAndSymbol.classType, this._evaluator.getTypeClassType());
4212
4212
  const overrideSymbol = overrideClassAndSymbol.symbol;
4213
4213
  let overrideType = this._evaluator.getEffectiveTypeOfSymbol(overrideSymbol);
4214
- overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, overrideClassAndSymbol.classType);
4214
+ overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, overrideClassAndSymbol.classType, this._evaluator.getTypeClassType());
4215
4215
  const childOverrideSymbol = types_1.ClassType.getSymbolTable(childClassType).get(memberName);
4216
4216
  const childOverrideType = childOverrideSymbol
4217
4217
  ? this._evaluator.getEffectiveTypeOfSymbol(childOverrideSymbol)
@@ -4352,7 +4352,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4352
4352
  const subclassPropMethod = methodAccessor(overrideSymbolType);
4353
4353
  // Is the method present on the base class but missing in the subclass?
4354
4354
  if (baseClassPropMethod) {
4355
- const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, overriddenClassType);
4355
+ const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, overriddenClassType, this._evaluator.getTypeClassType());
4356
4356
  if ((0, types_1.isFunction)(baseClassMethodType)) {
4357
4357
  if (!subclassPropMethod) {
4358
4358
  // The method is missing.
@@ -4373,7 +4373,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4373
4373
  }
4374
4374
  }
4375
4375
  else {
4376
- const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, overrideClassType);
4376
+ const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, overrideClassType, this._evaluator.getTypeClassType());
4377
4377
  if ((0, types_1.isFunction)(subclassMethodType)) {
4378
4378
  if (!this._evaluator.validateOverrideMethod(baseClassMethodType, subclassMethodType, overrideClassType, diagAddendum.createAddendum())) {
4379
4379
  diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodIncompatible().format({
@@ -4665,8 +4665,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4665
4665
  }
4666
4666
  const baseClass = baseClassAndSymbol.classType;
4667
4667
  const childClassSelf = types_1.ClassType.cloneAsInstance((0, typeUtils_1.selfSpecializeClass)(childClassType));
4668
- const baseType = (0, typeUtils_1.partiallySpecializeType)(this._evaluator.getEffectiveTypeOfSymbol(baseClassAndSymbol.symbol), baseClass, childClassSelf);
4669
- overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, childClassType, childClassSelf);
4668
+ const baseType = (0, typeUtils_1.partiallySpecializeType)(this._evaluator.getEffectiveTypeOfSymbol(baseClassAndSymbol.symbol), baseClass, this._evaluator.getTypeClassType(), childClassSelf);
4669
+ overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, childClassType, this._evaluator.getTypeClassType(), childClassSelf);
4670
4670
  if ((0, types_1.isFunction)(baseType) || (0, types_1.isOverloadedFunction)(baseType)) {
4671
4671
  const diagAddendum = new diagnostic_1.DiagnosticAddendum();
4672
4672
  // Determine whether this is an attempt to override a method marked @final.
@@ -4912,7 +4912,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4912
4912
  const subclassPropMethod = methodAccessor(childType);
4913
4913
  // Is the method present on the base class but missing in the subclass?
4914
4914
  if (baseClassPropMethod) {
4915
- const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, baseClassType);
4915
+ const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, baseClassType, this._evaluator.getTypeClassType());
4916
4916
  if ((0, types_1.isFunction)(baseClassMethodType)) {
4917
4917
  if (!subclassPropMethod) {
4918
4918
  // The method is missing.
@@ -4933,7 +4933,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4933
4933
  }
4934
4934
  }
4935
4935
  else {
4936
- const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, childClassType);
4936
+ const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, childClassType, this._evaluator.getTypeClassType());
4937
4937
  if ((0, types_1.isFunction)(subclassMethodType)) {
4938
4938
  if (!this._evaluator.validateOverrideMethod(baseClassMethodType, subclassMethodType, childClassType, diagAddendum.createAddendum())) {
4939
4939
  diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodIncompatible().format({
@@ -5193,10 +5193,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
5193
5193
  if (!functionTypeResult) {
5194
5194
  return;
5195
5195
  }
5196
- const declaredReturnType = types_1.FunctionType.getEffectiveReturnType(functionTypeResult.functionType);
5196
+ let declaredReturnType = types_1.FunctionType.getEffectiveReturnType(functionTypeResult.functionType);
5197
5197
  if (!declaredReturnType) {
5198
5198
  return;
5199
5199
  }
5200
+ const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node);
5201
+ declaredReturnType = (0, typeUtils_1.updateTypeWithInternalTypeVars)(declaredReturnType, liveScopes);
5200
5202
  let generatorType;
5201
5203
  if (!enclosingFunctionNode.d.isAsync &&
5202
5204
  (0, types_1.isClassInstance)(declaredReturnType) &&