@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.
- package/dist/analyzer/cacheManager.js +3 -0
- package/dist/analyzer/cacheManager.js.map +1 -1
- package/dist/analyzer/checker.d.ts +3 -0
- package/dist/analyzer/checker.js +161 -82
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +1 -1
- package/dist/analyzer/codeFlowEngine.js +7 -12
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/dataClasses.d.ts +2 -1
- package/dist/analyzer/dataClasses.js +5 -2
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.js +18 -2
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +11 -2
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +90 -124
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +0 -1
- package/dist/analyzer/typeUtils.js +4 -2
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/types.js +9 -6
- package/dist/analyzer/types.js.map +1 -1
- package/dist/common/diagnostic.d.ts +1 -0
- package/dist/common/diagnostic.js +5 -0
- package/dist/common/diagnostic.js.map +1 -1
- package/dist/common/docStringService.d.ts +2 -1
- package/dist/common/docStringService.js.map +1 -1
- package/dist/common/textRangeCollection.d.ts +1 -1
- package/dist/common/textRangeCollection.js +14 -14
- package/dist/common/textRangeCollection.js.map +1 -1
- package/dist/languageService/autoImporter.js +2 -2
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +1 -1
- package/dist/languageService/hoverProvider.js +11 -7
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +19 -2
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +1 -0
- package/dist/localization/localize.js +1 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +2 -0
- package/dist/localization/package.nls.de.json +2 -0
- package/dist/localization/package.nls.en-us.json +1 -0
- package/dist/localization/package.nls.es.json +2 -0
- package/dist/localization/package.nls.fr.json +2 -0
- package/dist/localization/package.nls.it.json +2 -0
- package/dist/localization/package.nls.ja.json +2 -0
- package/dist/localization/package.nls.ko.json +2 -0
- package/dist/localization/package.nls.pl.json +2 -0
- package/dist/localization/package.nls.pt-br.json +2 -0
- package/dist/localization/package.nls.qps-ploc.json +2 -0
- package/dist/localization/package.nls.ru.json +2 -0
- package/dist/localization/package.nls.tr.json +2 -0
- package/dist/localization/package.nls.zh-cn.json +2 -0
- package/dist/localization/package.nls.zh-tw.json +2 -0
- package/dist/tests/checker.test.js +2 -2
- package/dist/tests/fourslash/hover.docstring.alias.fourslash.js +5 -5
- package/dist/tests/fourslash/hover.docstring.alias.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.init.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.init.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.variable.docString.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.variable.docString.fourslash.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +89 -0
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +1 -1
- package/dist/tests/typeEvaluator3.test.js +1 -1
- package/dist/tests/typeEvaluator7.test.js +1 -1
- 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;
|
package/dist/analyzer/checker.js
CHANGED
@@ -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
|
3787
|
-
// exempt it because the class variable will be transformed
|
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
|
3823
|
-
|
3824
|
-
|
3825
|
-
|
3826
|
-
|
3827
|
-
|
3828
|
-
|
3829
|
-
|
3830
|
-
|
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
|
-
|
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
|
-
|
4287
|
-
|
4288
|
-
|
4289
|
-
|
4290
|
-
|
4291
|
-
|
4292
|
-
|
4293
|
-
|
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
|
-
|
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) {
|