@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.
Files changed (185) hide show
  1. package/dist/analyzer/analyzerFileInfo.d.ts +1 -0
  2. package/dist/analyzer/analyzerFileInfo.js.map +1 -1
  3. package/dist/analyzer/checker.js +99 -105
  4. package/dist/analyzer/checker.js.map +1 -1
  5. package/dist/analyzer/codeFlowEngine.js +12 -33
  6. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  7. package/dist/analyzer/codeFlowUtils.js +4 -2
  8. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  9. package/dist/analyzer/constraintSolver.js +21 -23
  10. package/dist/analyzer/constraintSolver.js.map +1 -1
  11. package/dist/analyzer/constructorTransform.js +4 -6
  12. package/dist/analyzer/constructorTransform.js.map +1 -1
  13. package/dist/analyzer/constructors.d.ts +6 -3
  14. package/dist/analyzer/constructors.js +66 -41
  15. package/dist/analyzer/constructors.js.map +1 -1
  16. package/dist/analyzer/dataClasses.js +13 -18
  17. package/dist/analyzer/dataClasses.js.map +1 -1
  18. package/dist/analyzer/declarationUtils.js +1 -1
  19. package/dist/analyzer/declarationUtils.js.map +1 -1
  20. package/dist/analyzer/decorators.js +1 -1
  21. package/dist/analyzer/decorators.js.map +1 -1
  22. package/dist/analyzer/enums.d.ts +2 -5
  23. package/dist/analyzer/enums.js +5 -3
  24. package/dist/analyzer/enums.js.map +1 -1
  25. package/dist/analyzer/functionTransform.js +1 -1
  26. package/dist/analyzer/functionTransform.js.map +1 -1
  27. package/dist/analyzer/importResolver.d.ts +4 -2
  28. package/dist/analyzer/importResolver.js +30 -10
  29. package/dist/analyzer/importResolver.js.map +1 -1
  30. package/dist/analyzer/importStatementUtils.d.ts +1 -1
  31. package/dist/analyzer/importStatementUtils.js +33 -5
  32. package/dist/analyzer/importStatementUtils.js.map +1 -1
  33. package/dist/analyzer/namedTuples.js +3 -2
  34. package/dist/analyzer/namedTuples.js.map +1 -1
  35. package/dist/analyzer/operations.js +34 -31
  36. package/dist/analyzer/operations.js.map +1 -1
  37. package/dist/analyzer/packageTypeVerifier.js +28 -26
  38. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  39. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  40. package/dist/analyzer/parseTreeUtils.js +17 -2
  41. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  42. package/dist/analyzer/patternMatching.js +6 -6
  43. package/dist/analyzer/patternMatching.js.map +1 -1
  44. package/dist/analyzer/program.d.ts +1 -1
  45. package/dist/analyzer/program.js +34 -21
  46. package/dist/analyzer/program.js.map +1 -1
  47. package/dist/analyzer/properties.js +25 -28
  48. package/dist/analyzer/properties.js.map +1 -1
  49. package/dist/analyzer/protocols.d.ts +1 -1
  50. package/dist/analyzer/protocols.js +15 -19
  51. package/dist/analyzer/protocols.js.map +1 -1
  52. package/dist/analyzer/service.js +12 -6
  53. package/dist/analyzer/service.js.map +1 -1
  54. package/dist/analyzer/sourceFile.d.ts +1 -0
  55. package/dist/analyzer/sourceFile.js +36 -2
  56. package/dist/analyzer/sourceFile.js.map +1 -1
  57. package/dist/analyzer/sourceFileInfoUtils.d.ts +1 -1
  58. package/dist/analyzer/sourceFileInfoUtils.js +9 -3
  59. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  60. package/dist/analyzer/tracePrinter.js +11 -13
  61. package/dist/analyzer/tracePrinter.js.map +1 -1
  62. package/dist/analyzer/typeDocStringUtils.js +3 -3
  63. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  64. package/dist/analyzer/typeEvaluator.d.ts +3 -1
  65. package/dist/analyzer/typeEvaluator.js +1184 -1270
  66. package/dist/analyzer/typeEvaluator.js.map +1 -1
  67. package/dist/analyzer/typeEvaluatorTypes.d.ts +13 -26
  68. package/dist/analyzer/typeEvaluatorTypes.js +1 -36
  69. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  70. package/dist/analyzer/typeGuards.js +37 -32
  71. package/dist/analyzer/typeGuards.js.map +1 -1
  72. package/dist/analyzer/typePrinter.js +19 -18
  73. package/dist/analyzer/typePrinter.js.map +1 -1
  74. package/dist/analyzer/typeUtils.d.ts +17 -8
  75. package/dist/analyzer/typeUtils.js +149 -94
  76. package/dist/analyzer/typeUtils.js.map +1 -1
  77. package/dist/analyzer/typeVarContext.js +6 -7
  78. package/dist/analyzer/typeVarContext.js.map +1 -1
  79. package/dist/analyzer/typeWalker.d.ts +1 -2
  80. package/dist/analyzer/typeWalker.js +7 -13
  81. package/dist/analyzer/typeWalker.js.map +1 -1
  82. package/dist/analyzer/typedDicts.js +10 -10
  83. package/dist/analyzer/typedDicts.js.map +1 -1
  84. package/dist/analyzer/types.d.ts +11 -20
  85. package/dist/analyzer/types.js +45 -77
  86. package/dist/analyzer/types.js.map +1 -1
  87. package/dist/commands/dumpFileDebugInfoCommand.js +7 -9
  88. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  89. package/dist/common/commandLineOptions.d.ts +2 -1
  90. package/dist/common/commandLineOptions.js +1 -1
  91. package/dist/common/commandLineOptions.js.map +1 -1
  92. package/dist/common/configOptions.d.ts +3 -2
  93. package/dist/common/configOptions.js +40 -25
  94. package/dist/common/configOptions.js.map +1 -1
  95. package/dist/common/extensibility.d.ts +3 -0
  96. package/dist/common/pathUtils.d.ts +1 -1
  97. package/dist/common/pathUtils.js +11 -10
  98. package/dist/common/pathUtils.js.map +1 -1
  99. package/dist/common/realFileSystem.js +4 -6
  100. package/dist/common/realFileSystem.js.map +1 -1
  101. package/dist/common/serviceProviderExtensions.d.ts +2 -1
  102. package/dist/common/serviceProviderExtensions.js +1 -0
  103. package/dist/common/serviceProviderExtensions.js.map +1 -1
  104. package/dist/common/textEditTracker.js +2 -2
  105. package/dist/common/textEditTracker.js.map +1 -1
  106. package/dist/languageServerBase.d.ts +3 -3
  107. package/dist/languageServerBase.js +18 -15
  108. package/dist/languageServerBase.js.map +1 -1
  109. package/dist/languageService/analyzerServiceExecutor.js +1 -1
  110. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  111. package/dist/languageService/callHierarchyProvider.js +3 -3
  112. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  113. package/dist/languageService/completionProvider.d.ts +2 -1
  114. package/dist/languageService/completionProvider.js +12 -10
  115. package/dist/languageService/completionProvider.js.map +1 -1
  116. package/dist/languageService/completionProviderUtils.js +1 -1
  117. package/dist/languageService/definitionProvider.js +1 -1
  118. package/dist/languageService/documentSymbolCollector.js +1 -1
  119. package/dist/languageService/hoverProvider.js +1 -1
  120. package/dist/languageService/signatureHelpProvider.js +0 -14
  121. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  122. package/dist/languageService/tooltipUtils.js +4 -4
  123. package/dist/languageService/tooltipUtils.js.map +1 -1
  124. package/dist/localization/localize.d.ts +16 -0
  125. package/dist/localization/localize.js +6 -0
  126. package/dist/localization/localize.js.map +1 -1
  127. package/dist/localization/package.nls.cs.json +4 -1
  128. package/dist/localization/package.nls.de.json +4 -1
  129. package/dist/localization/package.nls.en-us.json +7 -1
  130. package/dist/localization/package.nls.es.json +4 -1
  131. package/dist/localization/package.nls.fr.json +4 -1
  132. package/dist/localization/package.nls.it.json +4 -1
  133. package/dist/localization/package.nls.ja.json +4 -1
  134. package/dist/localization/package.nls.ko.json +4 -1
  135. package/dist/localization/package.nls.pl.json +4 -1
  136. package/dist/localization/package.nls.pt-br.json +4 -1
  137. package/dist/localization/package.nls.qps-ploc.json +3 -0
  138. package/dist/localization/package.nls.ru.json +4 -1
  139. package/dist/localization/package.nls.tr.json +4 -1
  140. package/dist/localization/package.nls.zh-cn.json +4 -1
  141. package/dist/localization/package.nls.zh-tw.json +4 -1
  142. package/dist/pyright.js +3 -6
  143. package/dist/pyright.js.map +1 -1
  144. package/dist/server.d.ts +1 -0
  145. package/dist/server.js +10 -1
  146. package/dist/server.js.map +1 -1
  147. package/dist/tests/diagnosticOverrides.test.js +4 -2
  148. package/dist/tests/diagnosticOverrides.test.js.map +1 -1
  149. package/dist/tests/fourslash/{completions.importInterimFile.fourslash.js → completions.importInterimFile.fourslash.disabled.js} +2 -2
  150. package/dist/tests/fourslash/completions.importInterimFile.fourslash.disabled.js.map +1 -0
  151. package/dist/tests/fourslash/fourslash.d.ts +1 -1
  152. package/dist/tests/fourslash/signature.complicated.fourslash.js +6 -6
  153. package/dist/tests/fourslash/signature.complicated.fourslash.js.map +1 -1
  154. package/dist/tests/fourslash/signature.dunderNew.fourslash.js +1 -1
  155. package/dist/tests/fourslash/signature.dunderNew.fourslash.js.map +1 -1
  156. package/dist/tests/harness/fourslash/testState.d.ts +1 -1
  157. package/dist/tests/harness/fourslash/testState.js +4 -4
  158. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  159. package/dist/tests/harness/vfs/filesystem.js +1 -1
  160. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  161. package/dist/tests/logger.test.js +0 -1
  162. package/dist/tests/logger.test.js.map +1 -1
  163. package/dist/tests/parseTreeUtils.test.js +15 -0
  164. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  165. package/dist/tests/pathUtils.test.js +30 -1
  166. package/dist/tests/pathUtils.test.js.map +1 -1
  167. package/dist/tests/testUtils.js +2 -1
  168. package/dist/tests/testUtils.js.map +1 -1
  169. package/dist/tests/textEditUtil.test.js +25 -0
  170. package/dist/tests/textEditUtil.test.js.map +1 -1
  171. package/dist/tests/typeEvaluator1.test.js +7 -3
  172. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  173. package/dist/tests/typeEvaluator2.test.js +5 -1
  174. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  175. package/dist/tests/typeEvaluator3.test.js +10 -4
  176. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  177. package/dist/tests/typeEvaluator4.test.js +11 -7
  178. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  179. package/dist/tests/typePrinter.test.js +12 -16
  180. package/dist/tests/typePrinter.test.js.map +1 -1
  181. package/dist/tests/zipfs.test.js +2 -0
  182. package/dist/tests/zipfs.test.js.map +1 -1
  183. package/package.json +1 -1
  184. package/dist/tests/fourslash/completions.importInterimFile.fourslash.js.map +0 -1
  185. /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
- bindToType?: ClassType | TypeVarType | undefined;
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
- isSetTypeError: boolean;
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 | undefined) => TypeResult | undefined;
270
- getTypeOfIterator: (typeResult: TypeResult, isAsync: boolean, errorNode: ExpressionNode | undefined) => TypeResult | undefined;
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
- getTypeOfObjectMember(errorNode: ExpressionNode, objectType: ClassType, memberName: string, usage?: EvaluatorUsage, diag?: DiagnosticAddendum | undefined, memberAccessFlags?: MemberAccessFlags, bindToType?: ClassType | TypeVarType): TypeResult | undefined;
290
- getTypeOfClassMemberName: (errorNode: ExpressionNode, classType: ClassType, isAccessedThroughObject: boolean, memberName: string, usage: EvaluatorUsage, diag: DiagnosticAddendum | undefined, flags: MemberAccessFlags, bindToType?: ClassType | TypeVarType) => ClassMemberLookup | undefined;
291
- getBoundMethod: (classType: ClassType, memberName: string, recursionCount?: number, treatConstructorAsClassMember?: boolean) => FunctionType | OverloadedFunctionType | undefined;
292
- getTypeOfMagicMethodReturn: (objType: Type, args: TypeResult[], magicMethodName: string, errorNode: ExpressionNode, inferenceContext: InferenceContext | undefined) => Type | undefined;
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: () => Type | undefined;
305
- getTupleClassType: () => Type | undefined;
306
- getObjectType: () => Type | undefined;
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.MemberAccessFlags = exports.EvaluatorFlags = exports.maxSubtypesForInferredType = void 0;
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;AA+QD,IAAkB,iBA2CjB;AA3CD,WAAkB,iBAAiB;IAC/B,yDAAQ,CAAA;IAER,mEAAmE;IACnE,gEAAgE;IAChE,4BAA4B;IAC5B,6FAA+B,CAAA;IAE/B,4DAA4D;IAC5D,iBAAiB;IACjB,mGAAkC,CAAA;IAElC,yDAAyD;IACzD,+DAA+D;IAC/D,+EAAwB,CAAA;IAExB,wDAAwD;IACxD,uFAA4B,CAAA;IAE5B,+DAA+D;IAC/D,8FAA+B,CAAA;IAE/B,2DAA2D;IAC3D,0DAA0D;IAC1D,oCAAoC;IACpC,4GAAsC,CAAA;IAEtC,+DAA+D;IAC/D,gEAAgE;IAChE,yBAAyB;IACzB,4FAA8B,CAAA;IAE9B,4DAA4D;IAC5D,wDAAwD;IACxD,8DAA8D;IAC9D,4BAA4B;IAC5B,yGAAoC,CAAA;IAEpC,sDAAsD;IACtD,qFAA0B,CAAA;IAE1B,sDAAsD;IACtD,qFAA0B,CAAA;AAC9B,CAAC,EA3CiB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QA2ClC"}
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, types_1.NoneType.createInstance())) {
723
+ if (!evaluator.assignType(typeOfEntry, evaluator.getNoneType())) {
723
724
  return undefined;
724
725
  }
725
726
  }
726
727
  else {
727
- if ((0, types_1.isNoneInstance)(typeOfEntry)) {
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)(types_1.NoneType.createInstance(), subtype.condition)
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, types_1.isNoneInstance)(subtype) === isPositiveTest) {
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, types_1.isNoneInstance)(subtype) ? subtype : undefined;
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)(types_1.NoneType.createInstance(), subtype.condition)
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, types_1.isNoneTypeClass)(subtype)) {
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__', 8 /* SkipInstanceVariables */);
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, types_1.isNoneTypeClass)(t)) {
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, types_1.isNoneInstance)(subtype)) {
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, types_1.isNoneTypeClass)(subtype)) {
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, types_1.isNoneInstance)(tupleEntry.type)) {
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) && (0, types_1.isSameWithoutLiteralValue)(referenceSubtype, 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 getterInfo = (0, typeUtils_1.lookUpObjectMember)(memberType, 'fget');
1568
- if (getterInfo && getterInfo.isTypeDeclared) {
1569
- const getterType = evaluator.getTypeOfMember(getterInfo);
1570
- if ((0, types_1.isFunction)(getterType) && getterType.details.declaredReturnType) {
1571
- const getterReturnType = types_1.FunctionType.getSpecializedReturnType(getterType);
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, types_1.isNoneInstance)(memberSubtype) || (0, types_1.isNever)(memberSubtype)) {
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, types_1.isNoneInstance)(memberType);
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, types_1.isNoneInstance)(subtype)) {
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, types_1.isNoneInstance)(concreteSubtype)) {
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, types_1.isNoneInstance)(subtype)) {
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 5 /* Function */:
1774
- case 6 /* OverloadedFunction */: {
1776
+ case 4 /* Function */:
1777
+ case 5 /* OverloadedFunction */: {
1775
1778
  return isPositiveTest ? subtype : undefined;
1776
1779
  }
1777
- case 3 /* None */:
1778
- case 8 /* Module */: {
1780
+ case 7 /* Module */: {
1779
1781
  return isPositiveTest ? undefined : subtype;
1780
1782
  }
1781
- case 7 /* Class */: {
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__', 8 /* SkipInstanceVariables */);
1791
+ const callMemberType = (0, typeUtils_1.lookUpClassMember)(subtype, '__call__', 16 /* SkipInstanceMembers */);
1787
1792
  if (!callMemberType) {
1788
1793
  if (!isPositiveTest) {
1789
1794
  return subtype;