@zzzen/pyright-internal 1.2.0-dev.20240721 → 1.2.0-dev.20240804

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 (228) hide show
  1. package/dist/analyzer/analyzerNodeInfo.js +2 -2
  2. package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
  3. package/dist/analyzer/binder.js +15 -12
  4. package/dist/analyzer/binder.js.map +1 -1
  5. package/dist/analyzer/cacheManager.js +3 -0
  6. package/dist/analyzer/cacheManager.js.map +1 -1
  7. package/dist/analyzer/checker.d.ts +5 -3
  8. package/dist/analyzer/checker.js +238 -193
  9. package/dist/analyzer/checker.js.map +1 -1
  10. package/dist/analyzer/codeFlowEngine.d.ts +2 -2
  11. package/dist/analyzer/codeFlowEngine.js +53 -46
  12. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  13. package/dist/analyzer/codeFlowTypes.js +1 -1
  14. package/dist/analyzer/codeFlowTypes.js.map +1 -1
  15. package/dist/analyzer/constraintSolution.d.ts +21 -0
  16. package/dist/analyzer/constraintSolution.js +71 -0
  17. package/dist/analyzer/constraintSolution.js.map +1 -0
  18. package/dist/analyzer/constraintSolver.d.ts +10 -6
  19. package/dist/analyzer/constraintSolver.js +520 -462
  20. package/dist/analyzer/constraintSolver.js.map +1 -1
  21. package/dist/analyzer/constraintTracker.d.ts +44 -0
  22. package/dist/analyzer/constraintTracker.js +230 -0
  23. package/dist/analyzer/constraintTracker.js.map +1 -0
  24. package/dist/analyzer/constructorTransform.d.ts +2 -2
  25. package/dist/analyzer/constructorTransform.js +25 -25
  26. package/dist/analyzer/constructorTransform.js.map +1 -1
  27. package/dist/analyzer/constructors.d.ts +3 -3
  28. package/dist/analyzer/constructors.js +80 -64
  29. package/dist/analyzer/constructors.js.map +1 -1
  30. package/dist/analyzer/dataClasses.d.ts +2 -2
  31. package/dist/analyzer/dataClasses.js +87 -61
  32. package/dist/analyzer/dataClasses.js.map +1 -1
  33. package/dist/analyzer/declaration.d.ts +9 -9
  34. package/dist/analyzer/declaration.js +9 -9
  35. package/dist/analyzer/declaration.js.map +1 -1
  36. package/dist/analyzer/declarationUtils.d.ts +1 -1
  37. package/dist/analyzer/declarationUtils.js +6 -6
  38. package/dist/analyzer/declarationUtils.js.map +1 -1
  39. package/dist/analyzer/decorators.js +5 -5
  40. package/dist/analyzer/decorators.js.map +1 -1
  41. package/dist/analyzer/docStringConversion.js +2 -2
  42. package/dist/analyzer/docStringConversion.js.map +1 -1
  43. package/dist/analyzer/enums.d.ts +2 -2
  44. package/dist/analyzer/enums.js +6 -6
  45. package/dist/analyzer/enums.js.map +1 -1
  46. package/dist/analyzer/functionTransform.d.ts +2 -2
  47. package/dist/analyzer/functionTransform.js +5 -5
  48. package/dist/analyzer/functionTransform.js.map +1 -1
  49. package/dist/analyzer/importResolver.js +5 -3
  50. package/dist/analyzer/importResolver.js.map +1 -1
  51. package/dist/analyzer/namedTuples.d.ts +3 -3
  52. package/dist/analyzer/namedTuples.js +21 -22
  53. package/dist/analyzer/namedTuples.js.map +1 -1
  54. package/dist/analyzer/operations.d.ts +1 -2
  55. package/dist/analyzer/operations.js +105 -82
  56. package/dist/analyzer/operations.js.map +1 -1
  57. package/dist/analyzer/packageTypeVerifier.js +16 -12
  58. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  59. package/dist/analyzer/parameterUtils.d.ts +12 -12
  60. package/dist/analyzer/parameterUtils.js +67 -69
  61. package/dist/analyzer/parameterUtils.js.map +1 -1
  62. package/dist/analyzer/parseTreeUtils.d.ts +6 -6
  63. package/dist/analyzer/parseTreeUtils.js +22 -22
  64. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  65. package/dist/analyzer/patternMatching.js +122 -101
  66. package/dist/analyzer/patternMatching.js.map +1 -1
  67. package/dist/analyzer/program.js +11 -4
  68. package/dist/analyzer/program.js.map +1 -1
  69. package/dist/analyzer/properties.d.ts +3 -2
  70. package/dist/analyzer/properties.js +27 -27
  71. package/dist/analyzer/properties.js.map +1 -1
  72. package/dist/analyzer/protocols.d.ts +3 -3
  73. package/dist/analyzer/protocols.js +58 -57
  74. package/dist/analyzer/protocols.js.map +1 -1
  75. package/dist/analyzer/pythonPathUtils.js +1 -1
  76. package/dist/analyzer/pythonPathUtils.js.map +1 -1
  77. package/dist/analyzer/service.d.ts +3 -7
  78. package/dist/analyzer/service.js +28 -30
  79. package/dist/analyzer/service.js.map +1 -1
  80. package/dist/analyzer/serviceUtils.d.ts +8 -0
  81. package/dist/analyzer/serviceUtils.js +31 -0
  82. package/dist/analyzer/serviceUtils.js.map +1 -0
  83. package/dist/analyzer/sourceFile.js +5 -19
  84. package/dist/analyzer/sourceFile.js.map +1 -1
  85. package/dist/analyzer/sourceMapper.d.ts +1 -1
  86. package/dist/analyzer/sourceMapper.js +4 -4
  87. package/dist/analyzer/sourceMapper.js.map +1 -1
  88. package/dist/analyzer/staticExpressions.js +1 -1
  89. package/dist/analyzer/staticExpressions.js.map +1 -1
  90. package/dist/analyzer/tracePrinter.js +4 -4
  91. package/dist/analyzer/tracePrinter.js.map +1 -1
  92. package/dist/analyzer/tuples.d.ts +9 -0
  93. package/dist/analyzer/tuples.js +253 -0
  94. package/dist/analyzer/tuples.js.map +1 -0
  95. package/dist/analyzer/typeComplexity.d.ts +2 -0
  96. package/dist/analyzer/typeComplexity.js +94 -0
  97. package/dist/analyzer/typeComplexity.js.map +1 -0
  98. package/dist/analyzer/typeEvaluator.js +1758 -1979
  99. package/dist/analyzer/typeEvaluator.js.map +1 -1
  100. package/dist/analyzer/typeEvaluatorTypes.d.ts +69 -45
  101. package/dist/analyzer/typeEvaluatorTypes.js +7 -1
  102. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  103. package/dist/analyzer/typeGuards.js +157 -121
  104. package/dist/analyzer/typeGuards.js.map +1 -1
  105. package/dist/analyzer/typePrinter.d.ts +1 -1
  106. package/dist/analyzer/typePrinter.js +64 -61
  107. package/dist/analyzer/typePrinter.js.map +1 -1
  108. package/dist/analyzer/typeStubWriter.d.ts +3 -3
  109. package/dist/analyzer/typeStubWriter.js +15 -15
  110. package/dist/analyzer/typeStubWriter.js.map +1 -1
  111. package/dist/analyzer/typeUtils.d.ts +45 -41
  112. package/dist/analyzer/typeUtils.js +511 -748
  113. package/dist/analyzer/typeUtils.js.map +1 -1
  114. package/dist/analyzer/typeWalker.js +4 -4
  115. package/dist/analyzer/typeWalker.js.map +1 -1
  116. package/dist/analyzer/typedDicts.d.ts +4 -4
  117. package/dist/analyzer/typedDicts.js +73 -77
  118. package/dist/analyzer/typedDicts.js.map +1 -1
  119. package/dist/analyzer/types.d.ts +97 -72
  120. package/dist/analyzer/types.js +217 -208
  121. package/dist/analyzer/types.js.map +1 -1
  122. package/dist/commands/dumpFileDebugInfoCommand.js +11 -11
  123. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  124. package/dist/common/configOptions.d.ts +1 -0
  125. package/dist/common/configOptions.js +5 -0
  126. package/dist/common/configOptions.js.map +1 -1
  127. package/dist/common/diagnosticRules.d.ts +1 -0
  128. package/dist/common/diagnosticRules.js +1 -0
  129. package/dist/common/diagnosticRules.js.map +1 -1
  130. package/dist/common/fileSystem.d.ts +0 -1
  131. package/dist/common/fileSystem.js.map +1 -1
  132. package/dist/common/languageServerInterface.d.ts +13 -0
  133. package/dist/common/languageServerInterface.js +15 -1
  134. package/dist/common/languageServerInterface.js.map +1 -1
  135. package/dist/common/lspUtils.js +2 -2
  136. package/dist/common/memUtils.d.ts +4 -0
  137. package/dist/common/memUtils.js +33 -2
  138. package/dist/common/memUtils.js.map +1 -1
  139. package/dist/common/serviceKeys.d.ts +3 -0
  140. package/dist/common/serviceKeys.js +2 -0
  141. package/dist/common/serviceKeys.js.map +1 -1
  142. package/dist/common/serviceProviderExtensions.js +7 -0
  143. package/dist/common/serviceProviderExtensions.js.map +1 -1
  144. package/dist/languageServerBase.d.ts +5 -4
  145. package/dist/languageServerBase.js +19 -12
  146. package/dist/languageServerBase.js.map +1 -1
  147. package/dist/languageService/autoImporter.d.ts +3 -2
  148. package/dist/languageService/autoImporter.js +5 -1
  149. package/dist/languageService/autoImporter.js.map +1 -1
  150. package/dist/languageService/completionProvider.d.ts +5 -3
  151. package/dist/languageService/completionProvider.js +39 -38
  152. package/dist/languageService/completionProvider.js.map +1 -1
  153. package/dist/languageService/completionProviderUtils.d.ts +1 -1
  154. package/dist/languageService/completionProviderUtils.js +3 -3
  155. package/dist/languageService/completionProviderUtils.js.map +1 -1
  156. package/dist/languageService/fileWatcherDynamicFeature.js +2 -2
  157. package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
  158. package/dist/languageService/hoverProvider.js +3 -3
  159. package/dist/languageService/hoverProvider.js.map +1 -1
  160. package/dist/languageService/referencesProvider.js +2 -2
  161. package/dist/languageService/signatureHelpProvider.js +1 -1
  162. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  163. package/dist/languageService/tooltipUtils.js +3 -3
  164. package/dist/languageService/tooltipUtils.js.map +1 -1
  165. package/dist/localization/localize.d.ts +5 -0
  166. package/dist/localization/localize.js +6 -0
  167. package/dist/localization/localize.js.map +1 -1
  168. package/dist/localization/package.nls.cs.json +5 -1
  169. package/dist/localization/package.nls.de.json +5 -1
  170. package/dist/localization/package.nls.en-us.json +5 -0
  171. package/dist/localization/package.nls.es.json +5 -1
  172. package/dist/localization/package.nls.fr.json +5 -1
  173. package/dist/localization/package.nls.it.json +5 -1
  174. package/dist/localization/package.nls.ja.json +5 -1
  175. package/dist/localization/package.nls.ko.json +5 -1
  176. package/dist/localization/package.nls.pl.json +5 -1
  177. package/dist/localization/package.nls.pt-br.json +5 -1
  178. package/dist/localization/package.nls.qps-ploc.json +5 -1
  179. package/dist/localization/package.nls.ru.json +5 -1
  180. package/dist/localization/package.nls.tr.json +5 -1
  181. package/dist/localization/package.nls.zh-cn.json +5 -1
  182. package/dist/localization/package.nls.zh-tw.json +5 -1
  183. package/dist/parser/parseNodes.d.ts +9 -9
  184. package/dist/parser/parseNodes.js +20 -20
  185. package/dist/parser/parseNodes.js.map +1 -1
  186. package/dist/parser/parser.js +30 -30
  187. package/dist/parser/parser.js.map +1 -1
  188. package/dist/tests/checker.test.js +12 -4
  189. package/dist/tests/checker.test.js.map +1 -1
  190. package/dist/tests/fourslash/signature.builtinDocstrings.fourslash.js +4 -21
  191. package/dist/tests/fourslash/signature.builtinDocstrings.fourslash.js.map +1 -1
  192. package/dist/tests/fourslash/signature.complicated.fourslash.js +1 -1
  193. package/dist/tests/fourslash/signature.complicated.fourslash.js.map +1 -1
  194. package/dist/tests/harness/fourslash/fourSlashParser.js +1 -1
  195. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  196. package/dist/tests/harness/fourslash/testStateUtils.js +2 -2
  197. package/dist/tests/harness/fourslash/testStateUtils.js.map +1 -1
  198. package/dist/tests/harness/vfs/filesystem.d.ts +0 -1
  199. package/dist/tests/harness/vfs/filesystem.js +0 -4
  200. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  201. package/dist/tests/importResolver.test.js +62 -15
  202. package/dist/tests/importResolver.test.js.map +1 -1
  203. package/dist/tests/lsp/languageServerTestUtils.js +1 -1
  204. package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
  205. package/dist/tests/typeEvaluator1.test.js +1 -1
  206. package/dist/tests/typeEvaluator2.test.js +12 -0
  207. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  208. package/dist/tests/typeEvaluator3.test.js +5 -1
  209. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  210. package/dist/tests/typeEvaluator4.test.js +10 -2
  211. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  212. package/dist/tests/typeEvaluator5.test.js +9 -3
  213. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  214. package/dist/tests/typeEvaluator6.test.js +72 -60
  215. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  216. package/dist/tests/typeEvaluator7.test.js +6 -2
  217. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  218. package/dist/tests/typeEvaluator8.test.js +4 -0
  219. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  220. package/dist/tests/typePrinter.test.js +13 -18
  221. package/dist/tests/typePrinter.test.js.map +1 -1
  222. package/dist/workspaceFactory.d.ts +3 -2
  223. package/dist/workspaceFactory.js +15 -2
  224. package/dist/workspaceFactory.js.map +1 -1
  225. package/package.json +1 -1
  226. package/dist/analyzer/typeVarContext.d.ts +0 -60
  227. package/dist/analyzer/typeVarContext.js +0 -392
  228. package/dist/analyzer/typeVarContext.js.map +0 -1
@@ -3,17 +3,17 @@ import { ConsoleInterface } from '../common/console';
3
3
  import { Diagnostic, DiagnosticAddendum } from '../common/diagnostic';
4
4
  import { DiagnosticRule } from '../common/diagnosticRules';
5
5
  import { TextRange } from '../common/textRange';
6
- import { ArgumentCategory, ArgumentNode, CallNode, CaseNode, ClassNode, DecoratorNode, ExpressionNode, FunctionNode, MatchNode, NameNode, ParameterCategory, ParameterNode, ParseNode, RaiseNode, StringNode } from '../parser/parseNodes';
6
+ import { ArgCategory, ArgumentNode, CallNode, CaseNode, ClassNode, DecoratorNode, ExpressionNode, FunctionNode, MatchNode, NameNode, ParamCategory, ParameterNode, ParseNode, RaiseNode, StringNode } from '../parser/parseNodes';
7
7
  import { AnalyzerFileInfo } from './analyzerFileInfo';
8
8
  import { CodeFlowReferenceExpressionNode, FlowNode } from './codeFlowTypes';
9
+ import { ConstraintTracker } from './constraintTracker';
9
10
  import { Declaration } from './declaration';
10
11
  import * as DeclarationUtils from './declarationUtils';
11
12
  import { SymbolWithScope } from './scope';
12
13
  import { Symbol } from './symbol';
13
14
  import { PrintTypeFlags } from './typePrinter';
15
+ import { AnyType, ClassType, FunctionParam, FunctionType, OverloadedFunctionType, Type, TypeCondition, TypeVarScopeId, TypeVarType, UnknownType, Variance } from './types';
14
16
  import { AssignTypeFlags, ClassMember, InferenceContext, MemberAccessFlags } from './typeUtils';
15
- import { TypeVarContext } from './typeVarContext';
16
- import { AnyType, ClassType, FunctionParam, FunctionType, OverloadedFunctionType, Type, TypeCondition, TypeVarType, UnknownType, Variance } from './types';
17
17
  export declare const maxSubtypesForInferredType = 64;
18
18
  export declare const enum EvalFlags {
19
19
  None = 0,
@@ -68,6 +68,7 @@ export interface TypeResult<T extends Type = Type> {
68
68
  isReadOnly?: boolean;
69
69
  overloadsUsedForCall?: FunctionType[];
70
70
  memberAccessDeprecationInfo?: MemberAccessDeprecationInfo;
71
+ magicMethodDeprecationInfo?: MagicMethodDeprecationInfo;
71
72
  }
72
73
  export interface TypeResultWithNode extends TypeResult {
73
74
  node: ParseNode;
@@ -75,7 +76,12 @@ export interface TypeResultWithNode extends TypeResult {
75
76
  export interface MemberAccessDeprecationInfo {
76
77
  accessType: 'property' | 'descriptor';
77
78
  accessMethod: 'get' | 'set' | 'del';
78
- deprecationMessage: string;
79
+ deprecatedMessage: string;
80
+ }
81
+ export interface MagicMethodDeprecationInfo {
82
+ className: string;
83
+ methodName: string;
84
+ deprecatedMessage: string;
79
85
  }
80
86
  export interface EvaluatorUsage {
81
87
  method: 'get' | 'set' | 'del';
@@ -105,21 +111,21 @@ export interface AbstractSymbol {
105
111
  classType: Type;
106
112
  hasImplementation: boolean;
107
113
  }
108
- export interface FunctionArgumentBase {
109
- argumentCategory: ArgumentCategory;
114
+ export interface ArgBase {
115
+ argCategory: ArgCategory;
110
116
  node?: ArgumentNode | undefined;
111
117
  name?: NameNode | undefined;
112
118
  typeResult?: TypeResult | undefined;
113
119
  valueExpression?: ExpressionNode | undefined;
114
120
  active?: boolean | undefined;
115
121
  }
116
- export interface FunctionArgumentWithType extends FunctionArgumentBase {
122
+ export interface ArgWithType extends ArgBase {
117
123
  typeResult: TypeResult;
118
124
  }
119
- export interface FunctionArgumentWithExpression extends FunctionArgumentBase {
125
+ export interface ArgWithExpression extends ArgBase {
120
126
  valueExpression: ExpressionNode;
121
127
  }
122
- export type FunctionArgument = FunctionArgumentWithType | FunctionArgumentWithExpression;
128
+ export type Arg = ArgWithType | ArgWithExpression;
123
129
  export interface EffectiveTypeResult {
124
130
  type: Type;
125
131
  isIncomplete: boolean;
@@ -130,10 +136,10 @@ export interface EffectiveTypeResult {
130
136
  evaluationAttempts?: number;
131
137
  }
132
138
  export interface ValidateArgTypeParams {
133
- paramCategory: ParameterCategory;
139
+ paramCategory: ParamCategory;
134
140
  paramType: Type;
135
141
  requiresTypeVarMatching: boolean;
136
- argument: FunctionArgument;
142
+ argument: Arg;
137
143
  isDefaultArg?: boolean;
138
144
  argType?: Type | undefined;
139
145
  errorNode: ExpressionNode;
@@ -142,28 +148,23 @@ export interface ValidateArgTypeParams {
142
148
  mapsToVarArgList?: boolean | undefined;
143
149
  isinstanceParam?: boolean;
144
150
  }
145
- export interface AnnotationTypeOptions {
146
- isVariableAnnotation?: boolean;
147
- allowFinal?: boolean;
148
- allowClassVar?: boolean;
149
- associateTypeVarsWithScope?: boolean;
150
- allowTypeVarTuple?: boolean;
151
- allowParamSpec?: boolean;
152
- allowRequired?: boolean;
153
- allowUnpackedTypedDict?: boolean;
154
- allowUnpackedTuple?: boolean;
155
- notParsedByInterpreter?: boolean;
156
- enforceClassTypeVarScope?: boolean;
157
- }
158
151
  export interface ExpectedTypeOptions {
159
152
  allowFinal?: boolean;
160
153
  allowRequired?: boolean;
161
154
  allowUnpackedTuple?: boolean;
155
+ allowUnpackedTypedDict?: boolean;
162
156
  allowParamSpec?: boolean;
163
- allowForwardReference?: boolean;
157
+ allowClassVar?: boolean;
158
+ varTypeAnnotation?: boolean;
159
+ typeVarGetsCurScope?: boolean;
164
160
  allowTypeVarsWithoutScopeId?: boolean;
165
- enforceTypeAnnotationRules?: boolean;
166
- disallowProtocolAndTypedDict?: boolean;
161
+ enforceClassTypeVarScope?: boolean;
162
+ parsesStringLiteral?: boolean;
163
+ notParsed?: boolean;
164
+ noNonTypeSpecialForms?: boolean;
165
+ forwardRefs?: boolean;
166
+ typeExpression?: boolean;
167
+ convertEllipsisToAny?: boolean;
167
168
  }
168
169
  export interface ExpectedTypeResult {
169
170
  type: Type;
@@ -186,7 +187,7 @@ export interface CallResult {
186
187
  returnType?: Type | undefined;
187
188
  isTypeIncomplete?: boolean | undefined;
188
189
  argumentErrors?: boolean;
189
- anyOrUnknownArgument?: UnknownType | AnyType;
190
+ anyOrUnknownArg?: UnknownType | AnyType;
190
191
  activeParam?: FunctionParam | undefined;
191
192
  specializedInitSelfType?: Type | undefined;
192
193
  overloadsUsedForCall?: FunctionType[];
@@ -204,6 +205,25 @@ export interface ClassMemberLookup {
204
205
  narrowedTypeForSet?: Type;
205
206
  memberAccessDeprecationInfo?: MemberAccessDeprecationInfo;
206
207
  }
208
+ export interface SolveConstraintsOptions {
209
+ applyUnificationVars?: boolean;
210
+ useLowerBoundOnly?: boolean;
211
+ }
212
+ export interface ApplyTypeVarOptions {
213
+ typeClassType?: ClassType;
214
+ replaceUnsolved?: {
215
+ scopeIds: TypeVarScopeId[];
216
+ tupleClassType: ClassType | undefined;
217
+ unsolvedExemptTypeVars?: TypeVarType[];
218
+ useUnknown?: boolean;
219
+ eliminateUnsolvedInUnions?: boolean;
220
+ };
221
+ }
222
+ export declare enum Reachability {
223
+ Reachable = 0,
224
+ UnreachableAlways = 1,
225
+ UnreachableByAnalysis = 2
226
+ }
207
227
  export interface PrintTypeOptions {
208
228
  expandTypeAlias?: boolean;
209
229
  enforcePythonSyntax?: boolean;
@@ -211,7 +231,7 @@ export interface PrintTypeOptions {
211
231
  useTypingUnpack?: boolean;
212
232
  printUnknownWithAny?: boolean;
213
233
  printTypeVarVariance?: boolean;
214
- omitTypeArgumentsIfUnknown?: boolean;
234
+ omitTypeArgsIfUnknown?: boolean;
215
235
  }
216
236
  export interface DeclaredSymbolTypeInfo {
217
237
  type: Type | undefined;
@@ -223,7 +243,7 @@ export interface ResolveAliasOptions {
223
243
  }
224
244
  export interface ValidateTypeArgsOptions {
225
245
  allowEmptyTuple?: boolean;
226
- allowVariadicTypeVar?: boolean;
246
+ allowTypeVarTuple?: boolean;
227
247
  allowParamSpec?: boolean;
228
248
  allowTypeArgList?: boolean;
229
249
  allowUnpackedTuples?: boolean;
@@ -244,27 +264,32 @@ export interface TypeEvaluator {
244
264
  getTypeResultForDecorator: (node: DecoratorNode) => TypeResult | undefined;
245
265
  getCachedType: (node: ExpressionNode) => Type | undefined;
246
266
  getTypeOfExpression: (node: ExpressionNode, flags?: EvalFlags, context?: InferenceContext) => TypeResult;
247
- getTypeOfAnnotation: (node: ExpressionNode, options?: AnnotationTypeOptions) => Type;
267
+ getTypeOfAnnotation: (node: ExpressionNode, options?: ExpectedTypeOptions) => Type;
248
268
  getTypeOfClass: (node: ClassNode) => ClassTypeResult | undefined;
269
+ createSubclass: (errorNode: ExpressionNode, type1: ClassType, type2: ClassType) => ClassType;
249
270
  getTypeOfFunction: (node: FunctionNode) => FunctionTypeResult | undefined;
250
271
  getTypeOfExpressionExpectingType: (node: ExpressionNode, options?: ExpectedTypeOptions) => TypeResult;
251
272
  evaluateTypeForSubnode: (subnode: ParseNode, callback: () => void) => TypeResult | undefined;
252
273
  evaluateTypesForStatement: (node: ParseNode) => void;
253
274
  evaluateTypesForMatchStatement: (node: MatchNode) => void;
254
275
  evaluateTypesForCaseStatement: (node: CaseNode) => void;
255
- evaluateTypeOfParameter: (node: ParameterNode) => void;
276
+ evaluateTypeOfParam: (node: ParameterNode) => void;
256
277
  canBeTruthy: (type: Type) => boolean;
257
278
  canBeFalsy: (type: Type) => boolean;
258
279
  stripLiteralValue: (type: Type) => Type;
259
280
  removeTruthinessFromType: (type: Type) => Type;
260
281
  removeFalsinessFromType: (type: Type) => Type;
282
+ stripTypeGuard: (type: Type) => Type;
283
+ solveAndApplyConstraints: (type: Type, constraints: ConstraintTracker, applyOptions?: ApplyTypeVarOptions, solveOptions?: SolveConstraintsOptions) => Type;
261
284
  getExpectedType: (node: ExpressionNode) => ExpectedTypeResult | undefined;
262
285
  verifyRaiseExceptionType: (node: RaiseNode) => void;
263
286
  verifyDeleteExpression: (node: ExpressionNode) => void;
264
- validateOverloadedArgTypes: (errorNode: ExpressionNode, argList: FunctionArgument[], typeResult: TypeResult<OverloadedFunctionType>, typeVarContext: TypeVarContext | undefined, skipUnknownArgCheck: boolean, inferenceContext: InferenceContext | undefined) => CallResult;
287
+ validateOverloadedArgTypes: (errorNode: ExpressionNode, argList: Arg[], typeResult: TypeResult<OverloadedFunctionType>, constraints: ConstraintTracker | undefined, skipUnknownArgCheck: boolean, inferenceContext: InferenceContext | undefined) => CallResult;
265
288
  validateInitSubclassArgs: (node: ClassNode, classType: ClassType) => void;
266
- isAfterNodeReachable: (node: ParseNode) => boolean;
267
289
  isNodeReachable: (node: ParseNode, sourceNode?: ParseNode | undefined) => boolean;
290
+ isAfterNodeReachable: (node: ParseNode) => boolean;
291
+ getNodeReachability: (node: ParseNode, sourceNode?: ParseNode | undefined) => Reachability;
292
+ getAfterNodeReachability: (node: ParseNode) => Reachability;
268
293
  isAsymmetricAccessorAssignment: (node: ParseNode) => boolean;
269
294
  suppressDiagnostics: (node: ParseNode, callback: () => void) => void;
270
295
  isSpecialFormClass: (classType: ClassType, flags: AssignTypeFlags) => boolean;
@@ -276,7 +301,7 @@ export interface TypeEvaluator {
276
301
  getTypeOfIterable: (typeResult: TypeResult, isAsync: boolean, errorNode: ExpressionNode, emitNotIterableError?: boolean) => TypeResult | undefined;
277
302
  getTypeOfIterator: (typeResult: TypeResult, isAsync: boolean, errorNode: ExpressionNode, emitNotIterableError?: boolean) => TypeResult | undefined;
278
303
  getGetterTypeFromProperty: (propertyClass: ClassType, inferTypeIfNeeded: boolean) => Type | undefined;
279
- getTypeOfArgument: (arg: FunctionArgument, inferenceContext: InferenceContext | undefined) => TypeResult;
304
+ getTypeOfArg: (arg: Arg, inferenceContext: InferenceContext | undefined) => TypeResult;
280
305
  markNamesAccessed: (node: ParseNode, names: string[]) => void;
281
306
  expandPromotionTypes: (node: ParseNode, type: Type) => Type;
282
307
  makeTopLevelTypeVarsConcrete: (type: Type, makeParamSpecsConcrete?: boolean) => Type;
@@ -290,23 +315,23 @@ export interface TypeEvaluator {
290
315
  getDeclaredTypeForExpression: (expression: ExpressionNode, usage?: EvaluatorUsage) => Type | undefined;
291
316
  getFunctionDeclaredReturnType: (node: FunctionNode) => Type | undefined;
292
317
  getFunctionInferredReturnType: (type: FunctionType, callSiteInfo?: CallSiteEvaluationInfo) => Type;
293
- getBestOverloadForArguments: (errorNode: ExpressionNode, typeResult: TypeResult<OverloadedFunctionType>, argList: FunctionArgument[]) => FunctionType | undefined;
318
+ getBestOverloadForArgs: (errorNode: ExpressionNode, typeResult: TypeResult<OverloadedFunctionType>, argList: Arg[]) => FunctionType | undefined;
294
319
  getBuiltInType: (node: ParseNode, name: string) => Type;
295
320
  getTypeOfMember: (member: ClassMember) => Type;
296
321
  getTypeOfBoundMember(errorNode: ExpressionNode, objectType: ClassType, memberName: string, usage?: EvaluatorUsage, diag?: DiagnosticAddendum | undefined, flags?: MemberAccessFlags, selfType?: ClassType | TypeVarType): TypeResult | undefined;
297
322
  getBoundMagicMethod: (classType: ClassType, memberName: string, selfType?: ClassType | TypeVarType | undefined, diag?: DiagnosticAddendum, recursionCount?: number) => FunctionType | OverloadedFunctionType | undefined;
298
- getTypeOfMagicMethodCall: (objType: Type, methodName: string, argList: TypeResult[], errorNode: ExpressionNode, inferenceContext: InferenceContext | undefined) => Type | undefined;
323
+ getTypeOfMagicMethodCall: (objType: Type, methodName: string, argList: TypeResult[], errorNode: ExpressionNode, inferenceContext: InferenceContext | undefined) => TypeResult | undefined;
299
324
  bindFunctionToClassOrObject: (baseType: ClassType | undefined, memberType: FunctionType | OverloadedFunctionType, memberClass?: ClassType, treatConstructorAsClassMethod?: boolean, selfType?: ClassType | TypeVarType, diag?: DiagnosticAddendum, recursionCount?: number) => FunctionType | OverloadedFunctionType | undefined;
300
325
  getCallSignatureInfo: (node: CallNode, activeIndex: number, activeOrFake: boolean) => CallSignatureInfo | undefined;
301
326
  getAbstractSymbols: (classType: ClassType) => AbstractSymbol[];
302
327
  narrowConstrainedTypeVar: (node: ParseNode, typeVar: TypeVarType) => Type | undefined;
303
- assignType: (destType: Type, srcType: Type, diag?: DiagnosticAddendum, destTypeVarContext?: TypeVarContext, srcTypeVarContext?: TypeVarContext, flags?: AssignTypeFlags, recursionCount?: number) => boolean;
328
+ assignType: (destType: Type, srcType: Type, diag?: DiagnosticAddendum, destConstraints?: ConstraintTracker, srcConstraints?: ConstraintTracker, flags?: AssignTypeFlags, recursionCount?: number) => boolean;
304
329
  validateOverrideMethod: (baseMethod: Type, overrideMethod: FunctionType | OverloadedFunctionType, baseClass: ClassType | undefined, diag: DiagnosticAddendum, enforceParamNames?: boolean) => boolean;
305
- validateCallArguments: (errorNode: ExpressionNode, argList: FunctionArgument[], callTypeResult: TypeResult, typeVarContext: TypeVarContext | undefined, skipUnknownArgCheck: boolean | undefined, inferenceContext: InferenceContext | undefined) => CallResult;
330
+ validateCallArgs: (errorNode: ExpressionNode, argList: Arg[], callTypeResult: TypeResult, constraints: ConstraintTracker | undefined, skipUnknownArgCheck: boolean | undefined, inferenceContext: InferenceContext | undefined) => CallResult;
306
331
  validateTypeArg: (argResult: TypeResultWithNode, options?: ValidateTypeArgsOptions) => boolean;
307
332
  assignTypeToExpression: (target: ExpressionNode, typeResult: TypeResult, srcExpr: ExpressionNode) => void;
308
333
  assignClassToSelf: (destType: ClassType, srcType: ClassType, assumedVariance: Variance) => boolean;
309
- getBuiltInObject: (node: ParseNode, name: string, typeArguments?: Type[]) => Type;
334
+ getBuiltInObject: (node: ParseNode, name: string, typeArgs?: Type[]) => Type;
310
335
  getTypedDictClassType: () => ClassType | undefined;
311
336
  getTupleClassType: () => ClassType | undefined;
312
337
  getObjectType: () => Type;
@@ -315,15 +340,15 @@ export interface TypeEvaluator {
315
340
  getTypeClassType(): ClassType | undefined;
316
341
  getTypingType: (node: ParseNode, symbolName: string) => Type | undefined;
317
342
  inferReturnTypeIfNecessary: (type: Type) => void;
318
- inferTypeParameterVarianceForClass: (type: ClassType) => void;
319
- assignTypeArguments: (destType: ClassType, srcType: ClassType, diag: DiagnosticAddendum | undefined, destTypeVarContext: TypeVarContext | undefined, srcTypeVarContext: TypeVarContext | undefined, flags: AssignTypeFlags, recursionCount: number) => boolean;
320
- reportMissingTypeArguments: (node: ExpressionNode, type: Type, flags: EvalFlags) => Type;
343
+ inferVarianceForClass: (type: ClassType) => void;
344
+ assignTypeArgs: (destType: ClassType, srcType: ClassType, diag: DiagnosticAddendum | undefined, destConstraints: ConstraintTracker | undefined, srcConstraints: ConstraintTracker | undefined, flags: AssignTypeFlags, recursionCount: number) => boolean;
345
+ reportMissingTypeArgs: (node: ExpressionNode, type: Type, flags: EvalFlags) => Type;
321
346
  isFinalVariable: (symbol: Symbol) => boolean;
322
347
  isFinalVariableDeclaration: (decl: Declaration) => boolean;
323
348
  isExplicitTypeAliasDeclaration: (decl: Declaration) => boolean;
324
349
  addInformation: (message: string, node: ParseNode, range?: TextRange) => Diagnostic | undefined;
325
350
  addUnusedCode: (node: ParseNode, textRange: TextRange) => void;
326
- addUnreachableCode: (node: ParseNode, textRange: TextRange) => void;
351
+ addUnreachableCode: (node: ParseNode, reachability: Reachability, textRange: TextRange) => void;
327
352
  addDeprecated: (message: string, node: ParseNode) => void;
328
353
  addDiagnostic: (rule: DiagnosticRule, message: string, node: ParseNode, range?: TextRange) => Diagnostic | undefined;
329
354
  addDiagnosticForTextRange: (fileInfo: AnalyzerFileInfo, rule: DiagnosticRule, message: string, range: TextRange) => Diagnostic | undefined;
@@ -340,5 +365,4 @@ export interface TypeEvaluator {
340
365
  setTypeResultForNode: (node: ParseNode, typeResult: TypeResult, flags?: EvalFlags) => void;
341
366
  checkForCancellation: () => void;
342
367
  printControlFlowGraph: (flowNode: FlowNode, reference: CodeFlowReferenceExpressionNode | undefined, callName: string, logger: ConsoleInterface) => void;
343
- printTypeVarContext: (typeVarContext: TypeVarContext) => void;
344
368
  }
@@ -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.EvalFlags = exports.maxSubtypesForInferredType = void 0;
11
+ exports.Reachability = exports.EvalFlags = 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;
@@ -103,4 +103,10 @@ var EvalFlags;
103
103
  // or 'issubclass' call.
104
104
  EvalFlags[EvalFlags["IsInstanceArgDefaults"] = 536871546] = "IsInstanceArgDefaults";
105
105
  })(EvalFlags || (exports.EvalFlags = EvalFlags = {}));
106
+ var Reachability;
107
+ (function (Reachability) {
108
+ Reachability[Reachability["Reachable"] = 0] = "Reachable";
109
+ Reachability[Reachability["UnreachableAlways"] = 1] = "UnreachableAlways";
110
+ Reachability[Reachability["UnreachableByAnalysis"] = 2] = "UnreachableByAnalysis";
111
+ })(Reachability || (exports.Reachability = Reachability = {}));
106
112
  //# sourceMappingURL=typeEvaluatorTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA+CH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,SAgIjB;AAhID,WAAkB,SAAS;IACvB,yCAAQ,CAAA;IAER,uDAAuD;IACvD,yEAA6B,CAAA;IAE7B,0DAA0D;IAC1D,gEAAgE;IAChE,SAAS;IACT,yDAAqB,CAAA;IAErB,yDAAyD;IACzD,uDAAoB,CAAA;IAEpB,kCAAkC;IAClC,iEAAyB,CAAA;IAEzB,0CAA0C;IAC1C,gDAAgB,CAAA;IAEhB,6CAA6C;IAC7C,wDAAoB,CAAA;IAEpB,gDAAgD;IAChD,8DAAuB,CAAA;IAEvB,2DAA2D;IAC3D,4BAA4B;IAC5B,mEAAyB,CAAA;IAEzB,kEAAkE;IAClE,gEAAgE;IAChE,qBAAqB;IACrB,+DAAuB,CAAA;IAEvB,qEAAqE;IACrE,2EAA6B,CAAA;IAE7B,2DAA2D;IAC3D,gDAAgD;IAChD,4DAAsB,CAAA;IAEtB,8DAA8D;IAC9D,0BAA0B;IAC1B,4EAA8B,CAAA;IAE9B,oEAAoE;IACpE,0BAA0B;IAC1B,wFAAoC,CAAA;IAEpC,yDAAyD;IACzD,2DAA2D;IAC3D,mCAAmC;IACnC,0EAA6B,CAAA;IAE7B,yDAAyD;IACzD,6DAA6D;IAC7D,uDAAuD;IACvD,yFAAoC,CAAA;IAEpC,mDAAmD;IACnD,uEAA2B,CAAA;IAE3B,6CAA6C;IAC7C,0DAAoB,CAAA;IAEpB,mEAAmE;IACnE,kEAAwB,CAAA;IAExB,iEAAiE;IACjE,iCAAiC;IACjC,wDAAmB,CAAA;IAEnB,wDAAwD;IACxD,iEAAuB,CAAA;IAEvB,uDAAuD;IACvD,2EAA4B,CAAA;IAE5B,yCAAyC;IACzC,mFAAgC,CAAA;IAEhC,6DAA6D;IAC7D,2DAA2D;IAC3D,oDAAoD;IACpD,6EAA6B,CAAA;IAE7B,8DAA8D;IAC9D,iDAAiD;IACjD,gFAA8B,CAAA;IAE9B,oEAAoE;IACpE,mBAAmB;IACnB,kFAA+B,CAAA;IAE/B,6CAA6C;IAC7C,yEAA0B,CAAA;IAE1B,2EAA2E;IAC3E,4BAA4B;IAC5B,6EAA4B,CAAA;IAE5B,sEAAsE;IACtE,+DAA+D;IAC/D,mEAAuB,CAAA;IAEvB,yEAAyE;IACzE,8CAA8C;IAC9C,0FAAkC,CAAA;IAElC,6DAA6D;IAC7D,iEAA+B,CAAA;IAE/B,sEAAsE;IACtE,mEAAgC,CAAA;IAEhC,sEAAsE;IACtE,iFAAuC,CAAA;IAEvC,sEAAsE;IACtE,wBAAwB;IACxB,mFAMiB,CAAA;AACrB,CAAC,EAhIiB,SAAS,yBAAT,SAAS,QAgI1B"}
1
+ {"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAgDH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,SAgIjB;AAhID,WAAkB,SAAS;IACvB,yCAAQ,CAAA;IAER,uDAAuD;IACvD,yEAA6B,CAAA;IAE7B,0DAA0D;IAC1D,gEAAgE;IAChE,SAAS;IACT,yDAAqB,CAAA;IAErB,yDAAyD;IACzD,uDAAoB,CAAA;IAEpB,kCAAkC;IAClC,iEAAyB,CAAA;IAEzB,0CAA0C;IAC1C,gDAAgB,CAAA;IAEhB,6CAA6C;IAC7C,wDAAoB,CAAA;IAEpB,gDAAgD;IAChD,8DAAuB,CAAA;IAEvB,2DAA2D;IAC3D,4BAA4B;IAC5B,mEAAyB,CAAA;IAEzB,kEAAkE;IAClE,gEAAgE;IAChE,qBAAqB;IACrB,+DAAuB,CAAA;IAEvB,qEAAqE;IACrE,2EAA6B,CAAA;IAE7B,2DAA2D;IAC3D,gDAAgD;IAChD,4DAAsB,CAAA;IAEtB,8DAA8D;IAC9D,0BAA0B;IAC1B,4EAA8B,CAAA;IAE9B,oEAAoE;IACpE,0BAA0B;IAC1B,wFAAoC,CAAA;IAEpC,yDAAyD;IACzD,2DAA2D;IAC3D,mCAAmC;IACnC,0EAA6B,CAAA;IAE7B,yDAAyD;IACzD,6DAA6D;IAC7D,uDAAuD;IACvD,yFAAoC,CAAA;IAEpC,mDAAmD;IACnD,uEAA2B,CAAA;IAE3B,6CAA6C;IAC7C,0DAAoB,CAAA;IAEpB,mEAAmE;IACnE,kEAAwB,CAAA;IAExB,iEAAiE;IACjE,iCAAiC;IACjC,wDAAmB,CAAA;IAEnB,wDAAwD;IACxD,iEAAuB,CAAA;IAEvB,uDAAuD;IACvD,2EAA4B,CAAA;IAE5B,yCAAyC;IACzC,mFAAgC,CAAA;IAEhC,6DAA6D;IAC7D,2DAA2D;IAC3D,oDAAoD;IACpD,6EAA6B,CAAA;IAE7B,8DAA8D;IAC9D,iDAAiD;IACjD,gFAA8B,CAAA;IAE9B,oEAAoE;IACpE,mBAAmB;IACnB,kFAA+B,CAAA;IAE/B,6CAA6C;IAC7C,yEAA0B,CAAA;IAE1B,2EAA2E;IAC3E,4BAA4B;IAC5B,6EAA4B,CAAA;IAE5B,sEAAsE;IACtE,+DAA+D;IAC/D,mEAAuB,CAAA;IAEvB,yEAAyE;IACzE,8CAA8C;IAC9C,0FAAkC,CAAA;IAElC,6DAA6D;IAC7D,iEAA+B,CAAA;IAE/B,sEAAsE;IACtE,mEAAgC,CAAA;IAEhC,sEAAsE;IACtE,iFAAuC,CAAA;IAEvC,sEAAsE;IACtE,wBAAwB;IACxB,mFAMiB,CAAA;AACrB,CAAC,EAhIiB,SAAS,yBAAT,SAAS,QAgI1B;AAuRD,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,yDAAS,CAAA;IACT,yEAAiB,CAAA;IACjB,iFAAqB,CAAA;AACzB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB"}