@zzzen/pyright-internal 1.2.0-dev.20240616 → 1.2.0-dev.20240623

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 (68) hide show
  1. package/dist/analyzer/cacheManager.js +3 -0
  2. package/dist/analyzer/cacheManager.js.map +1 -1
  3. package/dist/analyzer/checker.d.ts +3 -0
  4. package/dist/analyzer/checker.js +161 -82
  5. package/dist/analyzer/checker.js.map +1 -1
  6. package/dist/analyzer/codeFlowEngine.d.ts +1 -1
  7. package/dist/analyzer/codeFlowEngine.js +7 -12
  8. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  9. package/dist/analyzer/dataClasses.d.ts +2 -1
  10. package/dist/analyzer/dataClasses.js +5 -2
  11. package/dist/analyzer/dataClasses.js.map +1 -1
  12. package/dist/analyzer/parseTreeUtils.js +18 -2
  13. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  14. package/dist/analyzer/patternMatching.js +11 -2
  15. package/dist/analyzer/patternMatching.js.map +1 -1
  16. package/dist/analyzer/typeEvaluator.js +90 -124
  17. package/dist/analyzer/typeEvaluator.js.map +1 -1
  18. package/dist/analyzer/typeEvaluatorTypes.d.ts +0 -1
  19. package/dist/analyzer/typeUtils.js +4 -2
  20. package/dist/analyzer/typeUtils.js.map +1 -1
  21. package/dist/analyzer/types.js +9 -6
  22. package/dist/analyzer/types.js.map +1 -1
  23. package/dist/common/diagnostic.d.ts +1 -0
  24. package/dist/common/diagnostic.js +5 -0
  25. package/dist/common/diagnostic.js.map +1 -1
  26. package/dist/common/docStringService.d.ts +2 -1
  27. package/dist/common/docStringService.js.map +1 -1
  28. package/dist/common/textRangeCollection.d.ts +1 -1
  29. package/dist/common/textRangeCollection.js +14 -14
  30. package/dist/common/textRangeCollection.js.map +1 -1
  31. package/dist/languageService/autoImporter.js +2 -2
  32. package/dist/languageService/autoImporter.js.map +1 -1
  33. package/dist/languageService/hoverProvider.d.ts +1 -1
  34. package/dist/languageService/hoverProvider.js +11 -7
  35. package/dist/languageService/hoverProvider.js.map +1 -1
  36. package/dist/languageService/signatureHelpProvider.js +19 -2
  37. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  38. package/dist/localization/localize.d.ts +1 -0
  39. package/dist/localization/localize.js +1 -0
  40. package/dist/localization/localize.js.map +1 -1
  41. package/dist/localization/package.nls.cs.json +2 -0
  42. package/dist/localization/package.nls.de.json +2 -0
  43. package/dist/localization/package.nls.en-us.json +1 -0
  44. package/dist/localization/package.nls.es.json +2 -0
  45. package/dist/localization/package.nls.fr.json +2 -0
  46. package/dist/localization/package.nls.it.json +2 -0
  47. package/dist/localization/package.nls.ja.json +2 -0
  48. package/dist/localization/package.nls.ko.json +2 -0
  49. package/dist/localization/package.nls.pl.json +2 -0
  50. package/dist/localization/package.nls.pt-br.json +2 -0
  51. package/dist/localization/package.nls.qps-ploc.json +2 -0
  52. package/dist/localization/package.nls.ru.json +2 -0
  53. package/dist/localization/package.nls.tr.json +2 -0
  54. package/dist/localization/package.nls.zh-cn.json +2 -0
  55. package/dist/localization/package.nls.zh-tw.json +2 -0
  56. package/dist/tests/checker.test.js +2 -2
  57. package/dist/tests/fourslash/hover.docstring.alias.fourslash.js +5 -5
  58. package/dist/tests/fourslash/hover.docstring.alias.fourslash.js.map +1 -1
  59. package/dist/tests/fourslash/hover.init.fourslash.js +1 -1
  60. package/dist/tests/fourslash/hover.init.fourslash.js.map +1 -1
  61. package/dist/tests/fourslash/hover.variable.docString.fourslash.js +1 -1
  62. package/dist/tests/fourslash/hover.variable.docString.fourslash.js.map +1 -1
  63. package/dist/tests/parseTreeUtils.test.js +89 -0
  64. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  65. package/dist/tests/typeEvaluator1.test.js +1 -1
  66. package/dist/tests/typeEvaluator3.test.js +1 -1
  67. package/dist/tests/typeEvaluator7.test.js +1 -1
  68. package/package.json +1 -1
@@ -88,6 +88,9 @@ class CacheManager {
88
88
  }
89
89
  // Returns a ratio of used bytes to total bytes.
90
90
  getUsedHeapRatio(console) {
91
+ if (this._pausedCount > 0) {
92
+ return -1;
93
+ }
91
94
  const heapStats = (0, memUtils_1.getHeapStatistics)();
92
95
  let usage = this._getTotalHeapUsage(heapStats);
93
96
  if (console && Date.now() - this._lastHeapStats > 1000) {
@@ -1 +1 @@
1
- {"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../../../src/analyzer/cacheManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../../../src/analyzer/cacheManager.ts"],"names":[],"mappings":"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"}
@@ -133,6 +133,8 @@ export declare class Checker extends ParseTreeWalker {
133
133
  private _validateMultipleInheritanceBaseClasses;
134
134
  private _validateMultipleInheritanceCompatibility;
135
135
  private _validateMultipleInheritanceOverride;
136
+ private _addMultipleInheritanceRelatedInfo;
137
+ private _validateMultipleInheritancePropertyOverride;
136
138
  private _validateOverloadDecoratorConsistency;
137
139
  private _validateTypedDictOverrides;
138
140
  private _validateBaseClassOverrides;
@@ -140,6 +142,7 @@ export declare class Checker extends ParseTreeWalker {
140
142
  private _isMethodExemptFromLsp;
141
143
  private _validateOverrideDecoratorNotPresent;
142
144
  private _validateBaseClassOverride;
145
+ private _validatePropertyOverride;
143
146
  private _validateMethod;
144
147
  private _validateSuperCallForMethod;
145
148
  private _validateClsSelfParameterType;
@@ -51,6 +51,7 @@ const parseNodes_1 = require("../parser/parseNodes");
51
51
  const stringTokenUtils_1 = require("../parser/stringTokenUtils");
52
52
  const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
53
53
  const constructors_1 = require("./constructors");
54
+ const dataClasses_1 = require("./dataClasses");
54
55
  const declaration_1 = require("./declaration");
55
56
  const declarationUtils_1 = require("./declarationUtils");
56
57
  const deprecatedSymbols_1 = require("./deprecatedSymbols");
@@ -3758,6 +3759,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3758
3759
  if (types_1.ClassType.isFinal(classType)) {
3759
3760
  (0, typeUtils_1.getProtocolSymbolsRecursive)(classType, abstractSymbols, 64 /* ClassTypeFlags.SupportsAbstractMethods */);
3760
3761
  }
3762
+ // If this is a dataclass, get all of the entries so we can tell which
3763
+ // ones are initialized by the synthesized __init__ method.
3764
+ const dataClassEntries = [];
3765
+ if (types_1.ClassType.isDataClass(classType)) {
3766
+ (0, dataClasses_1.addInheritedDataClassEntries)(classType, dataClassEntries);
3767
+ }
3761
3768
  types_1.ClassType.getSymbolTable(classType).forEach((localSymbol, name) => {
3762
3769
  abstractSymbols.delete(name);
3763
3770
  // This applies only to instance members.
@@ -3783,10 +3790,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3783
3790
  ((_c = decl.node.parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 3 /* ParseNodeType.Assignment */) {
3784
3791
  return true;
3785
3792
  }
3786
- // If this is part of a dataclass or a class handled by a dataclass_transform,
3787
- // exempt it because the class variable will be transformed into an instance
3788
- // variable in this case.
3789
- if (types_1.ClassType.isDataClass(classType)) {
3793
+ // If this is part of a dataclass, a class handled by a dataclass_transform,
3794
+ // or a NamedTuple, exempt it because the class variable will be transformed
3795
+ // into an instance variable in this case.
3796
+ if (types_1.ClassType.isDataClass(classType) || types_1.ClassType.isReadOnlyInstanceVariables(classType)) {
3790
3797
  return true;
3791
3798
  }
3792
3799
  // If this is part of a TypedDict, exempt it because the class variables
@@ -3819,18 +3826,27 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3819
3826
  if (decls.length === 0 || !(0, types_1.isClass)(member.classType)) {
3820
3827
  return;
3821
3828
  }
3822
- if (decls[0].type === 1 /* DeclarationType.Variable */) {
3823
- // If none of the declarations involve assignments, assume it's
3824
- // not implemented in the protocol.
3825
- if (!decls.some((decl) => decl.type === 1 /* DeclarationType.Variable */ && !!decl.inferredTypeSource)) {
3826
- // This is a variable declaration that is not implemented in the
3827
- // protocol base class. Make sure it's implemented in the derived class.
3828
- diagAddendum.addMessage(localize_1.LocAddendum.uninitializedAbstractVariable().format({
3829
- name,
3830
- classType: member.classType.details.name,
3831
- }));
3829
+ if (decls[0].type !== 1 /* DeclarationType.Variable */) {
3830
+ return;
3831
+ }
3832
+ // Dataclass fields are typically exempted from this check because
3833
+ // they have synthesized __init__ methods that initialize these variables.
3834
+ const dcEntry = dataClassEntries === null || dataClassEntries === void 0 ? void 0 : dataClassEntries.find((entry) => entry.name === name);
3835
+ if (dcEntry) {
3836
+ if (dcEntry.includeInInit) {
3837
+ return;
3832
3838
  }
3833
3839
  }
3840
+ else {
3841
+ // Do one or more declarations involve assignments?
3842
+ if (decls.some((decl) => decl.type === 1 /* DeclarationType.Variable */ && !!decl.inferredTypeSource)) {
3843
+ return;
3844
+ }
3845
+ }
3846
+ diagAddendum.addMessage(localize_1.LocAddendum.uninitializedAbstractVariable().format({
3847
+ name,
3848
+ classType: member.classType.details.name,
3849
+ }));
3834
3850
  });
3835
3851
  if (!diagAddendum.isEmpty()) {
3836
3852
  this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportUninitializedInstanceVariable, localize_1.LocMessage.uninitializedAbstractVariables().format({ classType: classType.details.name }) +
@@ -4216,7 +4232,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4216
4232
  }
4217
4233
  }
4218
4234
  else {
4219
- // TODO - check types of property methods fget, fset, fdel.
4235
+ this._validateMultipleInheritancePropertyOverride(overriddenClassAndSymbol.classType, childClassType, overriddenType, overrideType, overrideSymbol, memberName, errorNode);
4220
4236
  }
4221
4237
  }
4222
4238
  else {
@@ -4283,15 +4299,76 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4283
4299
  }
4284
4300
  }
4285
4301
  if (diag && overrideDecl && overriddenDecl) {
4286
- diag.addRelatedInfo(localize_1.LocAddendum.baseClassOverriddenType().format({
4287
- baseClass: this._evaluator.printType((0, typeUtils_1.convertToInstance)(overriddenClassAndSymbol.classType)),
4288
- type: this._evaluator.printType(overriddenType),
4289
- }), overriddenDecl.uri, overriddenDecl.range);
4290
- diag.addRelatedInfo(localize_1.LocAddendum.baseClassOverridesType().format({
4291
- baseClass: this._evaluator.printType((0, typeUtils_1.convertToInstance)(overrideClassAndSymbol.classType)),
4292
- type: this._evaluator.printType(overrideType),
4293
- }), overrideDecl.uri, overrideDecl.range);
4294
- }
4302
+ this._addMultipleInheritanceRelatedInfo(diag, overriddenClassAndSymbol.classType, overriddenType, overriddenDecl, overrideClassAndSymbol.classType, overrideType, overrideDecl);
4303
+ }
4304
+ }
4305
+ _addMultipleInheritanceRelatedInfo(diag, overriddenClass, overriddenType, overriddenDecl, overrideClass, overrideType, overrideDecl) {
4306
+ diag.addRelatedInfo(localize_1.LocAddendum.baseClassOverriddenType().format({
4307
+ baseClass: this._evaluator.printType((0, typeUtils_1.convertToInstance)(overriddenClass)),
4308
+ type: this._evaluator.printType(overriddenType),
4309
+ }), overriddenDecl.uri, overriddenDecl.range);
4310
+ diag.addRelatedInfo(localize_1.LocAddendum.baseClassOverridesType().format({
4311
+ baseClass: this._evaluator.printType((0, typeUtils_1.convertToInstance)(overrideClass)),
4312
+ type: this._evaluator.printType(overrideType),
4313
+ }), overrideDecl.uri, overrideDecl.range);
4314
+ }
4315
+ _validateMultipleInheritancePropertyOverride(overriddenClassType, overrideClassType, overriddenSymbolType, overrideSymbolType, overrideSymbol, memberName, errorNode) {
4316
+ const propMethodInfo = [
4317
+ ['fget', (c) => { var _a; return (_a = c.fgetInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4318
+ ['fset', (c) => { var _a; return (_a = c.fsetInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4319
+ ['fdel', (c) => { var _a; return (_a = c.fdelInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4320
+ ];
4321
+ propMethodInfo.forEach((info) => {
4322
+ const diagAddendum = new diagnostic_1.DiagnosticAddendum();
4323
+ const [methodName, methodAccessor] = info;
4324
+ const baseClassPropMethod = methodAccessor(overriddenSymbolType);
4325
+ const subclassPropMethod = methodAccessor(overrideSymbolType);
4326
+ // Is the method present on the base class but missing in the subclass?
4327
+ if (baseClassPropMethod) {
4328
+ const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, overriddenClassType);
4329
+ if ((0, types_1.isFunction)(baseClassMethodType)) {
4330
+ if (!subclassPropMethod) {
4331
+ // The method is missing.
4332
+ diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodMissing().format({
4333
+ name: methodName,
4334
+ }));
4335
+ const decls = overrideSymbol.getDeclarations();
4336
+ if (decls.length > 0) {
4337
+ const lastDecl = decls[decls.length - 1];
4338
+ const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.propertyOverridden().format({
4339
+ name: memberName,
4340
+ className: overriddenClassType.details.name,
4341
+ }) + diagAddendum.getString(), errorNode);
4342
+ const origDecl = baseClassMethodType.details.declaration;
4343
+ if (diag && origDecl) {
4344
+ this._addMultipleInheritanceRelatedInfo(diag, overriddenClassType, overriddenSymbolType, origDecl, overrideClassType, overrideSymbolType, lastDecl);
4345
+ }
4346
+ }
4347
+ }
4348
+ else {
4349
+ const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, overrideClassType);
4350
+ if ((0, types_1.isFunction)(subclassMethodType)) {
4351
+ if (!this._evaluator.validateOverrideMethod(baseClassMethodType, subclassMethodType, overrideClassType, diagAddendum.createAddendum())) {
4352
+ diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodIncompatible().format({
4353
+ name: methodName,
4354
+ }));
4355
+ const decl = subclassMethodType.details.declaration;
4356
+ if (decl && decl.type === 5 /* DeclarationType.Function */) {
4357
+ const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.propertyOverridden().format({
4358
+ name: memberName,
4359
+ className: overriddenClassType.details.name,
4360
+ }) + diagAddendum.getString(), errorNode);
4361
+ const origDecl = baseClassMethodType.details.declaration;
4362
+ if (diag && origDecl) {
4363
+ this._addMultipleInheritanceRelatedInfo(diag, overriddenClassType, overriddenSymbolType, origDecl, overrideClassType, overrideSymbolType, decl);
4364
+ }
4365
+ }
4366
+ }
4367
+ }
4368
+ }
4369
+ }
4370
+ }
4371
+ });
4295
4372
  }
4296
4373
  // Validates that any overloaded methods are consistent in how they
4297
4374
  // are decorated. For example, if the first overload is not marked @final
@@ -4653,64 +4730,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4653
4730
  }
4654
4731
  }
4655
4732
  else {
4656
- const baseClassType = baseClass;
4657
- const propMethodInfo = [
4658
- ['fget', (c) => { var _a; return (_a = c.fgetInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4659
- ['fset', (c) => { var _a; return (_a = c.fsetInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4660
- ['fdel', (c) => { var _a; return (_a = c.fdelInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4661
- ];
4662
- propMethodInfo.forEach((info) => {
4663
- var _a;
4664
- const diagAddendum = new diagnostic_1.DiagnosticAddendum();
4665
- const [methodName, methodAccessor] = info;
4666
- const baseClassPropMethod = methodAccessor(baseType);
4667
- const subclassPropMethod = methodAccessor(overrideType);
4668
- // Is the method present on the base class but missing in the subclass?
4669
- if (baseClassPropMethod) {
4670
- const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, baseClassType);
4671
- if ((0, types_1.isFunction)(baseClassMethodType)) {
4672
- if (!subclassPropMethod) {
4673
- // The method is missing.
4674
- diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodMissing().format({
4675
- name: methodName,
4676
- }));
4677
- const decls = overrideSymbol.getDeclarations();
4678
- if (decls.length > 0) {
4679
- const lastDecl = decls[decls.length - 1];
4680
- const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.propertyOverridden().format({
4681
- name: memberName,
4682
- className: baseClassType.details.name,
4683
- }) + diagAddendum.getString(), (_a = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _a !== void 0 ? _a : lastDecl.node);
4684
- const origDecl = baseClassMethodType.details.declaration;
4685
- if (diag && origDecl) {
4686
- diag.addRelatedInfo(localize_1.LocAddendum.overriddenMethod(), origDecl.uri, origDecl.range);
4687
- }
4688
- }
4689
- }
4690
- else {
4691
- const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, childClassType);
4692
- if ((0, types_1.isFunction)(subclassMethodType)) {
4693
- if (!this._evaluator.validateOverrideMethod(baseClassMethodType, subclassMethodType, childClassType, diagAddendum.createAddendum())) {
4694
- diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodIncompatible().format({
4695
- name: methodName,
4696
- }));
4697
- const decl = subclassMethodType.details.declaration;
4698
- if (decl && decl.type === 5 /* DeclarationType.Function */) {
4699
- const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.propertyOverridden().format({
4700
- name: memberName,
4701
- className: baseClassType.details.name,
4702
- }) + diagAddendum.getString(), decl.node.name);
4703
- const origDecl = baseClassMethodType.details.declaration;
4704
- if (diag && origDecl) {
4705
- diag.addRelatedInfo(localize_1.LocAddendum.overriddenMethod(), origDecl.uri, origDecl.range);
4706
- }
4707
- }
4708
- }
4709
- }
4710
- }
4711
- }
4712
- }
4713
- });
4733
+ this._validatePropertyOverride(baseClass, childClassType, baseType, overrideType, overrideSymbol, memberName);
4714
4734
  }
4715
4735
  }
4716
4736
  else {
@@ -4851,6 +4871,65 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4851
4871
  }
4852
4872
  }
4853
4873
  }
4874
+ _validatePropertyOverride(baseClassType, childClassType, baseType, childType, overrideSymbol, memberName) {
4875
+ const propMethodInfo = [
4876
+ ['fget', (c) => { var _a; return (_a = c.fgetInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4877
+ ['fset', (c) => { var _a; return (_a = c.fsetInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4878
+ ['fdel', (c) => { var _a; return (_a = c.fdelInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4879
+ ];
4880
+ propMethodInfo.forEach((info) => {
4881
+ var _a;
4882
+ const diagAddendum = new diagnostic_1.DiagnosticAddendum();
4883
+ const [methodName, methodAccessor] = info;
4884
+ const baseClassPropMethod = methodAccessor(baseType);
4885
+ const subclassPropMethod = methodAccessor(childType);
4886
+ // Is the method present on the base class but missing in the subclass?
4887
+ if (baseClassPropMethod) {
4888
+ const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, baseClassType);
4889
+ if ((0, types_1.isFunction)(baseClassMethodType)) {
4890
+ if (!subclassPropMethod) {
4891
+ // The method is missing.
4892
+ diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodMissing().format({
4893
+ name: methodName,
4894
+ }));
4895
+ const decls = overrideSymbol.getDeclarations();
4896
+ if (decls.length > 0) {
4897
+ const lastDecl = decls[decls.length - 1];
4898
+ const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.propertyOverridden().format({
4899
+ name: memberName,
4900
+ className: baseClassType.details.name,
4901
+ }) + diagAddendum.getString(), (_a = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _a !== void 0 ? _a : lastDecl.node);
4902
+ const origDecl = baseClassMethodType.details.declaration;
4903
+ if (diag && origDecl) {
4904
+ diag.addRelatedInfo(localize_1.LocAddendum.overriddenMethod(), origDecl.uri, origDecl.range);
4905
+ }
4906
+ }
4907
+ }
4908
+ else {
4909
+ const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, childClassType);
4910
+ if ((0, types_1.isFunction)(subclassMethodType)) {
4911
+ if (!this._evaluator.validateOverrideMethod(baseClassMethodType, subclassMethodType, childClassType, diagAddendum.createAddendum())) {
4912
+ diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodIncompatible().format({
4913
+ name: methodName,
4914
+ }));
4915
+ const decl = subclassMethodType.details.declaration;
4916
+ if (decl && decl.type === 5 /* DeclarationType.Function */) {
4917
+ const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.propertyOverridden().format({
4918
+ name: memberName,
4919
+ className: baseClassType.details.name,
4920
+ }) + diagAddendum.getString(), decl.node.name);
4921
+ const origDecl = baseClassMethodType.details.declaration;
4922
+ if (diag && origDecl) {
4923
+ diag.addRelatedInfo(localize_1.LocAddendum.overriddenMethod(), origDecl.uri, origDecl.range);
4924
+ }
4925
+ }
4926
+ }
4927
+ }
4928
+ }
4929
+ }
4930
+ }
4931
+ });
4932
+ }
4854
4933
  // Performs checks on a function that is located within a class
4855
4934
  // and has been determined not to be a property accessor.
4856
4935
  _validateMethod(node, functionType, classNode) {