@zzzen/pyright-internal 1.2.0-dev.20231029 → 1.2.0-dev.20231112
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/analyzerFileInfo.d.ts +1 -0
- package/dist/analyzer/analyzerFileInfo.js.map +1 -1
- package/dist/analyzer/checker.js +99 -105
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +12 -33
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowUtils.js +4 -2
- package/dist/analyzer/codeFlowUtils.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +21 -23
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +4 -6
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/constructors.d.ts +6 -3
- package/dist/analyzer/constructors.js +66 -41
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +13 -18
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declarationUtils.js +1 -1
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/decorators.js +1 -1
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/enums.d.ts +2 -5
- package/dist/analyzer/enums.js +5 -3
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/functionTransform.js +1 -1
- package/dist/analyzer/functionTransform.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +4 -2
- package/dist/analyzer/importResolver.js +30 -10
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +1 -1
- package/dist/analyzer/importStatementUtils.js +33 -5
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.js +3 -2
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.js +34 -31
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +28 -26
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +1 -0
- package/dist/analyzer/parseTreeUtils.js +17 -2
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +6 -6
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +1 -1
- package/dist/analyzer/program.js +34 -21
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +25 -28
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.d.ts +1 -1
- package/dist/analyzer/protocols.js +15 -19
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.js +12 -6
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +1 -0
- package/dist/analyzer/sourceFile.js +36 -2
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +1 -1
- package/dist/analyzer/sourceFileInfoUtils.js +9 -3
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/tracePrinter.js +11 -13
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.js +3 -3
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.d.ts +3 -1
- package/dist/analyzer/typeEvaluator.js +1184 -1270
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +13 -26
- package/dist/analyzer/typeEvaluatorTypes.js +1 -36
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +37 -32
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.js +19 -18
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +17 -8
- package/dist/analyzer/typeUtils.js +149 -94
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.js +6 -7
- package/dist/analyzer/typeVarContext.js.map +1 -1
- package/dist/analyzer/typeWalker.d.ts +1 -2
- package/dist/analyzer/typeWalker.js +7 -13
- package/dist/analyzer/typeWalker.js.map +1 -1
- package/dist/analyzer/typedDicts.js +10 -10
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +11 -20
- package/dist/analyzer/types.js +45 -77
- package/dist/analyzer/types.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +7 -9
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +2 -1
- package/dist/common/commandLineOptions.js +1 -1
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/configOptions.d.ts +3 -2
- package/dist/common/configOptions.js +40 -25
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/extensibility.d.ts +3 -0
- package/dist/common/pathUtils.d.ts +1 -1
- package/dist/common/pathUtils.js +11 -10
- package/dist/common/pathUtils.js.map +1 -1
- package/dist/common/realFileSystem.js +4 -6
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/serviceProviderExtensions.d.ts +2 -1
- package/dist/common/serviceProviderExtensions.js +1 -0
- package/dist/common/serviceProviderExtensions.js.map +1 -1
- package/dist/common/textEditTracker.js +2 -2
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/languageServerBase.d.ts +3 -3
- package/dist/languageServerBase.js +18 -15
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +1 -1
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +3 -3
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +2 -1
- package/dist/languageService/completionProvider.js +12 -10
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/completionProviderUtils.js +1 -1
- package/dist/languageService/definitionProvider.js +1 -1
- package/dist/languageService/documentSymbolCollector.js +1 -1
- package/dist/languageService/hoverProvider.js +1 -1
- package/dist/languageService/signatureHelpProvider.js +0 -14
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +4 -4
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/localization/localize.d.ts +16 -0
- package/dist/localization/localize.js +6 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +4 -1
- package/dist/localization/package.nls.de.json +4 -1
- package/dist/localization/package.nls.en-us.json +7 -1
- package/dist/localization/package.nls.es.json +4 -1
- package/dist/localization/package.nls.fr.json +4 -1
- package/dist/localization/package.nls.it.json +4 -1
- package/dist/localization/package.nls.ja.json +4 -1
- package/dist/localization/package.nls.ko.json +4 -1
- package/dist/localization/package.nls.pl.json +4 -1
- package/dist/localization/package.nls.pt-br.json +4 -1
- package/dist/localization/package.nls.qps-ploc.json +3 -0
- package/dist/localization/package.nls.ru.json +4 -1
- package/dist/localization/package.nls.tr.json +4 -1
- package/dist/localization/package.nls.zh-cn.json +4 -1
- package/dist/localization/package.nls.zh-tw.json +4 -1
- package/dist/pyright.js +3 -6
- package/dist/pyright.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.js +10 -1
- package/dist/server.js.map +1 -1
- package/dist/tests/diagnosticOverrides.test.js +4 -2
- package/dist/tests/diagnosticOverrides.test.js.map +1 -1
- package/dist/tests/fourslash/{completions.importInterimFile.fourslash.js → completions.importInterimFile.fourslash.disabled.js} +2 -2
- package/dist/tests/fourslash/completions.importInterimFile.fourslash.disabled.js.map +1 -0
- package/dist/tests/fourslash/fourslash.d.ts +1 -1
- package/dist/tests/fourslash/signature.complicated.fourslash.js +6 -6
- package/dist/tests/fourslash/signature.complicated.fourslash.js.map +1 -1
- package/dist/tests/fourslash/signature.dunderNew.fourslash.js +1 -1
- package/dist/tests/fourslash/signature.dunderNew.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +1 -1
- package/dist/tests/harness/fourslash/testState.js +4 -4
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.js +1 -1
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/logger.test.js +0 -1
- package/dist/tests/logger.test.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +15 -0
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/pathUtils.test.js +30 -1
- package/dist/tests/pathUtils.test.js.map +1 -1
- package/dist/tests/testUtils.js +2 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/textEditUtil.test.js +25 -0
- package/dist/tests/textEditUtil.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +7 -3
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +5 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +10 -4
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +11 -7
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typePrinter.test.js +12 -16
- package/dist/tests/typePrinter.test.js.map +1 -1
- package/dist/tests/zipfs.test.js +2 -0
- package/dist/tests/zipfs.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/tests/fourslash/completions.importInterimFile.fourslash.js.map +0 -1
- /package/dist/tests/fourslash/{completions.importInterimFile.fourslash.d.ts → completions.importInterimFile.fourslash.disabled.d.ts} +0 -0
@@ -12,7 +12,7 @@ import { SymbolWithScope } from './scope';
|
|
12
12
|
import { Symbol } from './symbol';
|
13
13
|
import { PrintTypeFlags } from './typePrinter';
|
14
14
|
import { AnyType, ClassType, FunctionParameter, FunctionType, OverloadedFunctionType, Type, TypeCondition, TypeVarType, UnknownType } from './types';
|
15
|
-
import { AssignTypeFlags, ClassMember, InferenceContext } from './typeUtils';
|
15
|
+
import { AssignTypeFlags, ClassMember, InferenceContext, MemberAccessFlags } from './typeUtils';
|
16
16
|
import { TypeVarContext } from './typeVarContext';
|
17
17
|
export declare const maxSubtypesForInferredType = 64;
|
18
18
|
export declare const enum EvaluatorFlags {
|
@@ -49,7 +49,7 @@ export declare const enum EvaluatorFlags {
|
|
49
49
|
export interface TypeResult<T extends Type = Type> {
|
50
50
|
type: T;
|
51
51
|
isIncomplete?: boolean | undefined;
|
52
|
-
|
52
|
+
bindToSelfType?: ClassType | TypeVarType | undefined;
|
53
53
|
unpackedType?: Type | undefined;
|
54
54
|
typeList?: TypeResultWithNode[] | undefined;
|
55
55
|
inlinedTypeDict?: ClassType;
|
@@ -187,7 +187,7 @@ export interface ClassMemberLookup {
|
|
187
187
|
symbol: Symbol | undefined;
|
188
188
|
type: Type;
|
189
189
|
isTypeIncomplete: boolean;
|
190
|
-
|
190
|
+
isDescriptorError: boolean;
|
191
191
|
isClassMember: boolean;
|
192
192
|
classType?: ClassType | UnknownType | AnyType;
|
193
193
|
isClassVar: boolean;
|
@@ -211,19 +211,6 @@ export interface ResolveAliasOptions {
|
|
211
211
|
allowExternallyHiddenAccess?: boolean;
|
212
212
|
skipFileNeededCheck?: boolean;
|
213
213
|
}
|
214
|
-
export declare const enum MemberAccessFlags {
|
215
|
-
None = 0,
|
216
|
-
AccessClassMembersOnly = 1,
|
217
|
-
AccessInstanceMembersOnly = 2,
|
218
|
-
SkipBaseClasses = 4,
|
219
|
-
SkipObjectBaseClass = 8,
|
220
|
-
DisallowClassVarWrites = 16,
|
221
|
-
TreatConstructorAsClassMethod = 32,
|
222
|
-
ConsiderMetaclassOnly = 64,
|
223
|
-
SkipAttributeAccessOverride = 128,
|
224
|
-
SkipOriginalClass = 256,
|
225
|
-
SkipTypeBaseClass = 512
|
226
|
-
}
|
227
214
|
export interface ValidateTypeArgsOptions {
|
228
215
|
allowEmptyTuple?: boolean;
|
229
216
|
allowVariadicTypeVar?: boolean;
|
@@ -266,8 +253,8 @@ export interface TypeEvaluator {
|
|
266
253
|
getTypeForDeclaration: (declaration: Declaration) => DeclaredSymbolTypeInfo;
|
267
254
|
resolveAliasDeclaration: (declaration: Declaration, resolveLocalNames: boolean, options?: ResolveAliasOptions) => Declaration | undefined;
|
268
255
|
resolveAliasDeclarationWithInfo: (declaration: Declaration, resolveLocalNames: boolean, options?: ResolveAliasOptions) => DeclarationUtils.ResolvedAliasInfo | undefined;
|
269
|
-
getTypeOfIterable: (typeResult: TypeResult, isAsync: boolean, errorNode: ExpressionNode
|
270
|
-
getTypeOfIterator: (typeResult: TypeResult, isAsync: boolean, errorNode: ExpressionNode
|
256
|
+
getTypeOfIterable: (typeResult: TypeResult, isAsync: boolean, errorNode: ExpressionNode, emitNotIterableError?: boolean) => TypeResult | undefined;
|
257
|
+
getTypeOfIterator: (typeResult: TypeResult, isAsync: boolean, errorNode: ExpressionNode, emitNotIterableError?: boolean) => TypeResult | undefined;
|
271
258
|
getGetterTypeFromProperty: (propertyClass: ClassType, inferTypeIfNeeded: boolean) => Type | undefined;
|
272
259
|
getTypeOfArgument: (arg: FunctionArgument) => TypeResult;
|
273
260
|
markNamesAccessed: (node: ParseNode, names: string[]) => void;
|
@@ -286,11 +273,10 @@ export interface TypeEvaluator {
|
|
286
273
|
getBestOverloadForArguments: (errorNode: ExpressionNode, typeResult: TypeResult<OverloadedFunctionType>, argList: FunctionArgument[]) => FunctionType | undefined;
|
287
274
|
getBuiltInType: (node: ParseNode, name: string) => Type;
|
288
275
|
getTypeOfMember: (member: ClassMember) => Type;
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
bindFunctionToClassOrObject: (baseType: ClassType | undefined, memberType: FunctionType | OverloadedFunctionType, memberClass?: ClassType, treatConstructorAsClassMember?: boolean, firstParamType?: ClassType | TypeVarType, diag?: DiagnosticAddendum, recursionCount?: number) => FunctionType | OverloadedFunctionType | undefined;
|
276
|
+
getTypeOfBoundMember(errorNode: ExpressionNode, objectType: ClassType, memberName: string, usage?: EvaluatorUsage, diag?: DiagnosticAddendum | undefined, flags?: MemberAccessFlags, selfType?: ClassType | TypeVarType): TypeResult | undefined;
|
277
|
+
getBoundMagicMethod: (classType: ClassType, memberName: string, selfType?: ClassType | TypeVarType | undefined, recursionCount?: number) => FunctionType | OverloadedFunctionType | undefined;
|
278
|
+
getTypeOfMagicMethodCall: (objType: Type, methodName: string, argList: TypeResult[], errorNode: ExpressionNode, inferenceContext: InferenceContext | undefined) => Type | undefined;
|
279
|
+
bindFunctionToClassOrObject: (baseType: ClassType | undefined, memberType: FunctionType | OverloadedFunctionType, memberClass?: ClassType, treatConstructorAsClassMember?: boolean, selfType?: ClassType | TypeVarType, diag?: DiagnosticAddendum, recursionCount?: number) => FunctionType | OverloadedFunctionType | undefined;
|
294
280
|
getCallSignatureInfo: (node: CallNode, activeIndex: number, activeOrFake: boolean) => CallSignatureInfo | undefined;
|
295
281
|
getAbstractMethods: (classType: ClassType) => AbstractMethod[];
|
296
282
|
narrowConstrainedTypeVar: (node: ParseNode, typeVar: TypeVarType) => Type | undefined;
|
@@ -301,9 +287,10 @@ export interface TypeEvaluator {
|
|
301
287
|
assignTypeToExpression: (target: ExpressionNode, type: Type, isTypeIncomplete: boolean, srcExpr: ExpressionNode) => void;
|
302
288
|
assignClassToSelf: (destType: ClassType, srcType: ClassType) => boolean;
|
303
289
|
getBuiltInObject: (node: ParseNode, name: string, typeArguments?: Type[]) => Type;
|
304
|
-
getTypedDictClassType: () =>
|
305
|
-
getTupleClassType: () =>
|
306
|
-
getObjectType: () => Type
|
290
|
+
getTypedDictClassType: () => ClassType | undefined;
|
291
|
+
getTupleClassType: () => ClassType | undefined;
|
292
|
+
getObjectType: () => Type;
|
293
|
+
getNoneType: () => Type;
|
307
294
|
getTypingType: (node: ParseNode, symbolName: string) => Type | undefined;
|
308
295
|
inferReturnTypeIfNecessary: (type: Type) => void;
|
309
296
|
inferTypeParameterVarianceForClass: (type: ClassType) => void;
|
@@ -8,7 +8,7 @@
|
|
8
8
|
* Abstract interface and other helper types for type evaluator module.
|
9
9
|
*/
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
11
|
-
exports.
|
11
|
+
exports.EvaluatorFlags = exports.maxSubtypesForInferredType = void 0;
|
12
12
|
// Maximum number of unioned subtypes for an inferred type (e.g.
|
13
13
|
// a list) before the type is considered an "Any".
|
14
14
|
exports.maxSubtypesForInferredType = 64;
|
@@ -88,39 +88,4 @@ var EvaluatorFlags;
|
|
88
88
|
// Defaults used for evaluating the LHS of a member access expression.
|
89
89
|
EvaluatorFlags[EvaluatorFlags["MemberAccessBaseDefaults"] = 16777218] = "MemberAccessBaseDefaults";
|
90
90
|
})(EvaluatorFlags = exports.EvaluatorFlags || (exports.EvaluatorFlags = {}));
|
91
|
-
var MemberAccessFlags;
|
92
|
-
(function (MemberAccessFlags) {
|
93
|
-
MemberAccessFlags[MemberAccessFlags["None"] = 0] = "None";
|
94
|
-
// By default, member accesses are assumed to access the attributes
|
95
|
-
// of a class instance. By setting this flag, only attributes of
|
96
|
-
// the class are considered.
|
97
|
-
MemberAccessFlags[MemberAccessFlags["AccessClassMembersOnly"] = 1] = "AccessClassMembersOnly";
|
98
|
-
// Consider only instance members, not members that could be
|
99
|
-
// class members.
|
100
|
-
MemberAccessFlags[MemberAccessFlags["AccessInstanceMembersOnly"] = 2] = "AccessInstanceMembersOnly";
|
101
|
-
// By default, members of base classes are also searched.
|
102
|
-
// Set this flag to consider only the specified class' members.
|
103
|
-
MemberAccessFlags[MemberAccessFlags["SkipBaseClasses"] = 4] = "SkipBaseClasses";
|
104
|
-
// Do not include the "object" base class in the search.
|
105
|
-
MemberAccessFlags[MemberAccessFlags["SkipObjectBaseClass"] = 8] = "SkipObjectBaseClass";
|
106
|
-
// Consider writes to symbols flagged as ClassVars as an error.
|
107
|
-
MemberAccessFlags[MemberAccessFlags["DisallowClassVarWrites"] = 16] = "DisallowClassVarWrites";
|
108
|
-
// Normally __new__ is treated as a static method, but when
|
109
|
-
// it is invoked implicitly through a constructor call, it
|
110
|
-
// acts like a class method instead.
|
111
|
-
MemberAccessFlags[MemberAccessFlags["TreatConstructorAsClassMethod"] = 32] = "TreatConstructorAsClassMethod";
|
112
|
-
// By default, class member lookups start with the class itself
|
113
|
-
// and fall back on the metaclass if it's not found. This option
|
114
|
-
// skips the first check.
|
115
|
-
MemberAccessFlags[MemberAccessFlags["ConsiderMetaclassOnly"] = 64] = "ConsiderMetaclassOnly";
|
116
|
-
// If an attribute cannot be found when looking for instance
|
117
|
-
// members, normally an attribute access override method
|
118
|
-
// (__getattr__, etc.) may provide the missing attribute type.
|
119
|
-
// This disables this check.
|
120
|
-
MemberAccessFlags[MemberAccessFlags["SkipAttributeAccessOverride"] = 128] = "SkipAttributeAccessOverride";
|
121
|
-
// Do not include the class itself, only base classes.
|
122
|
-
MemberAccessFlags[MemberAccessFlags["SkipOriginalClass"] = 256] = "SkipOriginalClass";
|
123
|
-
// Do not include the "type" base class in the search.
|
124
|
-
MemberAccessFlags[MemberAccessFlags["SkipTypeBaseClass"] = 512] = "SkipTypeBaseClass";
|
125
|
-
})(MemberAccessFlags = exports.MemberAccessFlags || (exports.MemberAccessFlags = {}));
|
126
91
|
//# sourceMappingURL=typeEvaluatorTypes.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA8CH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,cAsGjB;AAtGD,WAAkB,cAAc;IAC5B,mDAAQ,CAAA;IAER,uDAAuD;IACvD,mFAA6B,CAAA;IAE7B,0DAA0D;IAC1D,gEAAgE;IAChE,SAAS;IACT,yEAAwB,CAAA;IAExB,yDAAyD;IACzD,uFAA+B,CAAA;IAE/B,kCAAkC;IAClC,iGAAoC,CAAA;IAEpC,0CAA0C;IAC1C,sEAAsB,CAAA;IAEtB,6CAA6C;IAC7C,8EAA0B,CAAA;IAE1B,gDAAgD;IAChD,oFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,4BAA4B;IAC5B,+FAAkC,CAAA;IAElC,gEAAgE;IAChE,6DAA6D;IAC7D,qBAAqB;IACrB,2FAAgC,CAAA;IAEhC,qEAAqE;IACrE,qFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,gDAAgD;IAChD,wFAA+B,CAAA;IAE/B,8DAA8D;IAC9D,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,oEAAoE;IACpE,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,yDAAyD;IACzD,2DAA2D;IAC3D,mCAAmC;IACnC,gHAA2C,CAAA;IAE3C,yDAAyD;IACzD,6DAA6D;IAC7D,uDAAuD;IACvD,iHAA2C,CAAA;IAE3C,mDAAmD;IACnD,2FAAgC,CAAA;IAEhC,6CAA6C;IAC7C,gFAA0B,CAAA;IAE1B,mEAAmE;IACnE,wFAA8B,CAAA;IAE9B,iEAAiE;IACjE,iCAAiC;IACjC,4FAAgC,CAAA;IAEhC,wDAAwD;IACxD,2EAAuB,CAAA;IAEvB,uDAAuD;IACvD,iHAA0C,CAAA;IAE1C,6DAA6D;IAC7D,2DAA2D;IAC3D,oDAAoD;IACpD,6GAAwC,CAAA;IAExC,yCAAyC;IACzC,6FAAgC,CAAA;IAEhC,yDAAyD;IACzD,gGAAiC,CAAA;IAEjC,yDAAyD;IACzD,gEAAgE;IAChE,wHAA6C,CAAA;IAE7C,6DAA6D;IAC7D,kFAA4D,CAAA;IAE5D,sEAAsE;IACtE,6EAAmC,CAAA;IAEnC,sEAAsE;IACtE,kGAAoE,CAAA;AACxE,CAAC,EAtGiB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAsG/B
|
1
|
+
{"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA8CH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,cAsGjB;AAtGD,WAAkB,cAAc;IAC5B,mDAAQ,CAAA;IAER,uDAAuD;IACvD,mFAA6B,CAAA;IAE7B,0DAA0D;IAC1D,gEAAgE;IAChE,SAAS;IACT,yEAAwB,CAAA;IAExB,yDAAyD;IACzD,uFAA+B,CAAA;IAE/B,kCAAkC;IAClC,iGAAoC,CAAA;IAEpC,0CAA0C;IAC1C,sEAAsB,CAAA;IAEtB,6CAA6C;IAC7C,8EAA0B,CAAA;IAE1B,gDAAgD;IAChD,oFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,4BAA4B;IAC5B,+FAAkC,CAAA;IAElC,gEAAgE;IAChE,6DAA6D;IAC7D,qBAAqB;IACrB,2FAAgC,CAAA;IAEhC,qEAAqE;IACrE,qFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,gDAAgD;IAChD,wFAA+B,CAAA;IAE/B,8DAA8D;IAC9D,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,oEAAoE;IACpE,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,yDAAyD;IACzD,2DAA2D;IAC3D,mCAAmC;IACnC,gHAA2C,CAAA;IAE3C,yDAAyD;IACzD,6DAA6D;IAC7D,uDAAuD;IACvD,iHAA2C,CAAA;IAE3C,mDAAmD;IACnD,2FAAgC,CAAA;IAEhC,6CAA6C;IAC7C,gFAA0B,CAAA;IAE1B,mEAAmE;IACnE,wFAA8B,CAAA;IAE9B,iEAAiE;IACjE,iCAAiC;IACjC,4FAAgC,CAAA;IAEhC,wDAAwD;IACxD,2EAAuB,CAAA;IAEvB,uDAAuD;IACvD,iHAA0C,CAAA;IAE1C,6DAA6D;IAC7D,2DAA2D;IAC3D,oDAAoD;IACpD,6GAAwC,CAAA;IAExC,yCAAyC;IACzC,6FAAgC,CAAA;IAEhC,yDAAyD;IACzD,gGAAiC,CAAA;IAEjC,yDAAyD;IACzD,gEAAgE;IAChE,wHAA6C,CAAA;IAE7C,6DAA6D;IAC7D,kFAA4D,CAAA;IAE5D,sEAAsE;IACtE,6EAAmC,CAAA;IAEnC,sEAAsE;IACtE,kGAAoE,CAAA;AACxE,CAAC,EAtGiB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAsG/B"}
|
@@ -30,6 +30,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
30
|
};
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
32
32
|
exports.func1 = exports.Tree = exports.Plant = exports.Dog = exports.Animal = exports.enumerateLiteralsForType = exports.narrowTypeForDiscriminatedTupleComparison = exports.narrowTypeForDiscriminatedDictEntryComparison = exports.narrowTypeForContainerElementType = exports.getElementTypeForContainerNarrowing = exports.isIsinstanceFilterSubclass = exports.isIsinstanceFilterSuperclass = exports.getTypeNarrowingCallback = void 0;
|
33
|
+
const debug_1 = require("../common/debug");
|
33
34
|
const parseNodes_1 = require("../parser/parseNodes");
|
34
35
|
const analyzerNodeInfo_1 = require("./analyzerNodeInfo");
|
35
36
|
const constraintSolver_1 = require("./constraintSolver");
|
@@ -719,12 +720,12 @@ function narrowTupleTypeForIsNone(evaluator, type, isPositiveTest, indexValue) {
|
|
719
720
|
}
|
720
721
|
const typeOfEntry = evaluator.makeTopLevelTypeVarsConcrete(tupleType.tupleTypeArguments[indexValue].type);
|
721
722
|
if (isPositiveTest) {
|
722
|
-
if (!evaluator.assignType(typeOfEntry,
|
723
|
+
if (!evaluator.assignType(typeOfEntry, evaluator.getNoneType())) {
|
723
724
|
return undefined;
|
724
725
|
}
|
725
726
|
}
|
726
727
|
else {
|
727
|
-
if ((0,
|
728
|
+
if ((0, typeUtils_1.isNoneInstance)(typeOfEntry)) {
|
728
729
|
return undefined;
|
729
730
|
}
|
730
731
|
}
|
@@ -754,12 +755,15 @@ function narrowTypeForIsNone(evaluator, type, isPositiveTest) {
|
|
754
755
|
if ((0, types_1.isClassInstance)(subtype) && types_1.ClassType.isBuiltIn(subtype, 'object')) {
|
755
756
|
resultIncludesNoneSubtype = true;
|
756
757
|
return isPositiveTest
|
757
|
-
? (0, typeUtils_1.addConditionToType)(
|
758
|
+
? (0, typeUtils_1.addConditionToType)(evaluator.getNoneType(), subtype.condition)
|
758
759
|
: adjustedSubtype;
|
759
760
|
}
|
760
761
|
// See if it's a match for None.
|
761
|
-
if ((0,
|
762
|
+
if ((0, typeUtils_1.isNoneInstance)(subtype) === isPositiveTest) {
|
762
763
|
resultIncludesNoneSubtype = true;
|
764
|
+
if ((0, types_1.isTypeVar)(adjustedSubtype) && adjustedSubtype.details.isSynthesizedSelf) {
|
765
|
+
return adjustedSubtype;
|
766
|
+
}
|
763
767
|
return subtype;
|
764
768
|
}
|
765
769
|
return undefined;
|
@@ -769,7 +773,7 @@ function narrowTypeForIsNone(evaluator, type, isPositiveTest) {
|
|
769
773
|
// of the subtypes are None types with conditions, retain those.
|
770
774
|
if (isPositiveTest && resultIncludesNoneSubtype) {
|
771
775
|
return (0, typeUtils_1.mapSubtypes)(result, (subtype) => {
|
772
|
-
return (0,
|
776
|
+
return (0, typeUtils_1.isNoneInstance)(subtype) ? subtype : undefined;
|
773
777
|
});
|
774
778
|
}
|
775
779
|
return result;
|
@@ -795,7 +799,7 @@ function narrowTypeForIsEllipsis(evaluator, type, isPositiveTest) {
|
|
795
799
|
// See if it's a match for object.
|
796
800
|
if ((0, types_1.isClassInstance)(subtype) && types_1.ClassType.isBuiltIn(subtype, 'object')) {
|
797
801
|
return isPositiveTest
|
798
|
-
? (0, typeUtils_1.addConditionToType)(
|
802
|
+
? (0, typeUtils_1.addConditionToType)(evaluator.getNoneType(), subtype.condition)
|
799
803
|
: adjustedSubtype;
|
800
804
|
}
|
801
805
|
const isEllipsis = (0, types_1.isClassInstance)(subtype) && types_1.ClassType.isBuiltIn(subtype, 'ellipsis');
|
@@ -820,7 +824,8 @@ function getIsInstanceClassTypes(argType) {
|
|
820
824
|
if ((0, types_1.isInstantiableClass)(subtype) || ((0, types_1.isTypeVar)(subtype) && types_1.TypeBase.isInstantiable(subtype))) {
|
821
825
|
classTypeList.push(subtype);
|
822
826
|
}
|
823
|
-
else if ((0,
|
827
|
+
else if ((0, typeUtils_1.isNoneTypeClass)(subtype)) {
|
828
|
+
(0, debug_1.assert)((0, types_1.isInstantiableClass)(subtype));
|
824
829
|
classTypeList.push(subtype);
|
825
830
|
}
|
826
831
|
else if ((0, types_1.isFunction)(subtype) &&
|
@@ -1070,7 +1075,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
1070
1075
|
isCallable = true;
|
1071
1076
|
}
|
1072
1077
|
else {
|
1073
|
-
isCallable = !!(0, typeUtils_1.lookUpClassMember)(concreteVarType, '__call__',
|
1078
|
+
isCallable = !!(0, typeUtils_1.lookUpClassMember)(concreteVarType, '__call__', 16 /* SkipInstanceMembers */);
|
1074
1079
|
}
|
1075
1080
|
}
|
1076
1081
|
if (isCallable) {
|
@@ -1188,7 +1193,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
1188
1193
|
return filteredTypes;
|
1189
1194
|
};
|
1190
1195
|
const classListContainsNoneType = () => classTypeList.some((t) => {
|
1191
|
-
if ((0,
|
1196
|
+
if ((0, typeUtils_1.isNoneTypeClass)(t)) {
|
1192
1197
|
return true;
|
1193
1198
|
}
|
1194
1199
|
return (0, types_1.isInstantiableClass)(t) && types_1.ClassType.isBuiltIn(t, 'NoneType');
|
@@ -1221,7 +1226,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
1221
1226
|
return undefined;
|
1222
1227
|
}
|
1223
1228
|
if (isInstanceCheck) {
|
1224
|
-
if ((0,
|
1229
|
+
if ((0, typeUtils_1.isNoneInstance)(subtype)) {
|
1225
1230
|
return classListContainsNoneType() === isPositiveTest ? subtype : undefined;
|
1226
1231
|
}
|
1227
1232
|
if ((0, types_1.isModule)(subtype) || ((0, types_1.isClassInstance)(subtype) && types_1.ClassType.isBuiltIn(subtype, 'ModuleType'))) {
|
@@ -1255,7 +1260,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
1255
1260
|
}
|
1256
1261
|
}
|
1257
1262
|
else {
|
1258
|
-
if ((0,
|
1263
|
+
if ((0, typeUtils_1.isNoneTypeClass)(subtype)) {
|
1259
1264
|
return classListContainsNoneType() === isPositiveTest ? subtype : undefined;
|
1260
1265
|
}
|
1261
1266
|
if ((0, types_1.isClass)(subtype)) {
|
@@ -1354,7 +1359,7 @@ function narrowTypeForContainerType(evaluator, referenceType, containerType, isP
|
|
1354
1359
|
const typesToEliminate = [];
|
1355
1360
|
containerType.tupleTypeArguments.forEach((tupleEntry) => {
|
1356
1361
|
if (!tupleEntry.isUnbounded) {
|
1357
|
-
if ((0,
|
1362
|
+
if ((0, typeUtils_1.isNoneInstance)(tupleEntry.type)) {
|
1358
1363
|
typesToEliminate.push(tupleEntry.type);
|
1359
1364
|
}
|
1360
1365
|
else if ((0, types_1.isClassInstance)(tupleEntry.type) && (0, typeUtils_1.isLiteralType)(tupleEntry.type)) {
|
@@ -1420,7 +1425,8 @@ function narrowTypeForContainerElementType(evaluator, referenceType, elementType
|
|
1420
1425
|
}
|
1421
1426
|
if (evaluator.assignType(elementTypeWithoutLiteral, concreteReferenceType)) {
|
1422
1427
|
return (0, typeUtils_1.mapSubtypes)(elementType, (elementSubtype) => {
|
1423
|
-
if ((0, types_1.isClassInstance)(elementSubtype) &&
|
1428
|
+
if ((0, types_1.isClassInstance)(elementSubtype) &&
|
1429
|
+
(0, types_1.isSameWithoutLiteralValue)(concreteReferenceType, elementSubtype)) {
|
1424
1430
|
return elementSubtype;
|
1425
1431
|
}
|
1426
1432
|
return undefined;
|
@@ -1564,14 +1570,11 @@ function narrowTypeForDiscriminatedLiteralFieldComparison(evaluator, referenceTy
|
|
1564
1570
|
// Handle the case where the field is a property
|
1565
1571
|
// that has a declared literal return type for its getter.
|
1566
1572
|
if ((0, types_1.isClassInstance)(subtype) && (0, types_1.isClassInstance)(memberType) && (0, typeUtils_1.isProperty)(memberType)) {
|
1567
|
-
const
|
1568
|
-
if (
|
1569
|
-
const
|
1570
|
-
if (
|
1571
|
-
|
1572
|
-
if (getterReturnType) {
|
1573
|
-
memberType = getterReturnType;
|
1574
|
-
}
|
1573
|
+
const getterType = memberType.fgetFunction;
|
1574
|
+
if (getterType && getterType.details.declaredReturnType) {
|
1575
|
+
const getterReturnType = types_1.FunctionType.getSpecializedReturnType(getterType);
|
1576
|
+
if (getterReturnType) {
|
1577
|
+
memberType = getterReturnType;
|
1575
1578
|
}
|
1576
1579
|
}
|
1577
1580
|
}
|
@@ -1610,13 +1613,13 @@ function narrowTypeForDiscriminatedFieldNoneComparison(evaluator, referenceType,
|
|
1610
1613
|
if ((0, typeUtils_1.isProperty)(memberSubtype) || (0, typeUtils_1.isMaybeDescriptorInstance)(memberSubtype)) {
|
1611
1614
|
canNarrow = false;
|
1612
1615
|
}
|
1613
|
-
if ((0, types_1.isAnyOrUnknown)(memberSubtype) || (0,
|
1616
|
+
if ((0, types_1.isAnyOrUnknown)(memberSubtype) || (0, typeUtils_1.isNoneInstance)(memberSubtype) || (0, types_1.isNever)(memberSubtype)) {
|
1614
1617
|
canNarrow = false;
|
1615
1618
|
}
|
1616
1619
|
});
|
1617
1620
|
}
|
1618
1621
|
else {
|
1619
|
-
canNarrow = (0,
|
1622
|
+
canNarrow = (0, typeUtils_1.isNoneInstance)(memberType);
|
1620
1623
|
}
|
1621
1624
|
if (canNarrow) {
|
1622
1625
|
return undefined;
|
@@ -1654,7 +1657,7 @@ function narrowTypeForTypeIs(evaluator, type, classType, isPositiveTest) {
|
|
1654
1657
|
return subtype;
|
1655
1658
|
}
|
1656
1659
|
}
|
1657
|
-
else if ((0,
|
1660
|
+
else if ((0, typeUtils_1.isNoneInstance)(subtype)) {
|
1658
1661
|
return isPositiveTest ? undefined : subtype;
|
1659
1662
|
}
|
1660
1663
|
else if ((0, types_1.isAnyOrUnknown)(subtype)) {
|
@@ -1669,7 +1672,7 @@ function narrowTypeForClassComparison(evaluator, referenceType, classType, isPos
|
|
1669
1672
|
return (0, typeUtils_1.mapSubtypes)(referenceType, (subtype) => {
|
1670
1673
|
const concreteSubtype = evaluator.makeTopLevelTypeVarsConcrete(subtype);
|
1671
1674
|
if (isPositiveTest) {
|
1672
|
-
if ((0,
|
1675
|
+
if ((0, typeUtils_1.isNoneInstance)(concreteSubtype)) {
|
1673
1676
|
return undefined;
|
1674
1677
|
}
|
1675
1678
|
if ((0, types_1.isClassInstance)(concreteSubtype) && types_1.TypeBase.isInstance(subtype)) {
|
@@ -1729,7 +1732,7 @@ function narrowTypeForLiteralComparison(evaluator, referenceType, literalType, i
|
|
1729
1732
|
}
|
1730
1733
|
}
|
1731
1734
|
else if (isPositiveTest) {
|
1732
|
-
if (isIsOperator || (0,
|
1735
|
+
if (isIsOperator || (0, typeUtils_1.isNoneInstance)(subtype)) {
|
1733
1736
|
return undefined;
|
1734
1737
|
}
|
1735
1738
|
}
|
@@ -1770,20 +1773,22 @@ exports.enumerateLiteralsForType = enumerateLiteralsForType;
|
|
1770
1773
|
function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allowIntersections) {
|
1771
1774
|
return evaluator.mapSubtypesExpandTypeVars(type, /* conditionFilter */ undefined, (subtype) => {
|
1772
1775
|
switch (subtype.category) {
|
1773
|
-
case
|
1774
|
-
case
|
1776
|
+
case 4 /* Function */:
|
1777
|
+
case 5 /* OverloadedFunction */: {
|
1775
1778
|
return isPositiveTest ? subtype : undefined;
|
1776
1779
|
}
|
1777
|
-
case
|
1778
|
-
case 8 /* Module */: {
|
1780
|
+
case 7 /* Module */: {
|
1779
1781
|
return isPositiveTest ? undefined : subtype;
|
1780
1782
|
}
|
1781
|
-
case
|
1783
|
+
case 6 /* Class */: {
|
1784
|
+
if ((0, typeUtils_1.isNoneInstance)(subtype)) {
|
1785
|
+
return isPositiveTest ? undefined : subtype;
|
1786
|
+
}
|
1782
1787
|
if (types_1.TypeBase.isInstantiable(subtype)) {
|
1783
1788
|
return isPositiveTest ? subtype : undefined;
|
1784
1789
|
}
|
1785
1790
|
// See if the object is callable.
|
1786
|
-
const callMemberType = (0, typeUtils_1.lookUpClassMember)(subtype, '__call__',
|
1791
|
+
const callMemberType = (0, typeUtils_1.lookUpClassMember)(subtype, '__call__', 16 /* SkipInstanceMembers */);
|
1787
1792
|
if (!callMemberType) {
|
1788
1793
|
if (!isPositiveTest) {
|
1789
1794
|
return subtype;
|