@zzzen/pyright-internal 1.2.0-dev.20261018 → 1.2.0-dev.20261108
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/binder.js +29 -12
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.js +4 -0
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +3 -3
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +12 -0
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/constructors.d.ts +1 -1
- package/dist/analyzer/constructors.js +1 -1
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +14 -5
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/decorators.d.ts +2 -2
- package/dist/analyzer/decorators.js +22 -2
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/functionTransform.d.ts +5 -0
- package/dist/analyzer/functionTransform.js +6 -3
- package/dist/analyzer/functionTransform.js.map +1 -1
- package/dist/analyzer/missingBindingMetadata.d.ts +6 -0
- package/dist/analyzer/missingBindingMetadata.js +22 -0
- package/dist/analyzer/missingBindingMetadata.js.map +1 -0
- package/dist/analyzer/namedTuples.d.ts +5 -1
- package/dist/analyzer/namedTuples.js +64 -35
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.js +45 -1
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +2 -0
- package/dist/analyzer/parseTreeUtils.js +43 -0
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.d.ts +5 -1
- package/dist/analyzer/patternMatching.js +6 -1
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +3 -0
- package/dist/analyzer/program.js +71 -1
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/sentinel.js +7 -1
- package/dist/analyzer/sentinel.js.map +1 -1
- package/dist/analyzer/sourceFile.js +13 -6
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/tupleComparison.d.ts +6 -0
- package/dist/analyzer/tupleComparison.js +731 -0
- package/dist/analyzer/tupleComparison.js.map +1 -0
- package/dist/analyzer/tuples.d.ts +1 -1
- package/dist/analyzer/tuples.js +35 -4
- package/dist/analyzer/tuples.js.map +1 -1
- package/dist/analyzer/typeCacheUtils.d.ts +1 -0
- package/dist/analyzer/typeCacheUtils.js +10 -0
- package/dist/analyzer/typeCacheUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator/boundMethodSpecialization.d.ts +15 -0
- package/dist/analyzer/typeEvaluator/boundMethodSpecialization.js +98 -0
- package/dist/analyzer/typeEvaluator/boundMethodSpecialization.js.map +1 -0
- package/dist/analyzer/typeEvaluator/classConstruction.d.ts +25 -0
- package/dist/analyzer/typeEvaluator/classConstruction.js +251 -0
- package/dist/analyzer/typeEvaluator/classConstruction.js.map +1 -0
- package/dist/analyzer/typeEvaluator/collectionInference.d.ts +41 -0
- package/dist/analyzer/typeEvaluator/collectionInference.js +695 -0
- package/dist/analyzer/typeEvaluator/collectionInference.js.map +1 -0
- package/dist/analyzer/typeEvaluator/diagnostics.d.ts +33 -0
- package/dist/analyzer/typeEvaluator/diagnostics.js +198 -0
- package/dist/analyzer/typeEvaluator/diagnostics.js.map +1 -0
- package/dist/analyzer/typeEvaluator/evaluatorCore.d.ts +80 -0
- package/dist/analyzer/typeEvaluator/evaluatorCore.js +1126 -0
- package/dist/analyzer/typeEvaluator/evaluatorCore.js.map +1 -0
- package/dist/analyzer/typeEvaluator/evaluatorNarrowing.d.ts +17 -0
- package/dist/analyzer/typeEvaluator/evaluatorNarrowing.js +370 -0
- package/dist/analyzer/typeEvaluator/evaluatorNarrowing.js.map +1 -0
- package/dist/analyzer/typeEvaluator/expressionEvaluation.d.ts +81 -0
- package/dist/analyzer/typeEvaluator/expressionEvaluation.js +1802 -0
- package/dist/analyzer/typeEvaluator/expressionEvaluation.js.map +1 -0
- package/dist/analyzer/typeEvaluator/flowAnalysis.d.ts +33 -0
- package/dist/analyzer/typeEvaluator/flowAnalysis.js +217 -0
- package/dist/analyzer/typeEvaluator/flowAnalysis.js.map +1 -0
- package/dist/analyzer/typeEvaluator/internals.d.ts +137 -0
- package/dist/analyzer/typeEvaluator/internals.js +10 -0
- package/dist/analyzer/typeEvaluator/internals.js.map +1 -0
- package/dist/analyzer/typeEvaluator/literalTypes.d.ts +3 -0
- package/dist/analyzer/typeEvaluator/literalTypes.js +52 -0
- package/dist/analyzer/typeEvaluator/literalTypes.js.map +1 -0
- package/dist/analyzer/typeEvaluator/memberResolution.d.ts +79 -0
- package/dist/analyzer/typeEvaluator/memberResolution.js +1007 -0
- package/dist/analyzer/typeEvaluator/memberResolution.js.map +1 -0
- package/dist/analyzer/typeEvaluator/overrideValidation.d.ts +15 -0
- package/dist/analyzer/typeEvaluator/overrideValidation.js +422 -0
- package/dist/analyzer/typeEvaluator/overrideValidation.js.map +1 -0
- package/dist/analyzer/typeEvaluator/returnTypeInference.d.ts +33 -0
- package/dist/analyzer/typeEvaluator/returnTypeInference.js +226 -0
- package/dist/analyzer/typeEvaluator/returnTypeInference.js.map +1 -0
- package/dist/analyzer/typeEvaluator/specialFormCreation.d.ts +39 -0
- package/dist/analyzer/typeEvaluator/specialFormCreation.js +1728 -0
- package/dist/analyzer/typeEvaluator/specialFormCreation.js.map +1 -0
- package/dist/analyzer/typeEvaluator/tupleUnpacking.d.ts +2 -0
- package/dist/analyzer/typeEvaluator/tupleUnpacking.js +36 -0
- package/dist/analyzer/typeEvaluator/tupleUnpacking.js.map +1 -0
- package/dist/analyzer/typeEvaluator/typeCompatibility.d.ts +36 -0
- package/dist/analyzer/typeEvaluator/typeCompatibility.js +1320 -0
- package/dist/analyzer/typeEvaluator/typeCompatibility.js.map +1 -0
- package/dist/analyzer/typeEvaluator/typeGuardNarrowing.d.ts +186 -0
- package/dist/analyzer/typeEvaluator/typeGuardNarrowing.js +1683 -0
- package/dist/analyzer/typeEvaluator/typeGuardNarrowing.js.map +1 -0
- package/dist/analyzer/typeEvaluator/typeVarHandling.d.ts +48 -0
- package/dist/analyzer/typeEvaluator/typeVarHandling.js +756 -0
- package/dist/analyzer/typeEvaluator/typeVarHandling.js.map +1 -0
- package/dist/analyzer/typeEvaluator.d.ts +3 -31
- package/dist/analyzer/typeEvaluator.js +5140 -13656
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -1
- package/dist/analyzer/typeEvaluatorTypes.js +2 -3
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +3 -2
- package/dist/analyzer/typeGuards.js +236 -1375
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.js +9 -2
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +111 -0
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +14 -0
- package/dist/analyzer/types.js +215 -10
- package/dist/analyzer/types.js.map +1 -1
- package/dist/browser/browserConnection.d.ts +12 -0
- package/dist/browser/browserConnection.js +23 -0
- package/dist/browser/browserConnection.js.map +1 -0
- package/dist/browser/browserFileSystem.d.ts +73 -0
- package/dist/browser/browserFileSystem.js +578 -0
- package/dist/browser/browserFileSystem.js.map +1 -0
- package/dist/browser/browserHost.d.ts +4 -0
- package/dist/browser/browserHost.js +10 -0
- package/dist/browser/browserHost.js.map +1 -0
- package/dist/browser/browserProcess.d.ts +1 -0
- package/dist/browser/browserProcess.js +17 -0
- package/dist/browser/browserProcess.js.map +1 -0
- package/dist/browser/browserServer.d.ts +8 -0
- package/dist/browser/browserServer.js +32 -0
- package/dist/browser/browserServer.js.map +1 -0
- package/dist/browser/cancellation/common.d.ts +10 -0
- package/dist/browser/cancellation/common.js +114 -0
- package/dist/browser/cancellation/common.js.map +1 -0
- package/dist/browser/cancellation/objectURLReceiverStrategy.d.ts +5 -0
- package/dist/browser/cancellation/objectURLReceiverStrategy.js +37 -0
- package/dist/browser/cancellation/objectURLReceiverStrategy.js.map +1 -0
- package/dist/browser/cancellation/objectURLSenderStrategy.d.ts +7 -0
- package/dist/browser/cancellation/objectURLSenderStrategy.js +32 -0
- package/dist/browser/cancellation/objectURLSenderStrategy.js.map +1 -0
- package/dist/browser/worker.d.ts +1 -0
- package/dist/browser/worker.js +33 -0
- package/dist/browser/worker.js.map +1 -0
- package/dist/common/processUtils.d.ts +6 -0
- package/dist/common/processUtils.js +56 -1
- package/dist/common/processUtils.js.map +1 -1
- package/dist/common/textEditTracker.js +1 -1
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/common/windowsProcessTree.d.ts +2 -0
- package/dist/common/windowsProcessTree.js +23 -0
- package/dist/common/windowsProcessTree.js.map +1 -1
- package/dist/common/windowsProcessTree.json +23 -3
- package/dist/languageServerBase.d.ts +3 -0
- package/dist/languageServerBase.js +44 -12
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +6 -6
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/referencesProvider.js +3 -3
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/renameProvider.js +1 -1
- package/dist/languageService/renameProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.js +2 -2
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/localization/localize.d.ts +2 -0
- package/dist/localization/localize.js +2 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +8 -0
- package/dist/parser/parseTreeTokenReuse.d.ts +34 -0
- package/dist/parser/parseTreeTokenReuse.js +897 -0
- package/dist/parser/parseTreeTokenReuse.js.map +1 -0
- package/dist/parser/tokenizer.d.ts +10 -1
- package/dist/parser/tokenizer.js +184 -130
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/pyrightServer.d.ts +34 -0
- package/dist/pyrightServer.js +239 -0
- package/dist/pyrightServer.js.map +1 -0
- package/dist/server.d.ts +3 -23
- package/dist/server.js +12 -232
- package/dist/server.js.map +1 -1
- package/dist/tests/benchmarks/typeInferenceComparison.d.ts +1 -0
- package/dist/tests/benchmarks/typeInferenceComparison.js +1235 -0
- package/dist/tests/benchmarks/typeInferenceComparison.js.map +1 -0
- package/dist/tests/benchmarks/typeInferencePyrightEntry.d.ts +1 -0
- package/dist/tests/benchmarks/typeInferencePyrightEntry.js +53 -0
- package/dist/tests/benchmarks/typeInferencePyrightEntry.js.map +1 -0
- package/dist/tests/browserCancellation.test.d.ts +1 -0
- package/dist/tests/browserCancellation.test.js +63 -0
- package/dist/tests/browserCancellation.test.js.map +1 -0
- package/dist/tests/browserServer.test.d.ts +1 -0
- package/dist/tests/browserServer.test.js +177 -0
- package/dist/tests/browserServer.test.js.map +1 -0
- package/dist/tests/checker.test.js +8 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/constraintSolver.test.js +45 -0
- package/dist/tests/constraintSolver.test.js.map +1 -1
- package/dist/tests/fourSlashParser.test.js +35 -0
- package/dist/tests/fourSlashParser.test.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashParser.js +14 -4
- package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
- package/dist/tests/languageServer.test.js +15 -0
- package/dist/tests/languageServer.test.js.map +1 -1
- package/dist/tests/lsp/languageServer.js +6 -6
- package/dist/tests/lsp/languageServer.js.map +1 -1
- package/dist/tests/mypyPrimerAnalysis.test.js +148 -1
- package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
- package/dist/tests/typeCacheUtils.test.js +46 -0
- package/dist/tests/typeCacheUtils.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +78 -1
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +54 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +4 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +42 -3
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator6.test.js +35 -0
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +414 -0
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typeEvaluator8.test.js +1291 -1
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/tests/typeUtils.test.js +28 -0
- package/dist/tests/typeUtils.test.js.map +1 -1
- package/dist/tests/types.test.js +55 -0
- package/dist/tests/types.test.js.map +1 -1
- package/dist/typeServer/programWrapper.js +8 -2
- package/dist/typeServer/programWrapper.js.map +1 -1
- package/dist/typeServer/server.d.ts +12 -2
- package/dist/typeServer/server.js +97 -0
- package/dist/typeServer/server.js.map +1 -1
- package/dist/typeServer/stubGenerator.js +136 -3
- package/dist/typeServer/stubGenerator.js.map +1 -1
- package/dist/typeServer/typeServerConversionUtils.js +13 -0
- package/dist/typeServer/typeServerConversionUtils.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memberResolution.js","sourceRoot":"","sources":["../../../../../../src/analyzer/typeEvaluator/memberResolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DiagnosticAddendum } from '../../common/diagnostic';
|
|
2
|
+
import { ConstraintTracker } from '../constraintTracker';
|
|
3
|
+
import { SolveConstraintsOptions, TypeEvaluator } from '../typeEvaluatorTypes';
|
|
4
|
+
import { ClassType, FunctionType, OverloadedType, Type } from '../types';
|
|
5
|
+
import { ApplyTypeVarOptions } from '../typeUtils';
|
|
6
|
+
interface Context {
|
|
7
|
+
readonly assignType: TypeEvaluator['assignType'];
|
|
8
|
+
readonly getEffectiveReturnType: (type: FunctionType) => Type;
|
|
9
|
+
readonly printType: TypeEvaluator['printType'];
|
|
10
|
+
readonly solveAndApplyConstraints: (type: Type, constraints: ConstraintTracker, applyOptions?: ApplyTypeVarOptions, solveOptions?: SolveConstraintsOptions) => Type;
|
|
11
|
+
}
|
|
12
|
+
export declare function createOverrideValidation(context: Context): {
|
|
13
|
+
validateOverrideMethod: (baseMethod: Type, overrideMethod: FunctionType | OverloadedType, baseClass: ClassType | undefined, diag: DiagnosticAddendum, enforceParamNames?: boolean) => boolean;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* overrideValidation.ts
|
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
|
5
|
+
* Licensed under the MIT license.
|
|
6
|
+
*
|
|
7
|
+
* overrideValidation implementation, using evaluator-owned dependencies and state.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createOverrideValidation = createOverrideValidation;
|
|
11
|
+
const localize_1 = require("../../localization/localize");
|
|
12
|
+
const constraintTracker_1 = require("../constraintTracker");
|
|
13
|
+
const parameterUtils_1 = require("../parameterUtils");
|
|
14
|
+
const symbolNameUtils_1 = require("../symbolNameUtils");
|
|
15
|
+
const types_1 = require("../types");
|
|
16
|
+
// Validates overrides and reports mismatches through evaluator compatibility and diagnostic callbacks.
|
|
17
|
+
function createOverrideValidation(context) {
|
|
18
|
+
const { assignType, getEffectiveReturnType, printType, solveAndApplyConstraints } = context;
|
|
19
|
+
function validateOverrideMethod(baseMethod, overrideMethod, baseClass, diag, enforceParamNames = true) {
|
|
20
|
+
// If we're overriding a non-method with a method, report it as an error.
|
|
21
|
+
// This occurs when a non-property overrides a property.
|
|
22
|
+
if (!(0, types_1.isFunctionOrOverloaded)(baseMethod)) {
|
|
23
|
+
diag.addMessage(localize_1.LocAddendum.overrideType().format({ type: printType(baseMethod) }));
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if ((0, types_1.isFunction)(baseMethod)) {
|
|
27
|
+
// Handle the easy case - a simple function overriding another simple function.
|
|
28
|
+
if ((0, types_1.isFunction)(overrideMethod)) {
|
|
29
|
+
return validateOverrideMethodInternal(baseMethod, overrideMethod, diag, enforceParamNames);
|
|
30
|
+
}
|
|
31
|
+
const overloadsAndImpl = [...types_1.OverloadedType.getOverloads(overrideMethod)];
|
|
32
|
+
const impl = types_1.OverloadedType.getImplementation(overrideMethod);
|
|
33
|
+
if (impl && (0, types_1.isFunction)(impl)) {
|
|
34
|
+
overloadsAndImpl.push(impl);
|
|
35
|
+
}
|
|
36
|
+
// For an overload overriding a base method, at least one overload
|
|
37
|
+
// or the implementation must be compatible with the base method.
|
|
38
|
+
if (overloadsAndImpl.some((overrideOverload) => {
|
|
39
|
+
return validateOverrideMethodInternal(baseMethod, overrideOverload,
|
|
40
|
+
/* diag */ undefined, enforceParamNames);
|
|
41
|
+
})) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
diag.addMessage(localize_1.LocAddendum.overrideNoOverloadMatches());
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
// For a non-overloaded method overriding an overloaded method, the
|
|
48
|
+
// override must match all of the overloads.
|
|
49
|
+
if ((0, types_1.isFunction)(overrideMethod)) {
|
|
50
|
+
return types_1.OverloadedType.getOverloads(baseMethod).every((overload) => {
|
|
51
|
+
// If the override isn't applicable for this base class, skip the check.
|
|
52
|
+
if (baseClass && !isOverrideMethodApplicable(overload, baseClass)) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return validateOverrideMethodInternal(overload, overrideMethod, diag?.createAddendum(), enforceParamNames);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// For an overloaded method overriding an overloaded method, the overrides
|
|
59
|
+
// must all match and be in the correct order. It is OK if the base method
|
|
60
|
+
// has additional overloads that are not present in the override.
|
|
61
|
+
let previousMatchIndex = -1;
|
|
62
|
+
const baseOverloads = types_1.OverloadedType.getOverloads(baseMethod);
|
|
63
|
+
for (const overrideOverload of types_1.OverloadedType.getOverloads(overrideMethod)) {
|
|
64
|
+
let possibleMatchIndex;
|
|
65
|
+
let matchIndex = baseOverloads.findIndex((baseOverload, index) => {
|
|
66
|
+
// If the override isn't applicable for this base class, skip the check.
|
|
67
|
+
if (baseClass && !isOverrideMethodApplicable(baseOverload, baseClass)) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
const isCompatible = validateOverrideMethodInternal(baseOverload, overrideOverload,
|
|
71
|
+
/* diag */ undefined, enforceParamNames);
|
|
72
|
+
// If the override is compatible but the match is one that is below the previous
|
|
73
|
+
// matched index, keep looking for additional matches. Record the fact that
|
|
74
|
+
// we found at least one match.
|
|
75
|
+
if (isCompatible && index <= previousMatchIndex && possibleMatchIndex === undefined) {
|
|
76
|
+
possibleMatchIndex = index;
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return isCompatible;
|
|
80
|
+
});
|
|
81
|
+
if (matchIndex < 0 && possibleMatchIndex !== undefined) {
|
|
82
|
+
matchIndex = possibleMatchIndex;
|
|
83
|
+
}
|
|
84
|
+
if (matchIndex < 0) {
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
if (matchIndex < previousMatchIndex) {
|
|
88
|
+
diag.addMessage(localize_1.LocAddendum.overrideOverloadOrder());
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
previousMatchIndex = matchIndex;
|
|
92
|
+
}
|
|
93
|
+
if (previousMatchIndex < baseOverloads.length - 1) {
|
|
94
|
+
const unmatchedOverloads = baseOverloads.slice(previousMatchIndex + 1);
|
|
95
|
+
// See if all of the remaining overrides are nonapplicable.
|
|
96
|
+
if (!baseClass ||
|
|
97
|
+
unmatchedOverloads.some((overload) => {
|
|
98
|
+
return isOverrideMethodApplicable(overload, baseClass);
|
|
99
|
+
})) {
|
|
100
|
+
// We didn't find matches for all of the base overloads.
|
|
101
|
+
diag.addMessage(localize_1.LocAddendum.overrideOverloadNoMatch());
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
function isOverrideMethodApplicable(baseMethod, childClass) {
|
|
108
|
+
if (!types_1.FunctionType.isInstanceMethod(baseMethod) &&
|
|
109
|
+
!types_1.FunctionType.isClassMethod(baseMethod) &&
|
|
110
|
+
!types_1.FunctionType.isConstructorMethod(baseMethod)) {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
const baseParamDetails = (0, parameterUtils_1.getParamListDetails)(baseMethod);
|
|
114
|
+
if (baseParamDetails.params.length === 0) {
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
const baseParamType = baseParamDetails.params[0].param;
|
|
118
|
+
if (baseParamType.category !== 0 /* ParamCategory.Simple */ || !types_1.FunctionParam.isTypeDeclared(baseParamType)) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
// If this is a self or cls parameter, determine whether the override
|
|
122
|
+
// class can be assigned to the base parameter type. If not, then this
|
|
123
|
+
// override doesn't apply. This is important for overloads where the
|
|
124
|
+
// base class contains some overload signatures that are not applicable
|
|
125
|
+
// to the child class.
|
|
126
|
+
const childSelfOrClsType = types_1.FunctionType.isInstanceMethod(baseMethod)
|
|
127
|
+
? types_1.ClassType.cloneAsInstance(childClass)
|
|
128
|
+
: childClass;
|
|
129
|
+
return assignType(baseParamDetails.params[0].type, childSelfOrClsType,
|
|
130
|
+
/* diag */ undefined,
|
|
131
|
+
/* constraints */ undefined, 0 /* AssignTypeFlags.Default */);
|
|
132
|
+
}
|
|
133
|
+
function validateOverrideMethodInternal(baseMethod, overrideMethod, diag, enforceParamNames) {
|
|
134
|
+
const baseParamDetails = (0, parameterUtils_1.getParamListDetails)(baseMethod);
|
|
135
|
+
const overrideParamDetails = (0, parameterUtils_1.getParamListDetails)(overrideMethod);
|
|
136
|
+
const constraints = new constraintTracker_1.ConstraintTracker();
|
|
137
|
+
let canOverride = true;
|
|
138
|
+
if (!types_1.FunctionType.isGradualCallableForm(baseMethod) && !types_1.FunctionType.isGradualCallableForm(overrideMethod)) {
|
|
139
|
+
// Verify that we're not overriding a static, class or instance method with
|
|
140
|
+
// an incompatible type.
|
|
141
|
+
if (types_1.FunctionType.isStaticMethod(baseMethod)) {
|
|
142
|
+
if (!types_1.FunctionType.isStaticMethod(overrideMethod)) {
|
|
143
|
+
diag?.addMessage(localize_1.LocAddendum.overrideNotStaticMethod());
|
|
144
|
+
canOverride = false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else if (types_1.FunctionType.isClassMethod(baseMethod)) {
|
|
148
|
+
if (!types_1.FunctionType.isClassMethod(overrideMethod)) {
|
|
149
|
+
diag?.addMessage(localize_1.LocAddendum.overrideNotClassMethod());
|
|
150
|
+
canOverride = false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else if (types_1.FunctionType.isInstanceMethod(baseMethod)) {
|
|
154
|
+
if (!types_1.FunctionType.isInstanceMethod(overrideMethod)) {
|
|
155
|
+
diag?.addMessage(localize_1.LocAddendum.overrideNotInstanceMethod());
|
|
156
|
+
canOverride = false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Verify that the positional param count matches exactly or that the override
|
|
160
|
+
// adds only params that preserve the original signature.
|
|
161
|
+
let foundParamCountMismatch = false;
|
|
162
|
+
if (overrideParamDetails.positionParamCount < baseParamDetails.positionParamCount) {
|
|
163
|
+
if (overrideParamDetails.argsIndex === undefined) {
|
|
164
|
+
foundParamCountMismatch = true;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
const overrideArgsType = overrideParamDetails.params[overrideParamDetails.argsIndex].type;
|
|
168
|
+
for (let i = overrideParamDetails.positionParamCount; i < baseParamDetails.positionParamCount; i++) {
|
|
169
|
+
if (!assignType(overrideArgsType, baseParamDetails.params[i].type, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
|
|
170
|
+
localize_1.LocAddendum.overrideParamType().format({
|
|
171
|
+
index: i + 1,
|
|
172
|
+
baseType: printType(baseParamDetails.params[i].type),
|
|
173
|
+
overrideType: printType(overrideArgsType),
|
|
174
|
+
});
|
|
175
|
+
canOverride = false;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else if (overrideParamDetails.positionParamCount > baseParamDetails.positionParamCount) {
|
|
181
|
+
const isCallableAttrOverriddenByInstanceMethod = baseParamDetails.positionParamCount === 0 &&
|
|
182
|
+
overrideParamDetails.positionParamCount === 1 &&
|
|
183
|
+
types_1.FunctionType.isInstanceMethod(overrideMethod) &&
|
|
184
|
+
!types_1.FunctionType.isStaticMethod(baseMethod) &&
|
|
185
|
+
!types_1.FunctionType.isClassMethod(baseMethod);
|
|
186
|
+
if (!isCallableAttrOverriddenByInstanceMethod) {
|
|
187
|
+
// Verify that all of the override parameters that extend the
|
|
188
|
+
// signature are either *args, **kwargs or parameters with
|
|
189
|
+
// default values.
|
|
190
|
+
for (let i = baseParamDetails.positionParamCount; i < overrideParamDetails.positionParamCount; i++) {
|
|
191
|
+
const overrideParam = overrideParamDetails.params[i].param;
|
|
192
|
+
if (overrideParam.category === 0 /* ParamCategory.Simple */ &&
|
|
193
|
+
overrideParam.name &&
|
|
194
|
+
!overrideParamDetails.params[i].defaultType) {
|
|
195
|
+
foundParamCountMismatch = true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (foundParamCountMismatch) {
|
|
201
|
+
diag?.addMessage(localize_1.LocAddendum.overridePositionalParamCount().format({
|
|
202
|
+
baseCount: baseParamDetails.params.length,
|
|
203
|
+
overrideCount: overrideParamDetails.params.length,
|
|
204
|
+
}));
|
|
205
|
+
canOverride = false;
|
|
206
|
+
}
|
|
207
|
+
const positionalParamCount = Math.min(baseParamDetails.positionParamCount, overrideParamDetails.positionParamCount);
|
|
208
|
+
for (let i = 0; i < positionalParamCount; i++) {
|
|
209
|
+
// If the first parameter is a "self" or "cls" parameter, skip the
|
|
210
|
+
// test because these are allowed to violate the Liskov substitution
|
|
211
|
+
// principle.
|
|
212
|
+
//
|
|
213
|
+
// Note: the checker deliberately defeats this skip for the
|
|
214
|
+
// "callable variable overridden by a method" case by marking both
|
|
215
|
+
// sides static before calling this routine (see
|
|
216
|
+
// `_getCallableVariableOverrideComparison` in checker.ts). Keep the
|
|
217
|
+
// two in sync if this skip logic changes.
|
|
218
|
+
if (i === 0) {
|
|
219
|
+
if (types_1.FunctionType.isInstanceMethod(overrideMethod) ||
|
|
220
|
+
types_1.FunctionType.isClassMethod(overrideMethod) ||
|
|
221
|
+
types_1.FunctionType.isConstructorMethod(overrideMethod)) {
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const baseParam = baseParamDetails.params[i].param;
|
|
226
|
+
const overrideParam = overrideParamDetails.params[i].param;
|
|
227
|
+
if (i >= baseParamDetails.positionOnlyParamCount &&
|
|
228
|
+
!(0, symbolNameUtils_1.isPrivateOrProtectedName)(baseParam.name || '') &&
|
|
229
|
+
baseParamDetails.params[i].kind !== parameterUtils_1.ParamKind.Positional &&
|
|
230
|
+
baseParam.category === 0 /* ParamCategory.Simple */ &&
|
|
231
|
+
enforceParamNames &&
|
|
232
|
+
baseParam.name !== overrideParam.name) {
|
|
233
|
+
if (overrideParam.category === 0 /* ParamCategory.Simple */) {
|
|
234
|
+
if (!types_1.FunctionParam.isNameSynthesized(baseParam)) {
|
|
235
|
+
if (overrideParamDetails.params[i].kind === parameterUtils_1.ParamKind.Positional) {
|
|
236
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamNamePositionOnly().format({
|
|
237
|
+
index: i + 1,
|
|
238
|
+
baseName: baseParam.name || '*',
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamName().format({
|
|
243
|
+
index: i + 1,
|
|
244
|
+
baseName: baseParam.name || '*',
|
|
245
|
+
overrideName: overrideParam.name || '*',
|
|
246
|
+
}));
|
|
247
|
+
}
|
|
248
|
+
canOverride = false;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
else if (i < overrideParamDetails.positionOnlyParamCount &&
|
|
253
|
+
i >= baseParamDetails.positionOnlyParamCount) {
|
|
254
|
+
if (!types_1.FunctionParam.isNameSynthesized(baseParam) &&
|
|
255
|
+
baseParamDetails.params[i].kind !== parameterUtils_1.ParamKind.Positional &&
|
|
256
|
+
baseParamDetails.params[i].kind !== parameterUtils_1.ParamKind.ExpandedArgs) {
|
|
257
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamNamePositionOnly().format({
|
|
258
|
+
index: i + 1,
|
|
259
|
+
baseName: baseParam.name || '*',
|
|
260
|
+
}));
|
|
261
|
+
canOverride = false;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
const baseParamType = baseParamDetails.params[i].type;
|
|
266
|
+
const overrideParamType = overrideParamDetails.params[i].type;
|
|
267
|
+
const baseIsSynthesizedTypeVar = (0, types_1.isTypeVar)(baseParamType) && baseParamType.shared.isSynthesized;
|
|
268
|
+
const overrideIsSynthesizedTypeVar = (0, types_1.isTypeVar)(overrideParamType) && overrideParamType.shared.isSynthesized;
|
|
269
|
+
if (!baseIsSynthesizedTypeVar && !overrideIsSynthesizedTypeVar) {
|
|
270
|
+
if (baseParam.category !== overrideParam.category ||
|
|
271
|
+
!assignType(overrideParamType, baseParamType, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
|
|
272
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamType().format({
|
|
273
|
+
index: i + 1,
|
|
274
|
+
baseType: printType(baseParamType),
|
|
275
|
+
overrideType: printType(overrideParamType),
|
|
276
|
+
}));
|
|
277
|
+
canOverride = false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
if (baseParamDetails.params[i].defaultType && !overrideParamDetails.params[i].defaultType) {
|
|
281
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamNoDefault().format({
|
|
282
|
+
index: i + 1,
|
|
283
|
+
}));
|
|
284
|
+
canOverride = false;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// Check for positional (named) parameters in the base method that
|
|
289
|
+
// do not exist in the override.
|
|
290
|
+
if (enforceParamNames && overrideParamDetails.kwargsIndex === undefined) {
|
|
291
|
+
for (let i = positionalParamCount; i < baseParamDetails.positionParamCount; i++) {
|
|
292
|
+
const baseParam = baseParamDetails.params[i];
|
|
293
|
+
if (baseParam.kind === parameterUtils_1.ParamKind.Standard && baseParam.param.category === 0 /* ParamCategory.Simple */) {
|
|
294
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamNamePositionOnly().format({
|
|
295
|
+
index: i + 1,
|
|
296
|
+
baseName: baseParam.param.name || '*',
|
|
297
|
+
}));
|
|
298
|
+
canOverride = false;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// Check for a *args match.
|
|
303
|
+
if (baseParamDetails.argsIndex !== undefined) {
|
|
304
|
+
if (overrideParamDetails.argsIndex === undefined) {
|
|
305
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamNameMissing().format({
|
|
306
|
+
name: baseParamDetails.params[baseParamDetails.argsIndex].param.name ?? '?',
|
|
307
|
+
}));
|
|
308
|
+
canOverride = false;
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
const overrideParamType = overrideParamDetails.params[overrideParamDetails.argsIndex].type;
|
|
312
|
+
const baseParamType = baseParamDetails.params[baseParamDetails.argsIndex].type;
|
|
313
|
+
if (!assignType(overrideParamType, baseParamType, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
|
|
314
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamKeywordType().format({
|
|
315
|
+
name: overrideParamDetails.params[overrideParamDetails.argsIndex].param.name ?? '?',
|
|
316
|
+
baseType: printType(baseParamType),
|
|
317
|
+
overrideType: printType(overrideParamType),
|
|
318
|
+
}));
|
|
319
|
+
canOverride = false;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Now check any keyword-only parameters.
|
|
324
|
+
const baseKwOnlyParams = baseParamDetails.params.filter((paramInfo) => paramInfo.kind === parameterUtils_1.ParamKind.Keyword && paramInfo.param.category === 0 /* ParamCategory.Simple */);
|
|
325
|
+
const overrideKwOnlyParams = overrideParamDetails.params.filter((paramInfo) => paramInfo.kind === parameterUtils_1.ParamKind.Keyword && paramInfo.param.category === 0 /* ParamCategory.Simple */);
|
|
326
|
+
baseKwOnlyParams.forEach((paramInfo) => {
|
|
327
|
+
const overrideParamInfo = overrideKwOnlyParams.find((pi) => paramInfo.param.name === pi.param.name);
|
|
328
|
+
if (!overrideParamInfo && overrideParamDetails.kwargsIndex === undefined) {
|
|
329
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamNameMissing().format({
|
|
330
|
+
name: paramInfo.param.name ?? '?',
|
|
331
|
+
}));
|
|
332
|
+
canOverride = false;
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
let targetParamType = overrideParamInfo?.type;
|
|
336
|
+
if (!targetParamType) {
|
|
337
|
+
targetParamType = overrideParamDetails.params[overrideParamDetails.kwargsIndex].type;
|
|
338
|
+
}
|
|
339
|
+
if (!assignType(targetParamType, paramInfo.type, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
|
|
340
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamKeywordType().format({
|
|
341
|
+
name: paramInfo.param.name ?? '?',
|
|
342
|
+
baseType: printType(paramInfo.type),
|
|
343
|
+
overrideType: printType(targetParamType),
|
|
344
|
+
}));
|
|
345
|
+
canOverride = false;
|
|
346
|
+
}
|
|
347
|
+
if (overrideParamInfo) {
|
|
348
|
+
if (paramInfo.defaultType && !overrideParamInfo.defaultType) {
|
|
349
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamKeywordNoDefault().format({
|
|
350
|
+
name: overrideParamInfo.param.name ?? '?',
|
|
351
|
+
}));
|
|
352
|
+
canOverride = false;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
// Verify that any keyword-only parameters added by the overload are compatible
|
|
358
|
+
// with the **kwargs in the base.
|
|
359
|
+
overrideKwOnlyParams.forEach((paramInfo) => {
|
|
360
|
+
const baseParamInfo = baseKwOnlyParams.find((pi) => paramInfo.param.name === pi.param.name);
|
|
361
|
+
if (!baseParamInfo) {
|
|
362
|
+
if (baseParamDetails.kwargsIndex === undefined) {
|
|
363
|
+
if (!paramInfo.defaultType) {
|
|
364
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamNameExtra().format({
|
|
365
|
+
name: paramInfo.param.name ?? '?',
|
|
366
|
+
}));
|
|
367
|
+
canOverride = false;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
// Base has a **kwargs; ensure the added keyword-only parameter's
|
|
372
|
+
// type is compatible with the base's **kwargs value type.
|
|
373
|
+
const baseKwargsType = baseParamDetails.params[baseParamDetails.kwargsIndex].type;
|
|
374
|
+
if (!assignType(paramInfo.type, baseKwargsType, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
|
|
375
|
+
diag?.addMessage(localize_1.LocAddendum.overrideParamKeywordType().format({
|
|
376
|
+
name: paramInfo.param.name ?? '?',
|
|
377
|
+
baseType: printType(baseKwargsType),
|
|
378
|
+
overrideType: printType(paramInfo.type),
|
|
379
|
+
}));
|
|
380
|
+
canOverride = false;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
// Verify that if the base method has a **kwargs parameter, the override does too.
|
|
386
|
+
if (baseParamDetails.kwargsIndex !== undefined && overrideParamDetails.kwargsIndex === undefined) {
|
|
387
|
+
diag?.addMessage(localize_1.LocAddendum.kwargsParamMissing().format({
|
|
388
|
+
paramName: baseParamDetails.params[baseParamDetails.kwargsIndex].param.name,
|
|
389
|
+
}));
|
|
390
|
+
canOverride = false;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
// Verify that one or the other method doesn't contain a ParamSpec.
|
|
394
|
+
if (baseParamDetails.paramSpec && !overrideParamDetails.paramSpec) {
|
|
395
|
+
// If the override uses an `*args: Any, **kwargs: Any` signature, we
|
|
396
|
+
// will allow this as an acceptable overload for a `*args: P.args, **kwargs: P.kwargs`.
|
|
397
|
+
const overrideHasArgsKwargs = overrideParamDetails.argsIndex !== undefined &&
|
|
398
|
+
(0, types_1.isAnyOrUnknown)(overrideParamDetails.params[overrideParamDetails.argsIndex].type) &&
|
|
399
|
+
overrideParamDetails.kwargsIndex !== undefined &&
|
|
400
|
+
(0, types_1.isAnyOrUnknown)(overrideParamDetails.params[overrideParamDetails.kwargsIndex].type);
|
|
401
|
+
if (!overrideHasArgsKwargs) {
|
|
402
|
+
diag?.addMessage(localize_1.LocAddendum.paramSpecMissingInOverride());
|
|
403
|
+
canOverride = false;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
// Now check the return type.
|
|
407
|
+
const baseReturnType = getEffectiveReturnType(baseMethod);
|
|
408
|
+
const overrideReturnType = solveAndApplyConstraints(getEffectiveReturnType(overrideMethod), constraints);
|
|
409
|
+
if (!assignType(baseReturnType, overrideReturnType, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
|
|
410
|
+
diag?.addMessage(localize_1.LocAddendum.overrideReturnType().format({
|
|
411
|
+
baseType: printType(baseReturnType),
|
|
412
|
+
overrideType: printType(overrideReturnType),
|
|
413
|
+
}));
|
|
414
|
+
canOverride = false;
|
|
415
|
+
}
|
|
416
|
+
return canOverride;
|
|
417
|
+
}
|
|
418
|
+
return {
|
|
419
|
+
validateOverrideMethod,
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=overrideValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overrideValidation.js","sourceRoot":"","sources":["../../../../../../src/analyzer/typeEvaluator/overrideValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ExpressionNode, FunctionNode, ParseNode } from '../../parser/parseNodes';
|
|
2
|
+
import * as AnalyzerNodeInfo from '../analyzerNodeInfo';
|
|
3
|
+
import { CodeFlowEngine } from '../codeFlowEngine';
|
|
4
|
+
import { SpeculativeTypeTracker } from '../typeCacheUtils';
|
|
5
|
+
import { ReturnTypeInferenceContext, TypeCacheEntry, TypeFormTypeCacheEntry } from '../typeEvaluator/internals';
|
|
6
|
+
import { CallSiteEvaluationInfo, EvalFlags, FunctionTypeResult, TypeEvaluator, TypeResult } from '../typeEvaluatorTypes';
|
|
7
|
+
import { FunctionType, Type } from '../types';
|
|
8
|
+
import { InferenceContext } from '../typeUtils';
|
|
9
|
+
interface Context {
|
|
10
|
+
readonly codeFlowEngine: CodeFlowEngine;
|
|
11
|
+
readonly convertSpecialFormToRuntimeValue: (type: Type, flags: EvalFlags, convertModule?: boolean) => Type;
|
|
12
|
+
readonly getTypeOfExpression: TypeEvaluator['getTypeOfExpression'];
|
|
13
|
+
readonly getTypeOfFunction: (node: FunctionNode) => FunctionTypeResult | undefined;
|
|
14
|
+
readonly inferFunctionReturnType: (node: FunctionNode, isAbstract: boolean, callerNode: ExpressionNode | undefined) => TypeResult | undefined;
|
|
15
|
+
readonly maxCallSiteReturnTypeCacheSize: 8;
|
|
16
|
+
readonly maxReturnCallSiteTypeInferenceCodeFlowComplexity: 8;
|
|
17
|
+
readonly maxReturnTypeInferenceArgCount: 6;
|
|
18
|
+
readonly maxReturnTypeInferenceStackSize: 2;
|
|
19
|
+
readonly nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoAccessor;
|
|
20
|
+
readonly returnTypeInferenceContextStack: ReturnTypeInferenceContext[];
|
|
21
|
+
returnTypeInferenceTypeCache: Map<number, TypeCacheEntry> | undefined;
|
|
22
|
+
returnTypeInferenceTypeFormTypeCache: Map<number, TypeFormTypeCacheEntry[]> | undefined;
|
|
23
|
+
readonly speculativeTypeTracker: SpeculativeTypeTracker;
|
|
24
|
+
readonly stripLiteralValue: (type: Type) => Type;
|
|
25
|
+
readonly suppressDiagnostics: <T>(node: ParseNode, callback: () => T, diagCallback?: (suppressedDiags: string[]) => void) => T;
|
|
26
|
+
readonly writeTypeCache: (node: ParseNode, typeResult: TypeResult, flags: EvalFlags | undefined, inferenceContext?: InferenceContext, allowSpeculativeCaching?: boolean) => void;
|
|
27
|
+
}
|
|
28
|
+
export declare function createReturnTypeInference(context: Context): {
|
|
29
|
+
isNodeInReturnTypeInferenceContext: (node: ParseNode) => boolean;
|
|
30
|
+
getCodeFlowAnalyzerForReturnTypeInferenceContext: () => import("../codeFlowEngine").CodeFlowAnalyzer;
|
|
31
|
+
inferReturnTypeForCallSite: (type: FunctionType, callSiteInfo: CallSiteEvaluationInfo) => Type | undefined;
|
|
32
|
+
};
|
|
33
|
+
export {};
|