@zzzen/pyright-internal 1.2.0-dev.20240714 → 1.2.0-dev.20240728

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 (225) 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 +8 -8
  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 +3 -2
  8. package/dist/analyzer/checker.js +137 -142
  9. package/dist/analyzer/checker.js.map +1 -1
  10. package/dist/analyzer/codeFlowEngine.d.ts +2 -2
  11. package/dist/analyzer/codeFlowEngine.js +74 -44
  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/constraintSolver.d.ts +2 -2
  16. package/dist/analyzer/constraintSolver.js +166 -206
  17. package/dist/analyzer/constraintSolver.js.map +1 -1
  18. package/dist/analyzer/constructorTransform.d.ts +2 -3
  19. package/dist/analyzer/constructorTransform.js +18 -19
  20. package/dist/analyzer/constructorTransform.js.map +1 -1
  21. package/dist/analyzer/constructors.d.ts +3 -3
  22. package/dist/analyzer/constructors.js +72 -175
  23. package/dist/analyzer/constructors.js.map +1 -1
  24. package/dist/analyzer/dataClasses.d.ts +2 -2
  25. package/dist/analyzer/dataClasses.js +60 -40
  26. package/dist/analyzer/dataClasses.js.map +1 -1
  27. package/dist/analyzer/declaration.d.ts +9 -9
  28. package/dist/analyzer/declaration.js +9 -9
  29. package/dist/analyzer/declaration.js.map +1 -1
  30. package/dist/analyzer/declarationUtils.d.ts +1 -1
  31. package/dist/analyzer/declarationUtils.js +6 -6
  32. package/dist/analyzer/declarationUtils.js.map +1 -1
  33. package/dist/analyzer/decorators.js +5 -6
  34. package/dist/analyzer/decorators.js.map +1 -1
  35. package/dist/analyzer/docStringConversion.js +2 -2
  36. package/dist/analyzer/docStringConversion.js.map +1 -1
  37. package/dist/analyzer/enums.d.ts +2 -2
  38. package/dist/analyzer/enums.js +6 -6
  39. package/dist/analyzer/enums.js.map +1 -1
  40. package/dist/analyzer/functionTransform.d.ts +2 -2
  41. package/dist/analyzer/functionTransform.js +4 -4
  42. package/dist/analyzer/functionTransform.js.map +1 -1
  43. package/dist/analyzer/importResolver.js +5 -3
  44. package/dist/analyzer/importResolver.js.map +1 -1
  45. package/dist/analyzer/namedTuples.d.ts +3 -3
  46. package/dist/analyzer/namedTuples.js +21 -22
  47. package/dist/analyzer/namedTuples.js.map +1 -1
  48. package/dist/analyzer/operations.js +145 -96
  49. package/dist/analyzer/operations.js.map +1 -1
  50. package/dist/analyzer/packageTypeVerifier.js +8 -8
  51. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  52. package/dist/analyzer/parameterUtils.d.ts +10 -10
  53. package/dist/analyzer/parameterUtils.js +60 -59
  54. package/dist/analyzer/parameterUtils.js.map +1 -1
  55. package/dist/analyzer/parseTreeUtils.d.ts +7 -6
  56. package/dist/analyzer/parseTreeUtils.js +47 -24
  57. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  58. package/dist/analyzer/patternMatching.js +109 -90
  59. package/dist/analyzer/patternMatching.js.map +1 -1
  60. package/dist/analyzer/program.js +11 -4
  61. package/dist/analyzer/program.js.map +1 -1
  62. package/dist/analyzer/properties.js +23 -19
  63. package/dist/analyzer/properties.js.map +1 -1
  64. package/dist/analyzer/protocols.js +23 -20
  65. package/dist/analyzer/protocols.js.map +1 -1
  66. package/dist/analyzer/pythonPathUtils.js +1 -1
  67. package/dist/analyzer/pythonPathUtils.js.map +1 -1
  68. package/dist/analyzer/service.d.ts +3 -7
  69. package/dist/analyzer/service.js +28 -30
  70. package/dist/analyzer/service.js.map +1 -1
  71. package/dist/analyzer/serviceUtils.d.ts +8 -0
  72. package/dist/analyzer/serviceUtils.js +31 -0
  73. package/dist/analyzer/serviceUtils.js.map +1 -0
  74. package/dist/analyzer/sourceFile.js +5 -19
  75. package/dist/analyzer/sourceFile.js.map +1 -1
  76. package/dist/analyzer/sourceMapper.d.ts +1 -1
  77. package/dist/analyzer/sourceMapper.js +4 -4
  78. package/dist/analyzer/sourceMapper.js.map +1 -1
  79. package/dist/analyzer/staticExpressions.js +1 -1
  80. package/dist/analyzer/staticExpressions.js.map +1 -1
  81. package/dist/analyzer/testWalker.js +13 -1
  82. package/dist/analyzer/testWalker.js.map +1 -1
  83. package/dist/analyzer/tracePrinter.js +4 -4
  84. package/dist/analyzer/tracePrinter.js.map +1 -1
  85. package/dist/analyzer/tuples.d.ts +9 -0
  86. package/dist/analyzer/tuples.js +252 -0
  87. package/dist/analyzer/tuples.js.map +1 -0
  88. package/dist/analyzer/typeComplexity.d.ts +2 -0
  89. package/dist/analyzer/typeComplexity.js +86 -0
  90. package/dist/analyzer/typeComplexity.js.map +1 -0
  91. package/dist/analyzer/typeEvaluator.js +1721 -1824
  92. package/dist/analyzer/typeEvaluator.js.map +1 -1
  93. package/dist/analyzer/typeEvaluatorTypes.d.ts +47 -40
  94. package/dist/analyzer/typeEvaluatorTypes.js +10 -1
  95. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  96. package/dist/analyzer/typeGuards.js +116 -90
  97. package/dist/analyzer/typeGuards.js.map +1 -1
  98. package/dist/analyzer/typePrinter.d.ts +1 -1
  99. package/dist/analyzer/typePrinter.js +54 -53
  100. package/dist/analyzer/typePrinter.js.map +1 -1
  101. package/dist/analyzer/typeStubWriter.d.ts +3 -3
  102. package/dist/analyzer/typeStubWriter.js +15 -15
  103. package/dist/analyzer/typeStubWriter.js.map +1 -1
  104. package/dist/analyzer/typeUtils.d.ts +35 -29
  105. package/dist/analyzer/typeUtils.js +420 -357
  106. package/dist/analyzer/typeUtils.js.map +1 -1
  107. package/dist/analyzer/typeVarContext.d.ts +24 -36
  108. package/dist/analyzer/typeVarContext.js +89 -193
  109. package/dist/analyzer/typeVarContext.js.map +1 -1
  110. package/dist/analyzer/typeWalker.js +4 -4
  111. package/dist/analyzer/typeWalker.js.map +1 -1
  112. package/dist/analyzer/typedDicts.d.ts +2 -2
  113. package/dist/analyzer/typedDicts.js +49 -53
  114. package/dist/analyzer/typedDicts.js.map +1 -1
  115. package/dist/analyzer/types.d.ts +89 -63
  116. package/dist/analyzer/types.js +163 -120
  117. package/dist/analyzer/types.js.map +1 -1
  118. package/dist/commands/dumpFileDebugInfoCommand.js +12 -12
  119. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  120. package/dist/common/configOptions.d.ts +1 -0
  121. package/dist/common/configOptions.js +5 -0
  122. package/dist/common/configOptions.js.map +1 -1
  123. package/dist/common/diagnosticRules.d.ts +1 -0
  124. package/dist/common/diagnosticRules.js +1 -0
  125. package/dist/common/diagnosticRules.js.map +1 -1
  126. package/dist/common/fileSystem.d.ts +0 -1
  127. package/dist/common/fileSystem.js.map +1 -1
  128. package/dist/common/languageServerInterface.d.ts +13 -0
  129. package/dist/common/languageServerInterface.js +15 -1
  130. package/dist/common/languageServerInterface.js.map +1 -1
  131. package/dist/common/lspUtils.js +2 -2
  132. package/dist/common/memUtils.d.ts +4 -0
  133. package/dist/common/memUtils.js +33 -2
  134. package/dist/common/memUtils.js.map +1 -1
  135. package/dist/common/serviceKeys.d.ts +3 -0
  136. package/dist/common/serviceKeys.js +2 -0
  137. package/dist/common/serviceKeys.js.map +1 -1
  138. package/dist/common/serviceProviderExtensions.js +7 -0
  139. package/dist/common/serviceProviderExtensions.js.map +1 -1
  140. package/dist/languageServerBase.d.ts +4 -3
  141. package/dist/languageServerBase.js +14 -10
  142. package/dist/languageServerBase.js.map +1 -1
  143. package/dist/languageService/autoImporter.d.ts +3 -2
  144. package/dist/languageService/autoImporter.js +5 -1
  145. package/dist/languageService/autoImporter.js.map +1 -1
  146. package/dist/languageService/completionProvider.d.ts +5 -3
  147. package/dist/languageService/completionProvider.js +38 -37
  148. package/dist/languageService/completionProvider.js.map +1 -1
  149. package/dist/languageService/completionProviderUtils.d.ts +1 -1
  150. package/dist/languageService/completionProviderUtils.js +3 -3
  151. package/dist/languageService/completionProviderUtils.js.map +1 -1
  152. package/dist/languageService/fileWatcherDynamicFeature.js +2 -2
  153. package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
  154. package/dist/languageService/hoverProvider.js +14 -6
  155. package/dist/languageService/hoverProvider.js.map +1 -1
  156. package/dist/languageService/referencesProvider.d.ts +10 -4
  157. package/dist/languageService/referencesProvider.js +24 -12
  158. package/dist/languageService/referencesProvider.js.map +1 -1
  159. package/dist/languageService/renameProvider.js +21 -4
  160. package/dist/languageService/renameProvider.js.map +1 -1
  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 +9 -3
  166. package/dist/localization/localize.js +8 -1
  167. package/dist/localization/localize.js.map +1 -1
  168. package/dist/localization/package.nls.cs.json +5 -2
  169. package/dist/localization/package.nls.de.json +5 -2
  170. package/dist/localization/package.nls.en-us.json +7 -1
  171. package/dist/localization/package.nls.es.json +5 -2
  172. package/dist/localization/package.nls.fr.json +5 -2
  173. package/dist/localization/package.nls.it.json +5 -2
  174. package/dist/localization/package.nls.ja.json +5 -2
  175. package/dist/localization/package.nls.ko.json +5 -2
  176. package/dist/localization/package.nls.pl.json +5 -2
  177. package/dist/localization/package.nls.pt-br.json +5 -2
  178. package/dist/localization/package.nls.qps-ploc.json +5 -2
  179. package/dist/localization/package.nls.ru.json +5 -2
  180. package/dist/localization/package.nls.tr.json +5 -2
  181. package/dist/localization/package.nls.zh-cn.json +5 -2
  182. package/dist/localization/package.nls.zh-tw.json +5 -2
  183. package/dist/parser/parseNodes.d.ts +12 -10
  184. package/dist/parser/parseNodes.js +23 -21
  185. package/dist/parser/parseNodes.js.map +1 -1
  186. package/dist/parser/parser.js +66 -43
  187. package/dist/parser/parser.js.map +1 -1
  188. package/dist/tests/checker.test.js +2 -2
  189. package/dist/tests/fourslash/rename.args.fourslash.d.ts +1 -0
  190. package/dist/tests/fourslash/rename.args.fourslash.js +71 -0
  191. package/dist/tests/fourslash/rename.args.fourslash.js.map +1 -0
  192. package/dist/tests/fourslash/signature.builtinDocstrings.fourslash.js +4 -21
  193. package/dist/tests/fourslash/signature.builtinDocstrings.fourslash.js.map +1 -1
  194. package/dist/tests/fourslash/signature.complicated.fourslash.js +1 -1
  195. package/dist/tests/fourslash/signature.complicated.fourslash.js.map +1 -1
  196. package/dist/tests/harness/fourslash/fourSlashParser.js +1 -1
  197. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  198. package/dist/tests/harness/fourslash/testStateUtils.js +2 -2
  199. package/dist/tests/harness/fourslash/testStateUtils.js.map +1 -1
  200. package/dist/tests/harness/vfs/filesystem.d.ts +0 -1
  201. package/dist/tests/harness/vfs/filesystem.js +0 -4
  202. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  203. package/dist/tests/importResolver.test.js +62 -15
  204. package/dist/tests/importResolver.test.js.map +1 -1
  205. package/dist/tests/lsp/languageServerTestUtils.js +1 -1
  206. package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
  207. package/dist/tests/typeEvaluator1.test.js +17 -0
  208. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  209. package/dist/tests/typeEvaluator2.test.js +4 -0
  210. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  211. package/dist/tests/typeEvaluator3.test.js +1 -1
  212. package/dist/tests/typeEvaluator4.test.js +19 -7
  213. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  214. package/dist/tests/typeEvaluator5.test.js +8 -2
  215. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  216. package/dist/tests/typeEvaluator6.test.js +76 -60
  217. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  218. package/dist/tests/typeEvaluator7.test.js +5 -1
  219. package/dist/tests/typeEvaluator7.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
@@ -3,7 +3,7 @@ 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
9
  import { Declaration } from './declaration';
@@ -11,7 +11,7 @@ import * as DeclarationUtils from './declarationUtils';
11
11
  import { SymbolWithScope } from './scope';
12
12
  import { Symbol } from './symbol';
13
13
  import { PrintTypeFlags } from './typePrinter';
14
- import { AssignTypeFlags, ClassMember, InferenceContext, MemberAccessFlags, UniqueSignatureTracker } from './typeUtils';
14
+ import { AssignTypeFlags, ClassMember, InferenceContext, MemberAccessFlags } from './typeUtils';
15
15
  import { TypeVarContext } from './typeVarContext';
16
16
  import { AnyType, ClassType, FunctionParam, FunctionType, OverloadedFunctionType, Type, TypeCondition, TypeVarType, UnknownType, Variance } from './types';
17
17
  export declare const maxSubtypesForInferredType = 64;
@@ -45,6 +45,7 @@ export declare const enum EvalFlags {
45
45
  AllowConcatenate = 134217728,
46
46
  StripTupleLiterals = 268435456,
47
47
  IsinstanceArg = 536870912,
48
+ EnforceClassTypeVarScope = 1073741824,
48
49
  CallBaseDefaults = 2,
49
50
  IndexBaseDefaults = 2,
50
51
  MemberAccessBaseDefaults = 2,
@@ -74,7 +75,7 @@ export interface TypeResultWithNode extends TypeResult {
74
75
  export interface MemberAccessDeprecationInfo {
75
76
  accessType: 'property' | 'descriptor';
76
77
  accessMethod: 'get' | 'set' | 'del';
77
- deprecationMessage: string;
78
+ deprecatedMessage: string;
78
79
  }
79
80
  export interface EvaluatorUsage {
80
81
  method: 'get' | 'set' | 'del';
@@ -104,21 +105,21 @@ export interface AbstractSymbol {
104
105
  classType: Type;
105
106
  hasImplementation: boolean;
106
107
  }
107
- export interface FunctionArgumentBase {
108
- argumentCategory: ArgumentCategory;
108
+ export interface ArgBase {
109
+ argCategory: ArgCategory;
109
110
  node?: ArgumentNode | undefined;
110
111
  name?: NameNode | undefined;
111
112
  typeResult?: TypeResult | undefined;
112
113
  valueExpression?: ExpressionNode | undefined;
113
114
  active?: boolean | undefined;
114
115
  }
115
- export interface FunctionArgumentWithType extends FunctionArgumentBase {
116
+ export interface ArgWithType extends ArgBase {
116
117
  typeResult: TypeResult;
117
118
  }
118
- export interface FunctionArgumentWithExpression extends FunctionArgumentBase {
119
+ export interface ArgWithExpression extends ArgBase {
119
120
  valueExpression: ExpressionNode;
120
121
  }
121
- export type FunctionArgument = FunctionArgumentWithType | FunctionArgumentWithExpression;
122
+ export type Arg = ArgWithType | ArgWithExpression;
122
123
  export interface EffectiveTypeResult {
123
124
  type: Type;
124
125
  isIncomplete: boolean;
@@ -129,10 +130,10 @@ export interface EffectiveTypeResult {
129
130
  evaluationAttempts?: number;
130
131
  }
131
132
  export interface ValidateArgTypeParams {
132
- paramCategory: ParameterCategory;
133
+ paramCategory: ParamCategory;
133
134
  paramType: Type;
134
135
  requiresTypeVarMatching: boolean;
135
- argument: FunctionArgument;
136
+ argument: Arg;
136
137
  isDefaultArg?: boolean;
137
138
  argType?: Type | undefined;
138
139
  errorNode: ExpressionNode;
@@ -141,27 +142,23 @@ export interface ValidateArgTypeParams {
141
142
  mapsToVarArgList?: boolean | undefined;
142
143
  isinstanceParam?: boolean;
143
144
  }
144
- export interface AnnotationTypeOptions {
145
- isVariableAnnotation?: boolean;
146
- allowFinal?: boolean;
147
- allowClassVar?: boolean;
148
- associateTypeVarsWithScope?: boolean;
149
- allowTypeVarTuple?: boolean;
150
- allowParamSpec?: boolean;
151
- allowRequired?: boolean;
152
- allowUnpackedTypedDict?: boolean;
153
- allowUnpackedTuple?: boolean;
154
- notParsedByInterpreter?: boolean;
155
- }
156
145
  export interface ExpectedTypeOptions {
157
146
  allowFinal?: boolean;
158
147
  allowRequired?: boolean;
159
148
  allowUnpackedTuple?: boolean;
149
+ allowUnpackedTypedDict?: boolean;
160
150
  allowParamSpec?: boolean;
161
- allowForwardReference?: boolean;
151
+ allowClassVar?: boolean;
152
+ varTypeAnnotation?: boolean;
153
+ typeVarGetsCurScope?: boolean;
162
154
  allowTypeVarsWithoutScopeId?: boolean;
163
- enforceTypeAnnotationRules?: boolean;
164
- disallowProtocolAndTypedDict?: boolean;
155
+ enforceClassTypeVarScope?: boolean;
156
+ parsesStringLiteral?: boolean;
157
+ notParsed?: boolean;
158
+ noNonTypeSpecialForms?: boolean;
159
+ forwardRefs?: boolean;
160
+ typeExpression?: boolean;
161
+ convertEllipsisToAny?: boolean;
165
162
  }
166
163
  export interface ExpectedTypeResult {
167
164
  type: Type;
@@ -184,7 +181,7 @@ export interface CallResult {
184
181
  returnType?: Type | undefined;
185
182
  isTypeIncomplete?: boolean | undefined;
186
183
  argumentErrors?: boolean;
187
- anyOrUnknownArgument?: UnknownType | AnyType;
184
+ anyOrUnknownArg?: UnknownType | AnyType;
188
185
  activeParam?: FunctionParam | undefined;
189
186
  specializedInitSelfType?: Type | undefined;
190
187
  overloadsUsedForCall?: FunctionType[];
@@ -202,6 +199,11 @@ export interface ClassMemberLookup {
202
199
  narrowedTypeForSet?: Type;
203
200
  memberAccessDeprecationInfo?: MemberAccessDeprecationInfo;
204
201
  }
202
+ export declare enum Reachability {
203
+ Reachable = 0,
204
+ UnreachableAlways = 1,
205
+ UnreachableByAnalysis = 2
206
+ }
205
207
  export interface PrintTypeOptions {
206
208
  expandTypeAlias?: boolean;
207
209
  enforcePythonSyntax?: boolean;
@@ -209,7 +211,7 @@ export interface PrintTypeOptions {
209
211
  useTypingUnpack?: boolean;
210
212
  printUnknownWithAny?: boolean;
211
213
  printTypeVarVariance?: boolean;
212
- omitTypeArgumentsIfUnknown?: boolean;
214
+ omitTypeArgsIfUnknown?: boolean;
213
215
  }
214
216
  export interface DeclaredSymbolTypeInfo {
215
217
  type: Type | undefined;
@@ -221,7 +223,7 @@ export interface ResolveAliasOptions {
221
223
  }
222
224
  export interface ValidateTypeArgsOptions {
223
225
  allowEmptyTuple?: boolean;
224
- allowVariadicTypeVar?: boolean;
226
+ allowTypeVarTuple?: boolean;
225
227
  allowParamSpec?: boolean;
226
228
  allowTypeArgList?: boolean;
227
229
  allowUnpackedTuples?: boolean;
@@ -242,27 +244,31 @@ export interface TypeEvaluator {
242
244
  getTypeResultForDecorator: (node: DecoratorNode) => TypeResult | undefined;
243
245
  getCachedType: (node: ExpressionNode) => Type | undefined;
244
246
  getTypeOfExpression: (node: ExpressionNode, flags?: EvalFlags, context?: InferenceContext) => TypeResult;
245
- getTypeOfAnnotation: (node: ExpressionNode, options?: AnnotationTypeOptions) => Type;
247
+ getTypeOfAnnotation: (node: ExpressionNode, options?: ExpectedTypeOptions) => Type;
246
248
  getTypeOfClass: (node: ClassNode) => ClassTypeResult | undefined;
249
+ createSubclass: (errorNode: ExpressionNode, type1: ClassType, type2: ClassType) => ClassType;
247
250
  getTypeOfFunction: (node: FunctionNode) => FunctionTypeResult | undefined;
248
251
  getTypeOfExpressionExpectingType: (node: ExpressionNode, options?: ExpectedTypeOptions) => TypeResult;
249
252
  evaluateTypeForSubnode: (subnode: ParseNode, callback: () => void) => TypeResult | undefined;
250
253
  evaluateTypesForStatement: (node: ParseNode) => void;
251
254
  evaluateTypesForMatchStatement: (node: MatchNode) => void;
252
255
  evaluateTypesForCaseStatement: (node: CaseNode) => void;
253
- evaluateTypeOfParameter: (node: ParameterNode) => void;
256
+ evaluateTypeOfParam: (node: ParameterNode) => void;
254
257
  canBeTruthy: (type: Type) => boolean;
255
258
  canBeFalsy: (type: Type) => boolean;
256
259
  stripLiteralValue: (type: Type) => Type;
257
260
  removeTruthinessFromType: (type: Type) => Type;
258
261
  removeFalsinessFromType: (type: Type) => Type;
262
+ stripTypeGuard: (type: Type) => Type;
259
263
  getExpectedType: (node: ExpressionNode) => ExpectedTypeResult | undefined;
260
264
  verifyRaiseExceptionType: (node: RaiseNode) => void;
261
265
  verifyDeleteExpression: (node: ExpressionNode) => void;
262
- validateOverloadedFunctionArguments: (errorNode: ExpressionNode, argList: FunctionArgument[], typeResult: TypeResult<OverloadedFunctionType>, typeVarContext: TypeVarContext | undefined, skipUnknownArgCheck: boolean, inferenceContext: InferenceContext | undefined, signatureTracker: UniqueSignatureTracker | undefined) => CallResult;
266
+ validateOverloadedArgTypes: (errorNode: ExpressionNode, argList: Arg[], typeResult: TypeResult<OverloadedFunctionType>, typeVarContext: TypeVarContext | undefined, skipUnknownArgCheck: boolean, inferenceContext: InferenceContext | undefined) => CallResult;
263
267
  validateInitSubclassArgs: (node: ClassNode, classType: ClassType) => void;
264
- isAfterNodeReachable: (node: ParseNode) => boolean;
265
268
  isNodeReachable: (node: ParseNode, sourceNode?: ParseNode | undefined) => boolean;
269
+ isAfterNodeReachable: (node: ParseNode) => boolean;
270
+ getNodeReachability: (node: ParseNode, sourceNode?: ParseNode | undefined) => Reachability;
271
+ getAfterNodeReachability: (node: ParseNode) => Reachability;
266
272
  isAsymmetricAccessorAssignment: (node: ParseNode) => boolean;
267
273
  suppressDiagnostics: (node: ParseNode, callback: () => void) => void;
268
274
  isSpecialFormClass: (classType: ClassType, flags: AssignTypeFlags) => boolean;
@@ -274,7 +280,7 @@ export interface TypeEvaluator {
274
280
  getTypeOfIterable: (typeResult: TypeResult, isAsync: boolean, errorNode: ExpressionNode, emitNotIterableError?: boolean) => TypeResult | undefined;
275
281
  getTypeOfIterator: (typeResult: TypeResult, isAsync: boolean, errorNode: ExpressionNode, emitNotIterableError?: boolean) => TypeResult | undefined;
276
282
  getGetterTypeFromProperty: (propertyClass: ClassType, inferTypeIfNeeded: boolean) => Type | undefined;
277
- getTypeOfArgument: (arg: FunctionArgument, inferenceContext: InferenceContext | undefined, signatureTracker: UniqueSignatureTracker | undefined) => TypeResult;
283
+ getTypeOfArg: (arg: Arg, inferenceContext: InferenceContext | undefined) => TypeResult;
278
284
  markNamesAccessed: (node: ParseNode, names: string[]) => void;
279
285
  expandPromotionTypes: (node: ParseNode, type: Type) => Type;
280
286
  makeTopLevelTypeVarsConcrete: (type: Type, makeParamSpecsConcrete?: boolean) => Type;
@@ -288,7 +294,7 @@ export interface TypeEvaluator {
288
294
  getDeclaredTypeForExpression: (expression: ExpressionNode, usage?: EvaluatorUsage) => Type | undefined;
289
295
  getFunctionDeclaredReturnType: (node: FunctionNode) => Type | undefined;
290
296
  getFunctionInferredReturnType: (type: FunctionType, callSiteInfo?: CallSiteEvaluationInfo) => Type;
291
- getBestOverloadForArguments: (errorNode: ExpressionNode, typeResult: TypeResult<OverloadedFunctionType>, argList: FunctionArgument[]) => FunctionType | undefined;
297
+ getBestOverloadForArgs: (errorNode: ExpressionNode, typeResult: TypeResult<OverloadedFunctionType>, argList: Arg[]) => FunctionType | undefined;
292
298
  getBuiltInType: (node: ParseNode, name: string) => Type;
293
299
  getTypeOfMember: (member: ClassMember) => Type;
294
300
  getTypeOfBoundMember(errorNode: ExpressionNode, objectType: ClassType, memberName: string, usage?: EvaluatorUsage, diag?: DiagnosticAddendum | undefined, flags?: MemberAccessFlags, selfType?: ClassType | TypeVarType): TypeResult | undefined;
@@ -300,27 +306,28 @@ export interface TypeEvaluator {
300
306
  narrowConstrainedTypeVar: (node: ParseNode, typeVar: TypeVarType) => Type | undefined;
301
307
  assignType: (destType: Type, srcType: Type, diag?: DiagnosticAddendum, destTypeVarContext?: TypeVarContext, srcTypeVarContext?: TypeVarContext, flags?: AssignTypeFlags, recursionCount?: number) => boolean;
302
308
  validateOverrideMethod: (baseMethod: Type, overrideMethod: FunctionType | OverloadedFunctionType, baseClass: ClassType | undefined, diag: DiagnosticAddendum, enforceParamNames?: boolean) => boolean;
303
- validateCallArguments: (errorNode: ExpressionNode, argList: FunctionArgument[], callTypeResult: TypeResult, typeVarContext: TypeVarContext | undefined, skipUnknownArgCheck: boolean | undefined, inferenceContext: InferenceContext | undefined, signatureTracker: UniqueSignatureTracker | undefined) => CallResult;
309
+ validateCallArgs: (errorNode: ExpressionNode, argList: Arg[], callTypeResult: TypeResult, typeVarContext: TypeVarContext | undefined, skipUnknownArgCheck: boolean | undefined, inferenceContext: InferenceContext | undefined) => CallResult;
304
310
  validateTypeArg: (argResult: TypeResultWithNode, options?: ValidateTypeArgsOptions) => boolean;
305
311
  assignTypeToExpression: (target: ExpressionNode, typeResult: TypeResult, srcExpr: ExpressionNode) => void;
306
312
  assignClassToSelf: (destType: ClassType, srcType: ClassType, assumedVariance: Variance) => boolean;
307
- getBuiltInObject: (node: ParseNode, name: string, typeArguments?: Type[]) => Type;
313
+ getBuiltInObject: (node: ParseNode, name: string, typeArgs?: Type[]) => Type;
308
314
  getTypedDictClassType: () => ClassType | undefined;
309
315
  getTupleClassType: () => ClassType | undefined;
310
316
  getObjectType: () => Type;
311
317
  getNoneType: () => Type;
312
318
  getUnionClassType(): Type;
319
+ getTypeClassType(): ClassType | undefined;
313
320
  getTypingType: (node: ParseNode, symbolName: string) => Type | undefined;
314
321
  inferReturnTypeIfNecessary: (type: Type) => void;
315
- inferTypeParameterVarianceForClass: (type: ClassType) => void;
316
- assignTypeArguments: (destType: ClassType, srcType: ClassType, diag: DiagnosticAddendum | undefined, destTypeVarContext: TypeVarContext | undefined, srcTypeVarContext: TypeVarContext | undefined, flags: AssignTypeFlags, recursionCount: number) => boolean;
317
- reportMissingTypeArguments: (node: ExpressionNode, type: Type, flags: EvalFlags) => Type;
322
+ inferVarianceForClass: (type: ClassType) => void;
323
+ assignTypeArgs: (destType: ClassType, srcType: ClassType, diag: DiagnosticAddendum | undefined, destTypeVarContext: TypeVarContext | undefined, srcTypeVarContext: TypeVarContext | undefined, flags: AssignTypeFlags, recursionCount: number) => boolean;
324
+ reportMissingTypeArgs: (node: ExpressionNode, type: Type, flags: EvalFlags) => Type;
318
325
  isFinalVariable: (symbol: Symbol) => boolean;
319
326
  isFinalVariableDeclaration: (decl: Declaration) => boolean;
320
327
  isExplicitTypeAliasDeclaration: (decl: Declaration) => boolean;
321
328
  addInformation: (message: string, node: ParseNode, range?: TextRange) => Diagnostic | undefined;
322
329
  addUnusedCode: (node: ParseNode, textRange: TextRange) => void;
323
- addUnreachableCode: (node: ParseNode, textRange: TextRange) => void;
330
+ addUnreachableCode: (node: ParseNode, reachability: Reachability, textRange: TextRange) => void;
324
331
  addDeprecated: (message: string, node: ParseNode) => void;
325
332
  addDiagnostic: (rule: DiagnosticRule, message: string, node: ParseNode, range?: TextRange) => Diagnostic | undefined;
326
333
  addDiagnosticForTextRange: (fileInfo: AnalyzerFileInfo, rule: DiagnosticRule, message: string, range: TextRange) => Diagnostic | undefined;
@@ -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;
@@ -90,6 +90,9 @@ var EvalFlags;
90
90
  // Interpret the expression using the specialized behaviors associated
91
91
  // with the second argument to isinstance and issubclass calls.
92
92
  EvalFlags[EvalFlags["IsinstanceArg"] = 536870912] = "IsinstanceArg";
93
+ // Enforce that any type variables referenced in this type are associated
94
+ // with the enclosing class or an outer scope.
95
+ EvalFlags[EvalFlags["EnforceClassTypeVarScope"] = 1073741824] = "EnforceClassTypeVarScope";
93
96
  // Defaults used for evaluating the LHS of a call expression.
94
97
  EvalFlags[EvalFlags["CallBaseDefaults"] = 2] = "CallBaseDefaults";
95
98
  // Defaults used for evaluating the LHS of a member access expression.
@@ -100,4 +103,10 @@ var EvalFlags;
100
103
  // or 'issubclass' call.
101
104
  EvalFlags[EvalFlags["IsInstanceArgDefaults"] = 536871546] = "IsInstanceArgDefaults";
102
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 = {}));
103
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,SA4HjB;AA5HD,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,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,EA5HiB,SAAS,yBAAT,SAAS,QA4H1B"}
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;AA8PD,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,yDAAS,CAAA;IACT,yEAAiB,CAAA;IACjB,iFAAqB,CAAA;AACzB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB"}