@zzzen/pyright-internal 1.2.0-dev.20261101 → 1.2.0-dev.20261108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/analyzer/binder.js +9 -3
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/constructorTransform.js +12 -0
  4. package/dist/analyzer/constructorTransform.js.map +1 -1
  5. package/dist/analyzer/constructors.d.ts +1 -1
  6. package/dist/analyzer/constructors.js +1 -1
  7. package/dist/analyzer/constructors.js.map +1 -1
  8. package/dist/analyzer/decorators.d.ts +1 -1
  9. package/dist/analyzer/decorators.js.map +1 -1
  10. package/dist/analyzer/functionTransform.d.ts +5 -0
  11. package/dist/analyzer/functionTransform.js +6 -3
  12. package/dist/analyzer/functionTransform.js.map +1 -1
  13. package/dist/analyzer/missingBindingMetadata.d.ts +6 -0
  14. package/dist/analyzer/missingBindingMetadata.js +22 -0
  15. package/dist/analyzer/missingBindingMetadata.js.map +1 -0
  16. package/dist/analyzer/namedTuples.d.ts +4 -1
  17. package/dist/analyzer/namedTuples.js +1 -0
  18. package/dist/analyzer/namedTuples.js.map +1 -1
  19. package/dist/analyzer/patternMatching.d.ts +5 -1
  20. package/dist/analyzer/patternMatching.js +3 -0
  21. package/dist/analyzer/patternMatching.js.map +1 -1
  22. package/dist/analyzer/program.d.ts +3 -0
  23. package/dist/analyzer/program.js +71 -1
  24. package/dist/analyzer/program.js.map +1 -1
  25. package/dist/analyzer/tuples.d.ts +1 -1
  26. package/dist/analyzer/tuples.js.map +1 -1
  27. package/dist/analyzer/typeCacheUtils.d.ts +1 -0
  28. package/dist/analyzer/typeCacheUtils.js +10 -0
  29. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  30. package/dist/analyzer/typeEvaluator/boundMethodSpecialization.d.ts +15 -0
  31. package/dist/analyzer/typeEvaluator/boundMethodSpecialization.js +98 -0
  32. package/dist/analyzer/typeEvaluator/boundMethodSpecialization.js.map +1 -0
  33. package/dist/analyzer/typeEvaluator/classConstruction.d.ts +25 -0
  34. package/dist/analyzer/typeEvaluator/classConstruction.js +251 -0
  35. package/dist/analyzer/typeEvaluator/classConstruction.js.map +1 -0
  36. package/dist/analyzer/typeEvaluator/collectionInference.d.ts +41 -0
  37. package/dist/analyzer/typeEvaluator/collectionInference.js +695 -0
  38. package/dist/analyzer/typeEvaluator/collectionInference.js.map +1 -0
  39. package/dist/analyzer/typeEvaluator/diagnostics.d.ts +33 -0
  40. package/dist/analyzer/typeEvaluator/diagnostics.js +198 -0
  41. package/dist/analyzer/typeEvaluator/diagnostics.js.map +1 -0
  42. package/dist/analyzer/typeEvaluator/evaluatorCore.d.ts +80 -0
  43. package/dist/analyzer/typeEvaluator/evaluatorCore.js +1126 -0
  44. package/dist/analyzer/typeEvaluator/evaluatorCore.js.map +1 -0
  45. package/dist/analyzer/typeEvaluator/evaluatorNarrowing.d.ts +17 -0
  46. package/dist/analyzer/typeEvaluator/evaluatorNarrowing.js +370 -0
  47. package/dist/analyzer/typeEvaluator/evaluatorNarrowing.js.map +1 -0
  48. package/dist/analyzer/typeEvaluator/expressionEvaluation.d.ts +81 -0
  49. package/dist/analyzer/typeEvaluator/expressionEvaluation.js +1802 -0
  50. package/dist/analyzer/typeEvaluator/expressionEvaluation.js.map +1 -0
  51. package/dist/analyzer/typeEvaluator/flowAnalysis.d.ts +33 -0
  52. package/dist/analyzer/typeEvaluator/flowAnalysis.js +217 -0
  53. package/dist/analyzer/typeEvaluator/flowAnalysis.js.map +1 -0
  54. package/dist/analyzer/typeEvaluator/internals.d.ts +137 -0
  55. package/dist/analyzer/typeEvaluator/internals.js +10 -0
  56. package/dist/analyzer/typeEvaluator/internals.js.map +1 -0
  57. package/dist/analyzer/typeEvaluator/literalTypes.d.ts +3 -0
  58. package/dist/analyzer/typeEvaluator/literalTypes.js +52 -0
  59. package/dist/analyzer/typeEvaluator/literalTypes.js.map +1 -0
  60. package/dist/analyzer/typeEvaluator/memberResolution.d.ts +79 -0
  61. package/dist/analyzer/typeEvaluator/memberResolution.js +1007 -0
  62. package/dist/analyzer/typeEvaluator/memberResolution.js.map +1 -0
  63. package/dist/analyzer/typeEvaluator/overrideValidation.d.ts +15 -0
  64. package/dist/analyzer/typeEvaluator/overrideValidation.js +422 -0
  65. package/dist/analyzer/typeEvaluator/overrideValidation.js.map +1 -0
  66. package/dist/analyzer/typeEvaluator/returnTypeInference.d.ts +33 -0
  67. package/dist/analyzer/typeEvaluator/returnTypeInference.js +226 -0
  68. package/dist/analyzer/typeEvaluator/returnTypeInference.js.map +1 -0
  69. package/dist/analyzer/typeEvaluator/specialFormCreation.d.ts +39 -0
  70. package/dist/analyzer/typeEvaluator/specialFormCreation.js +1728 -0
  71. package/dist/analyzer/typeEvaluator/specialFormCreation.js.map +1 -0
  72. package/dist/analyzer/typeEvaluator/tupleUnpacking.d.ts +2 -0
  73. package/dist/analyzer/typeEvaluator/tupleUnpacking.js +36 -0
  74. package/dist/analyzer/typeEvaluator/tupleUnpacking.js.map +1 -0
  75. package/dist/analyzer/typeEvaluator/typeCompatibility.d.ts +36 -0
  76. package/dist/analyzer/typeEvaluator/typeCompatibility.js +1320 -0
  77. package/dist/analyzer/typeEvaluator/typeCompatibility.js.map +1 -0
  78. package/dist/analyzer/typeEvaluator/typeGuardNarrowing.d.ts +186 -0
  79. package/dist/analyzer/typeEvaluator/typeGuardNarrowing.js +1683 -0
  80. package/dist/analyzer/typeEvaluator/typeGuardNarrowing.js.map +1 -0
  81. package/dist/analyzer/typeEvaluator/typeVarHandling.d.ts +48 -0
  82. package/dist/analyzer/typeEvaluator/typeVarHandling.js +756 -0
  83. package/dist/analyzer/typeEvaluator/typeVarHandling.js.map +1 -0
  84. package/dist/analyzer/typeEvaluator.d.ts +3 -31
  85. package/dist/analyzer/typeEvaluator.js +5033 -13761
  86. package/dist/analyzer/typeEvaluator.js.map +1 -1
  87. package/dist/analyzer/typeGuards.d.ts +2 -2
  88. package/dist/analyzer/typeGuards.js +212 -1567
  89. package/dist/analyzer/typeGuards.js.map +1 -1
  90. package/dist/analyzer/typeUtils.js +6 -2
  91. package/dist/analyzer/typeUtils.js.map +1 -1
  92. package/dist/analyzer/typedDicts.js +111 -0
  93. package/dist/analyzer/typedDicts.js.map +1 -1
  94. package/dist/browser/browserConnection.d.ts +12 -0
  95. package/dist/browser/browserConnection.js +23 -0
  96. package/dist/browser/browserConnection.js.map +1 -0
  97. package/dist/browser/browserFileSystem.d.ts +73 -0
  98. package/dist/browser/browserFileSystem.js +578 -0
  99. package/dist/browser/browserFileSystem.js.map +1 -0
  100. package/dist/browser/browserHost.d.ts +4 -0
  101. package/dist/browser/browserHost.js +10 -0
  102. package/dist/browser/browserHost.js.map +1 -0
  103. package/dist/browser/browserProcess.d.ts +1 -0
  104. package/dist/browser/browserProcess.js +17 -0
  105. package/dist/browser/browserProcess.js.map +1 -0
  106. package/dist/browser/browserServer.d.ts +8 -0
  107. package/dist/browser/browserServer.js +32 -0
  108. package/dist/browser/browserServer.js.map +1 -0
  109. package/dist/browser/cancellation/common.d.ts +10 -0
  110. package/dist/browser/cancellation/common.js +114 -0
  111. package/dist/browser/cancellation/common.js.map +1 -0
  112. package/dist/browser/cancellation/objectURLReceiverStrategy.d.ts +5 -0
  113. package/dist/browser/cancellation/objectURLReceiverStrategy.js +37 -0
  114. package/dist/browser/cancellation/objectURLReceiverStrategy.js.map +1 -0
  115. package/dist/browser/cancellation/objectURLSenderStrategy.d.ts +7 -0
  116. package/dist/browser/cancellation/objectURLSenderStrategy.js +32 -0
  117. package/dist/browser/cancellation/objectURLSenderStrategy.js.map +1 -0
  118. package/dist/browser/worker.d.ts +1 -0
  119. package/dist/browser/worker.js +33 -0
  120. package/dist/browser/worker.js.map +1 -0
  121. package/dist/pyrightServer.d.ts +34 -0
  122. package/dist/pyrightServer.js +239 -0
  123. package/dist/pyrightServer.js.map +1 -0
  124. package/dist/server.d.ts +3 -23
  125. package/dist/server.js +12 -232
  126. package/dist/server.js.map +1 -1
  127. package/dist/tests/benchmarks/typeInferenceComparison.d.ts +1 -0
  128. package/dist/tests/benchmarks/typeInferenceComparison.js +1235 -0
  129. package/dist/tests/benchmarks/typeInferenceComparison.js.map +1 -0
  130. package/dist/tests/benchmarks/typeInferencePyrightEntry.d.ts +1 -0
  131. package/dist/tests/benchmarks/typeInferencePyrightEntry.js +53 -0
  132. package/dist/tests/benchmarks/typeInferencePyrightEntry.js.map +1 -0
  133. package/dist/tests/browserCancellation.test.d.ts +1 -0
  134. package/dist/tests/browserCancellation.test.js +63 -0
  135. package/dist/tests/browserCancellation.test.js.map +1 -0
  136. package/dist/tests/browserServer.test.d.ts +1 -0
  137. package/dist/tests/browserServer.test.js +177 -0
  138. package/dist/tests/browserServer.test.js.map +1 -0
  139. package/dist/tests/constraintSolver.test.js +45 -0
  140. package/dist/tests/constraintSolver.test.js.map +1 -1
  141. package/dist/tests/mypyPrimerAnalysis.test.js +15 -1
  142. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
  143. package/dist/tests/typeCacheUtils.test.js +46 -0
  144. package/dist/tests/typeCacheUtils.test.js.map +1 -1
  145. package/dist/tests/typeEvaluator1.test.js +75 -0
  146. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  147. package/dist/tests/typeEvaluator3.test.js +4 -0
  148. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  149. package/dist/tests/typeEvaluator4.test.js +32 -0
  150. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  151. package/dist/tests/typeEvaluator7.test.js +394 -0
  152. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  153. package/dist/tests/typeUtils.test.js +28 -0
  154. package/dist/tests/typeUtils.test.js.map +1 -1
  155. package/dist/typeServer/stubGenerator.js +136 -3
  156. package/dist/typeServer/stubGenerator.js.map +1 -1
  157. package/dist/typeServer/typeServerConversionUtils.js +13 -0
  158. package/dist/typeServer/typeServerConversionUtils.js.map +1 -1
  159. package/package.json +3 -1
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ /*
3
+ * returnTypeInference.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ *
7
+ * Contextual return inference using evaluator-owned cache bindings and inference frames.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.createReturnTypeInference = createReturnTypeInference;
44
+ const debug_1 = require("../../common/debug");
45
+ const ParseTreeUtils = __importStar(require("../parseTreeUtils"));
46
+ const types_1 = require("../types");
47
+ const typeUtils_1 = require("../typeUtils");
48
+ // Infers contextual call-site returns; the evaluator owns the live caches and inference stack.
49
+ function createReturnTypeInference(context) {
50
+ const { codeFlowEngine, convertSpecialFormToRuntimeValue, getTypeOfExpression, getTypeOfFunction, inferFunctionReturnType, maxCallSiteReturnTypeCacheSize, maxReturnCallSiteTypeInferenceCodeFlowComplexity, maxReturnTypeInferenceArgCount, maxReturnTypeInferenceStackSize, nodeInfo, returnTypeInferenceContextStack, speculativeTypeTracker, stripLiteralValue, suppressDiagnostics, writeTypeCache, } = context;
51
+ function isNodeInReturnTypeInferenceContext(node) {
52
+ const stackSize = returnTypeInferenceContextStack.length;
53
+ if (stackSize === 0) {
54
+ return false;
55
+ }
56
+ const contextNode = returnTypeInferenceContextStack[stackSize - 1];
57
+ let curNode = node;
58
+ while (curNode) {
59
+ if (curNode === contextNode.functionNode) {
60
+ return true;
61
+ }
62
+ curNode = curNode.parent;
63
+ }
64
+ return false;
65
+ }
66
+ function getCodeFlowAnalyzerForReturnTypeInferenceContext() {
67
+ const stackSize = returnTypeInferenceContextStack.length;
68
+ (0, debug_1.assert)(stackSize > 0);
69
+ const contextNode = returnTypeInferenceContextStack[stackSize - 1];
70
+ return contextNode.codeFlowAnalyzer;
71
+ }
72
+ function inferReturnTypeForCallSite(type, callSiteInfo) {
73
+ const args = callSiteInfo.args;
74
+ let contextualReturnType;
75
+ if (!type.shared.declaration) {
76
+ return undefined;
77
+ }
78
+ const functionNode = type.shared.declaration.node;
79
+ const codeFlowComplexity = nodeInfo.getCodeFlowComplexity(functionNode);
80
+ if (codeFlowComplexity >= maxReturnCallSiteTypeInferenceCodeFlowComplexity) {
81
+ return undefined;
82
+ }
83
+ // If an arg hasn't been matched to a specific named parameter,
84
+ // it's an unpacked value that corresponds to multiple parameters.
85
+ // That's an edge case that we don't handle here.
86
+ if (args.some((arg) => !arg.paramName)) {
87
+ return undefined;
88
+ }
89
+ // Detect recurrence. If a function invokes itself either directly
90
+ // or indirectly, we won't attempt to infer contextual return
91
+ // types any further.
92
+ if (returnTypeInferenceContextStack.some((context) => context.functionNode === functionNode)) {
93
+ return undefined;
94
+ }
95
+ const functionTypeResult = getTypeOfFunction(functionNode);
96
+ if (!functionTypeResult) {
97
+ return undefined;
98
+ }
99
+ // Very complex functions with many arguments can take a long time to analyze,
100
+ // so we'll use a heuristic and avoiding this inference technique for any
101
+ // call site that involves too many arguments.
102
+ if (args.length > maxReturnTypeInferenceArgCount) {
103
+ return undefined;
104
+ }
105
+ // Don't explore arbitrarily deep in the call graph.
106
+ if (returnTypeInferenceContextStack.length >= maxReturnTypeInferenceStackSize) {
107
+ return undefined;
108
+ }
109
+ const paramTypes = [];
110
+ let isResultFromCache = false;
111
+ // If the call is located in a loop, don't use literal argument types
112
+ // for the same reason we don't do literal math in loops.
113
+ const stripLiteralArgTypes = ParseTreeUtils.isWithinLoop(callSiteInfo.errorNode);
114
+ // Suppress diagnostics because we don't want to generate errors.
115
+ suppressDiagnostics(functionNode, () => {
116
+ // Argument expressions belong to the caller's contextual cache.
117
+ const argTypes = functionNode.d.params.map((param) => {
118
+ const arg = args.find((arg) => param.d.name?.d.value === arg.paramName);
119
+ return arg?.argument.valueExpression
120
+ ? getTypeOfExpression(arg.argument.valueExpression).type
121
+ : undefined;
122
+ });
123
+ // Allocate a new temporary type cache for the context of just
124
+ // this function so we can analyze it separately without polluting
125
+ // the main type cache.
126
+ const prevTypeCache = context.returnTypeInferenceTypeCache;
127
+ const prevTypeFormTypeCache = context.returnTypeInferenceTypeFormTypeCache;
128
+ returnTypeInferenceContextStack.push({
129
+ functionNode,
130
+ codeFlowAnalyzer: codeFlowEngine.createCodeFlowAnalyzer(),
131
+ });
132
+ try {
133
+ context.returnTypeInferenceTypeCache = new Map();
134
+ context.returnTypeInferenceTypeFormTypeCache = new Map();
135
+ let allArgTypesAreUnknown = true;
136
+ functionNode.d.params.forEach((param, index) => {
137
+ if (param.d.name) {
138
+ let paramType = argTypes[index];
139
+ if (paramType) {
140
+ if (!(0, types_1.isUnknown)(paramType)) {
141
+ allArgTypesAreUnknown = false;
142
+ }
143
+ }
144
+ else if (param.d.defaultValue) {
145
+ paramType = getTypeOfExpression(param.d.defaultValue).type;
146
+ if (!(0, types_1.isUnknown)(paramType)) {
147
+ allArgTypesAreUnknown = false;
148
+ }
149
+ }
150
+ else if (index === 0) {
151
+ // If this is an instance or class method, use the implied
152
+ // parameter type for the "self" or "cls" parameter.
153
+ if (types_1.FunctionType.isInstanceMethod(functionTypeResult.functionType) ||
154
+ types_1.FunctionType.isClassMethod(functionTypeResult.functionType)) {
155
+ if (functionTypeResult.functionType.shared.parameters.length > 0) {
156
+ if (functionNode.d.params[0].d.name) {
157
+ paramType = types_1.FunctionType.getParamType(functionTypeResult.functionType, 0);
158
+ }
159
+ }
160
+ }
161
+ }
162
+ if (!paramType) {
163
+ paramType = types_1.UnknownType.create();
164
+ }
165
+ if (stripLiteralArgTypes) {
166
+ paramType = (0, typeUtils_1.stripTypeForm)(convertSpecialFormToRuntimeValue(stripLiteralValue(paramType), 0 /* EvalFlags.None */,
167
+ /* convertModule */ true));
168
+ }
169
+ paramTypes.push(paramType);
170
+ writeTypeCache(param.d.name, { type: paramType }, 0 /* EvalFlags.None */);
171
+ }
172
+ });
173
+ // Don't bother trying to determine the contextual return
174
+ // type if none of the argument types are known.
175
+ if (!allArgTypesAreUnknown) {
176
+ // See if the return type is already cached. If so, skip the
177
+ // inference step, which is potentially very expensive.
178
+ const cacheEntry = functionTypeResult.functionType.priv.callSiteReturnTypeCache?.find((entry) => {
179
+ return (entry.paramTypes.length === paramTypes.length &&
180
+ entry.paramTypes.every((t, i) => (0, types_1.isTypeSame)(t, paramTypes[i])));
181
+ });
182
+ if (cacheEntry) {
183
+ contextualReturnType = cacheEntry.returnType;
184
+ isResultFromCache = true;
185
+ }
186
+ else {
187
+ // Speculative results also depend on these temporary parameter bindings,
188
+ // not just the expected types used during overload resolution.
189
+ contextualReturnType = speculativeTypeTracker.useSpeculativeTypeCacheIsolation(() => inferFunctionReturnType(functionNode, types_1.FunctionType.isAbstractMethod(type), callSiteInfo?.errorNode))?.type;
190
+ }
191
+ }
192
+ }
193
+ finally {
194
+ returnTypeInferenceContextStack.pop();
195
+ context.returnTypeInferenceTypeCache = prevTypeCache;
196
+ context.returnTypeInferenceTypeFormTypeCache = prevTypeFormTypeCache;
197
+ }
198
+ });
199
+ if (contextualReturnType) {
200
+ contextualReturnType = (0, types_1.removeUnbound)(contextualReturnType);
201
+ if (!isResultFromCache) {
202
+ // Cache the resulting type.
203
+ if (!functionTypeResult.functionType.priv.callSiteReturnTypeCache) {
204
+ functionTypeResult.functionType.priv.callSiteReturnTypeCache = [];
205
+ }
206
+ if (functionTypeResult.functionType.priv.callSiteReturnTypeCache.length >=
207
+ maxCallSiteReturnTypeCacheSize) {
208
+ functionTypeResult.functionType.priv.callSiteReturnTypeCache =
209
+ functionTypeResult.functionType.priv.callSiteReturnTypeCache.slice(1);
210
+ }
211
+ functionTypeResult.functionType.priv.callSiteReturnTypeCache.push({
212
+ paramTypes,
213
+ returnType: contextualReturnType,
214
+ });
215
+ }
216
+ return contextualReturnType;
217
+ }
218
+ return undefined;
219
+ }
220
+ return {
221
+ isNodeInReturnTypeInferenceContext,
222
+ getCodeFlowAnalyzerForReturnTypeInferenceContext,
223
+ inferReturnTypeForCallSite,
224
+ };
225
+ }
226
+ //# sourceMappingURL=returnTypeInference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"returnTypeInference.js","sourceRoot":"","sources":["../../../../../../src/analyzer/typeEvaluator/returnTypeInference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { ClassNode, ExpressionNode, IndexNode, ParseNode, TypeParameterNode } from '../../parser/parseNodes';
2
+ import * as AnalyzerNodeInfo from '../analyzerNodeInfo';
3
+ import { ClassTypeResult, EvalFlags, ExpectedTypeOptions, PrefetchedTypes, TypeEvaluator, TypeResult, TypeResultWithNode, ValidateTypeArgsOptions } from '../typeEvaluatorTypes';
4
+ import { ClassType, Type, TypeCondition, TypeVarScopeId, TypeVarType, UnknownType } from '../types';
5
+ interface Context {
6
+ readonly addDiagnostic: TypeEvaluator['addDiagnostic'];
7
+ readonly applyUnpackToTupleLike: (type: Type) => Type | undefined;
8
+ readonly getScopeIdForNode: (node: ParseNode) => string;
9
+ readonly getTypeOfClass: (node: ClassNode) => ClassTypeResult | undefined;
10
+ readonly getTupleClassType: () => ClassType | undefined;
11
+ readonly getTypeVarScopesForNode: (node: ParseNode) => string[];
12
+ readonly getTypingType: (node: ParseNode, symbolName: string) => Type | undefined;
13
+ readonly nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoAccessor;
14
+ readonly prefetched: Partial<PrefetchedTypes> | undefined;
15
+ readonly validateTypeMetadata: (errorNode: ExpressionNode, baseType: Type, metaArg: TypeResultWithNode) => boolean;
16
+ readonly assignType: TypeEvaluator['assignType'];
17
+ readonly convertTypeArgToInstance: (type: Type, flags: EvalFlags) => Type;
18
+ readonly getTypeOfAnnotation: (node: ExpressionNode, options?: ExpectedTypeOptions) => Type;
19
+ readonly makeTopLevelTypeVarsConcrete: (type: Type, makeParamSpecsConcrete?: boolean, conditionFilter?: TypeCondition[]) => Type;
20
+ readonly printType: TypeEvaluator['printType'];
21
+ readonly getBuiltInType: TypeEvaluator['getBuiltInType'];
22
+ readonly solveAndApplyConstraints: TypeEvaluator['solveAndApplyConstraints'];
23
+ readonly getTypeOfExpression: TypeEvaluator['getTypeOfExpression'];
24
+ }
25
+ export declare function createSpecialFormCreation(context: Context): {
26
+ reportUseOfTypeCheckOnly: (type: Type, node: ExpressionNode) => void;
27
+ enforceClassTypeVarScope: (node: ExpressionNode, type: TypeVarType) => boolean;
28
+ adjustTypeArgsForTypeVarTuple: (typeArgs: TypeResultWithNode[], typeParams: TypeVarType[], errorNode: ExpressionNode) => TypeResultWithNode[];
29
+ validateTypeArg: (argResult: TypeResultWithNode, options?: ValidateTypeArgsOptions) => boolean;
30
+ createTypeFormType: (classType: ClassType, errorNode: ExpressionNode, typeArgs: TypeResultWithNode[] | undefined) => Type;
31
+ transformTypeForTypeAlias: (type: Type, errorNode: ExpressionNode, typeAliasPlaceholder: TypeVarType, isPep695TypeVarType: boolean, typeParamNodes?: TypeParameterNode[]) => Type;
32
+ validateTypeParamDefault: (errorNode: ExpressionNode, typeParam: TypeVarType, otherLiveTypeParams: TypeVarType[], scopeId: TypeVarScopeId) => void;
33
+ verifyGenericTypeParams: (errorNode: ExpressionNode, typeVars: TypeVarType[], genericTypeVars: TypeVarType[]) => void;
34
+ transformTypeArgsForParamSpec: (typeParams: TypeVarType[], typeArgs: TypeResultWithNode[] | undefined, errorNode: ExpressionNode) => TypeResultWithNode[] | undefined;
35
+ createSpecializedClassType: (classType: ClassType, typeArgs: TypeResultWithNode[] | undefined, flags: EvalFlags, errorNode: ExpressionNode) => TypeResult;
36
+ createSelfType: (classType: ClassType, errorNode: ParseNode, typeArgs: TypeResultWithNode[] | undefined, flags: EvalFlags) => UnknownType | TypeVarType;
37
+ createLiteralType: (classType: ClassType, node: IndexNode, flags: EvalFlags) => Type;
38
+ };
39
+ export {};