@zzzen/pyright-internal 1.2.0-dev.20250112 → 1.2.0-dev.20250126

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 (103) hide show
  1. package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
  2. package/dist/analyzer/backgroundAnalysisProgram.js +3 -0
  3. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  4. package/dist/analyzer/binder.js +7 -1
  5. package/dist/analyzer/binder.js.map +1 -1
  6. package/dist/analyzer/checker.d.ts +1 -1
  7. package/dist/analyzer/checker.js +34 -42
  8. package/dist/analyzer/checker.js.map +1 -1
  9. package/dist/analyzer/constructors.js +1 -1
  10. package/dist/analyzer/constructors.js.map +1 -1
  11. package/dist/analyzer/enums.js +140 -126
  12. package/dist/analyzer/enums.js.map +1 -1
  13. package/dist/analyzer/importResolver.d.ts +3 -2
  14. package/dist/analyzer/importResolver.js +80 -79
  15. package/dist/analyzer/importResolver.js.map +1 -1
  16. package/dist/analyzer/pythonPathUtils.d.ts +2 -0
  17. package/dist/analyzer/pythonPathUtils.js +20 -11
  18. package/dist/analyzer/pythonPathUtils.js.map +1 -1
  19. package/dist/analyzer/service.js +2 -5
  20. package/dist/analyzer/service.js.map +1 -1
  21. package/dist/analyzer/typeCacheUtils.js +1 -1
  22. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  23. package/dist/analyzer/typeEvaluator.js +72 -44
  24. package/dist/analyzer/typeEvaluator.js.map +1 -1
  25. package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -1
  26. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  27. package/dist/analyzer/typeGuards.js +24 -17
  28. package/dist/analyzer/typeGuards.js.map +1 -1
  29. package/dist/backgroundAnalysis.js +2 -0
  30. package/dist/backgroundAnalysis.js.map +1 -1
  31. package/dist/backgroundThreadBase.d.ts +1 -0
  32. package/dist/backgroundThreadBase.js +5 -8
  33. package/dist/backgroundThreadBase.js.map +1 -1
  34. package/dist/common/fullAccessHost.d.ts +1 -1
  35. package/dist/common/fullAccessHost.js +1 -1
  36. package/dist/common/languageServerInterface.d.ts +1 -1
  37. package/dist/common/realFileSystem.d.ts +1 -1
  38. package/dist/common/realFileSystem.js +10 -2
  39. package/dist/common/realFileSystem.js.map +1 -1
  40. package/dist/common/serviceProvider.d.ts +1 -0
  41. package/dist/common/serviceProvider.js +8 -0
  42. package/dist/common/serviceProvider.js.map +1 -1
  43. package/dist/languageServerBase.d.ts +3 -3
  44. package/dist/languageServerBase.js +7 -4
  45. package/dist/languageServerBase.js.map +1 -1
  46. package/dist/languageService/analyzerServiceExecutor.js +4 -1
  47. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  48. package/dist/languageService/hoverProvider.js +5 -3
  49. package/dist/languageService/hoverProvider.js.map +1 -1
  50. package/dist/languageService/tooltipUtils.d.ts +1 -1
  51. package/dist/languageService/tooltipUtils.js +14 -1
  52. package/dist/languageService/tooltipUtils.js.map +1 -1
  53. package/dist/localization/localize.d.ts +9 -7
  54. package/dist/localization/localize.js +6 -2
  55. package/dist/localization/localize.js.map +1 -1
  56. package/dist/localization/package.nls.cs.json +8 -7
  57. package/dist/localization/package.nls.de.json +8 -7
  58. package/dist/localization/package.nls.en-us.json +21 -5
  59. package/dist/localization/package.nls.es.json +8 -7
  60. package/dist/localization/package.nls.fr.json +8 -7
  61. package/dist/localization/package.nls.it.json +8 -7
  62. package/dist/localization/package.nls.ja.json +8 -7
  63. package/dist/localization/package.nls.ko.json +8 -7
  64. package/dist/localization/package.nls.pl.json +6 -5
  65. package/dist/localization/package.nls.pt-br.json +8 -7
  66. package/dist/localization/package.nls.qps-ploc.json +4 -3
  67. package/dist/localization/package.nls.ru.json +8 -7
  68. package/dist/localization/package.nls.tr.json +6 -5
  69. package/dist/localization/package.nls.zh-cn.json +8 -7
  70. package/dist/localization/package.nls.zh-tw.json +8 -7
  71. package/dist/pyright.js +11 -4
  72. package/dist/pyright.js.map +1 -1
  73. package/dist/server.d.ts +2 -1
  74. package/dist/server.js +1 -1
  75. package/dist/server.js.map +1 -1
  76. package/dist/tests/config.test.js +451 -427
  77. package/dist/tests/config.test.js.map +1 -1
  78. package/dist/tests/harness/fourslash/testState.d.ts +3 -1
  79. package/dist/tests/harness/fourslash/testState.js +23 -23
  80. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  81. package/dist/tests/hoverProvider.test.js +51 -0
  82. package/dist/tests/hoverProvider.test.js.map +1 -1
  83. package/dist/tests/importResolver.test.js +537 -527
  84. package/dist/tests/importResolver.test.js.map +1 -1
  85. package/dist/tests/sourceFile.test.js +1 -0
  86. package/dist/tests/sourceFile.test.js.map +1 -1
  87. package/dist/tests/testUtils.js +1 -0
  88. package/dist/tests/testUtils.js.map +1 -1
  89. package/dist/tests/typeEvaluator1.test.js +1 -1
  90. package/dist/tests/typeEvaluator3.test.js +5 -1
  91. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  92. package/dist/tests/typeEvaluator5.test.js +1 -1
  93. package/dist/tests/typeEvaluator6.test.js +8 -0
  94. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  95. package/dist/tests/typeEvaluator7.test.js +4 -0
  96. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  97. package/dist/tests/uri.test.js +3 -0
  98. package/dist/tests/uri.test.js.map +1 -1
  99. package/dist/tests/zipfs.test.js +2 -0
  100. package/dist/tests/zipfs.test.js.map +1 -1
  101. package/dist/workspaceFactory.d.ts +2 -1
  102. package/dist/workspaceFactory.js.map +1 -1
  103. package/package.json +1 -1
@@ -4128,25 +4128,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4128
4128
  const overriddenDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(overriddenClassAndSymbol.symbol);
4129
4129
  if ((0, types_1.isFunction)(overriddenType) || (0, types_1.isOverloaded)(overriddenType)) {
4130
4130
  const diagAddendum = new diagnostic_1.DiagnosticAddendum();
4131
- let overrideFunction;
4132
- if ((0, types_1.isFunction)(overrideType)) {
4133
- overrideFunction = overrideType;
4134
- }
4135
- else if ((0, types_1.isOverloaded)(overrideType)) {
4136
- // Use the last overload.
4137
- const impl = types_1.OverloadedType.getImplementation(overrideType);
4138
- // If the last overload isn't an implementation, skip the check for this symbol.
4139
- if (!impl || !(0, types_1.isFunction)(impl)) {
4140
- return;
4141
- }
4142
- overrideFunction = impl;
4143
- }
4144
- if (overrideFunction) {
4145
- if (!this._evaluator.validateOverrideMethod(overriddenType, overrideFunction,
4131
+ if ((0, types_1.isFunction)(overrideType) || (0, types_1.isOverloaded)(overrideType)) {
4132
+ if (!this._evaluator.validateOverrideMethod(overriddenType, overrideType,
4146
4133
  /* baseClass */ undefined, diagAddendum,
4147
4134
  /* enforceParamNameMatch */ true)) {
4148
- const decl = overrideFunction.shared.declaration;
4149
- if (decl && decl.type === 5 /* DeclarationType.Function */) {
4135
+ if (overrideDecl && overrideDecl.type === 5 /* DeclarationType.Function */) {
4150
4136
  diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.baseClassMethodTypeIncompatible().format({
4151
4137
  classType: childClassType.shared.name,
4152
4138
  name: memberName,
@@ -4323,7 +4309,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4323
4309
  }
4324
4310
  const overloads = types_1.OverloadedType.getOverloads(typeOfSymbol);
4325
4311
  const implementation = types_1.OverloadedType.getImplementation(typeOfSymbol);
4326
- this._validateOverloadFinalConsistency(overloads, implementation);
4312
+ this._validateOverloadFinalOverride(overloads, implementation);
4327
4313
  this._validateOverloadAbstractConsistency(overloads, implementation);
4328
4314
  });
4329
4315
  }
@@ -4359,33 +4345,31 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4359
4345
  }
4360
4346
  });
4361
4347
  }
4362
- _validateOverloadFinalConsistency(overloads, implementation) {
4363
- // If there's an implementation, it will determine whether the
4364
- // function is @final.
4365
- if (implementation && (0, types_1.isFunction)(implementation)) {
4366
- // If one or more of the overloads is marked @final but the
4367
- // implementation is not, report an error.
4368
- if (!types_1.FunctionType.isFinal(implementation)) {
4369
- overloads.forEach((overload) => {
4370
- if (types_1.FunctionType.isFinal(overload) && overload.shared.declaration?.node) {
4371
- this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportInconsistentOverload, localize_1.LocMessage.overloadFinalInconsistencyImpl().format({
4372
- name: overload.shared.name,
4373
- }), (0, declarationUtils_1.getNameNodeForDeclaration)(overload.shared.declaration) ?? overload.shared.declaration.node);
4374
- }
4375
- });
4376
- }
4377
- return;
4378
- }
4379
- if (overloads.length > 0 && !types_1.FunctionType.isFinal(overloads[0])) {
4380
- overloads.slice(1).forEach((overload, index) => {
4348
+ _validateOverloadFinalOverride(overloads, implementation) {
4349
+ // If there's an implementation, the overloads are not allowed to be marked final or override.
4350
+ if (implementation) {
4351
+ overloads.forEach((overload) => {
4381
4352
  if (types_1.FunctionType.isFinal(overload) && overload.shared.declaration?.node) {
4382
- this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportInconsistentOverload, localize_1.LocMessage.overloadFinalInconsistencyNoImpl().format({
4383
- name: overload.shared.name,
4384
- index: index + 2,
4385
- }), (0, declarationUtils_1.getNameNodeForDeclaration)(overload.shared.declaration) ?? overload.shared.declaration.node);
4353
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportInconsistentOverload, localize_1.LocMessage.overloadFinalImpl(), (0, declarationUtils_1.getNameNodeForDeclaration)(overload.shared.declaration) ?? overload.shared.declaration.node);
4354
+ }
4355
+ if (types_1.FunctionType.isOverridden(overload) && overload.shared.declaration?.node) {
4356
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportInconsistentOverload, localize_1.LocMessage.overloadOverrideImpl(), (0, declarationUtils_1.getNameNodeForDeclaration)(overload.shared.declaration) ?? overload.shared.declaration.node);
4386
4357
  }
4387
4358
  });
4359
+ return;
4360
+ }
4361
+ // If there's not an implementation, only the first overload can be marked final.
4362
+ if (overloads.length === 0) {
4363
+ return;
4388
4364
  }
4365
+ overloads.slice(1).forEach((overload, index) => {
4366
+ if (types_1.FunctionType.isFinal(overload) && overload.shared.declaration?.node) {
4367
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportInconsistentOverload, localize_1.LocMessage.overloadFinalNoImpl(), (0, declarationUtils_1.getNameNodeForDeclaration)(overload.shared.declaration) ?? overload.shared.declaration.node);
4368
+ }
4369
+ if (types_1.FunctionType.isOverridden(overload) && overload.shared.declaration?.node) {
4370
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportInconsistentOverload, localize_1.LocMessage.overloadOverrideNoImpl(), (0, declarationUtils_1.getNameNodeForDeclaration)(overload.shared.declaration) ?? overload.shared.declaration.node);
4371
+ }
4372
+ });
4389
4373
  }
4390
4374
  // For a TypedDict class that derives from another TypedDict class
4391
4375
  // that is closed, verify that any new keys are compatible with the
@@ -4576,6 +4560,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4576
4560
  if (impl && (0, types_1.isFunction)(impl)) {
4577
4561
  overrideFunction = impl;
4578
4562
  }
4563
+ // If there is no implementation present, use the first overload.
4564
+ if (!impl) {
4565
+ const overloads = types_1.OverloadedType.getOverloads(overrideType);
4566
+ if (overloads.length > 0) {
4567
+ overrideFunction = overloads[0];
4568
+ }
4569
+ }
4579
4570
  }
4580
4571
  else if ((0, types_1.isClassInstance)(overrideType) && types_1.ClassType.isPropertyClass(overrideType)) {
4581
4572
  if (overrideType.priv.fgetInfo) {
@@ -4613,10 +4604,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4613
4604
  }
4614
4605
  const baseClass = baseClassAndSymbol.classType;
4615
4606
  const childClassSelf = types_1.ClassType.cloneAsInstance((0, typeUtils_1.selfSpecializeClass)(childClassType, { useBoundTypeVars: true }));
4616
- const baseType = (0, typeUtils_1.partiallySpecializeType)(this._evaluator.getEffectiveTypeOfSymbol(baseClassAndSymbol.symbol), baseClass, this._evaluator.getTypeClassType(), childClassSelf);
4607
+ let baseType = (0, typeUtils_1.partiallySpecializeType)(this._evaluator.getEffectiveTypeOfSymbol(baseClassAndSymbol.symbol), baseClass, this._evaluator.getTypeClassType(), childClassSelf);
4617
4608
  overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, childClassType, this._evaluator.getTypeClassType(), childClassSelf);
4618
4609
  if (childClassType.shared.typeVarScopeId) {
4619
4610
  overrideType = (0, typeUtils_1.makeTypeVarsBound)(overrideType, [childClassType.shared.typeVarScopeId]);
4611
+ baseType = (0, typeUtils_1.makeTypeVarsBound)(baseType, [childClassType.shared.typeVarScopeId]);
4620
4612
  }
4621
4613
  if ((0, types_1.isFunction)(baseType) || (0, types_1.isOverloaded)(baseType)) {
4622
4614
  const diagAddendum = new diagnostic_1.DiagnosticAddendum();