@zzzen/pyright-internal 1.2.0-dev.20260920 → 1.2.0-dev.20260927
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyzer/checker.d.ts +2 -1
- package/dist/analyzer/checker.js +15 -1
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +9 -3
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/operations.js +1 -1
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/overloadResult.d.ts +15 -0
- package/dist/analyzer/overloadResult.js +233 -0
- package/dist/analyzer/overloadResult.js.map +1 -0
- package/dist/analyzer/overloadResultAdmission.d.ts +20 -0
- package/dist/analyzer/overloadResultAdmission.js +448 -0
- package/dist/analyzer/overloadResultAdmission.js.map +1 -0
- package/dist/analyzer/overloadResultController.d.ts +227 -0
- package/dist/analyzer/overloadResultController.js +904 -0
- package/dist/analyzer/overloadResultController.js.map +1 -0
- package/dist/analyzer/overloadResultSelector.d.ts +24 -0
- package/dist/analyzer/overloadResultSelector.js +131 -0
- package/dist/analyzer/overloadResultSelector.js.map +1 -0
- package/dist/analyzer/parseTreeUtils.d.ts +1 -0
- package/dist/analyzer/parseTreeUtils.js +4 -0
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/program.d.ts +13 -2
- package/dist/analyzer/program.js +98 -46
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/protocols.d.ts +1 -0
- package/dist/analyzer/protocols.js +286 -6
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +6 -2
- package/dist/analyzer/sourceFile.js +9 -3
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/tracePrinter.js +4 -0
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/typeCacheUtils.d.ts +4 -0
- package/dist/analyzer/typeCacheUtils.js +36 -0
- package/dist/analyzer/typeCacheUtils.js.map +1 -1
- package/dist/analyzer/typeComplexity.js +2 -0
- package/dist/analyzer/typeComplexity.js.map +1 -1
- package/dist/analyzer/typeEvaluator.d.ts +10 -1
- package/dist/analyzer/typeEvaluator.js +351 -11
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +30 -1
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +1 -1
- package/dist/analyzer/typePrinter.js +8 -0
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +1 -1
- package/dist/analyzer/typeUtils.js +29 -26
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeWalker.d.ts +2 -1
- package/dist/analyzer/typeWalker.js +12 -0
- package/dist/analyzer/typeWalker.js.map +1 -1
- package/dist/analyzer/typedDicts.js +1 -0
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +16 -2
- package/dist/analyzer/types.js +94 -2
- package/dist/analyzer/types.js.map +1 -1
- package/dist/common/configOptions.d.ts +1 -0
- package/dist/common/configOptions.js +2 -0
- package/dist/common/configOptions.js.map +1 -1
- package/dist/languageServerBase.js +2 -2
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +3 -2
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.js +4 -1
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/tests/config.test.js +48 -0
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js +10 -6
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js.map +1 -1
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js +16 -10
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.js +10 -9
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/languageServer.test.js +129 -0
- package/dist/tests/languageServer.test.js.map +1 -1
- package/dist/tests/overloadResult.test.d.ts +1 -0
- package/dist/tests/overloadResult.test.js +182 -0
- package/dist/tests/overloadResult.test.js.map +1 -0
- package/dist/tests/overloadResultController.test.d.ts +1 -0
- package/dist/tests/overloadResultController.test.js +2146 -0
- package/dist/tests/overloadResultController.test.js.map +1 -0
- package/dist/tests/protocolRequirement.test.d.ts +1 -0
- package/dist/tests/protocolRequirement.test.js +122 -0
- package/dist/tests/protocolRequirement.test.js.map +1 -0
- package/dist/tests/protocolRequirementAdversarial.test.d.ts +1 -0
- package/dist/tests/protocolRequirementAdversarial.test.js +92 -0
- package/dist/tests/protocolRequirementAdversarial.test.js.map +1 -0
- package/dist/tests/protocolRequirementBoundary.test.d.ts +1 -0
- package/dist/tests/protocolRequirementBoundary.test.js +119 -0
- package/dist/tests/protocolRequirementBoundary.test.js.map +1 -0
- package/dist/tests/protocolRequirementComplexity.test.d.ts +1 -0
- package/dist/tests/protocolRequirementComplexity.test.js +159 -0
- package/dist/tests/protocolRequirementComplexity.test.js.map +1 -0
- package/dist/tests/protocolRequirementCycles.test.d.ts +1 -0
- package/dist/tests/protocolRequirementCycles.test.js +160 -0
- package/dist/tests/protocolRequirementCycles.test.js.map +1 -0
- package/dist/tests/protocolRequirementGeneral.test.d.ts +1 -0
- package/dist/tests/protocolRequirementGeneral.test.js +120 -0
- package/dist/tests/protocolRequirementGeneral.test.js.map +1 -0
- package/dist/tests/protocolRequirementInstances.test.d.ts +1 -0
- package/dist/tests/protocolRequirementInstances.test.js +164 -0
- package/dist/tests/protocolRequirementInstances.test.js.map +1 -0
- package/dist/tests/protocolRequirementListStub.test.d.ts +1 -0
- package/dist/tests/protocolRequirementListStub.test.js +244 -0
- package/dist/tests/protocolRequirementListStub.test.js.map +1 -0
- package/dist/tests/protocolRequirementPopulated.test.d.ts +1 -0
- package/dist/tests/protocolRequirementPopulated.test.js +172 -0
- package/dist/tests/protocolRequirementPopulated.test.js.map +1 -0
- package/dist/tests/protocolRequirementRecursive.test.d.ts +1 -0
- package/dist/tests/protocolRequirementRecursive.test.js +118 -0
- package/dist/tests/protocolRequirementRecursive.test.js.map +1 -0
- package/dist/tests/protocolRequirementSpeculative.test.d.ts +1 -0
- package/dist/tests/protocolRequirementSpeculative.test.js +200 -0
- package/dist/tests/protocolRequirementSpeculative.test.js.map +1 -0
- package/dist/tests/protocolRequirementState.test.d.ts +1 -0
- package/dist/tests/protocolRequirementState.test.js +161 -0
- package/dist/tests/protocolRequirementState.test.js.map +1 -0
- package/dist/tests/testState.test.js +64 -0
- package/dist/tests/testState.test.js.map +1 -1
- package/dist/tests/testUtils.d.ts +6 -1
- package/dist/tests/testUtils.js +11 -6
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/typeCacheIsolation.test.d.ts +1 -0
- package/dist/tests/typeCacheIsolation.test.js +109 -0
- package/dist/tests/typeCacheIsolation.test.js.map +1 -0
- package/dist/tests/typeCacheUtils.test.js +59 -0
- package/dist/tests/typeCacheUtils.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +5 -1
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +6 -2
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +25 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/typeEvaluator6.test.js +7 -23
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +237 -2
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typeServer/typeServer.inProc.test.js +86 -0
- package/dist/tests/typeServer/typeServer.inProc.test.js.map +1 -1
- package/dist/tests/typeUtils.test.js +36 -0
- package/dist/tests/typeUtils.test.js.map +1 -1
- package/dist/trace/nativeAdapter.js +1 -5
- package/dist/trace/nativeAdapter.js.map +1 -1
- package/dist/typeServer/protocol/typeServerProtocol.d.ts +8 -2
- package/dist/typeServer/protocol/typeServerProtocol.js +1 -0
- package/dist/typeServer/protocol/typeServerProtocol.js.map +1 -1
- package/dist/typeServer/typeServerConversionUtils.js +9 -0
- package/dist/typeServer/typeServerConversionUtils.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { Diagnostic } from '../common/diagnostic';
|
|
2
|
+
import { TextRangeDiagnosticSink } from '../common/diagnosticSink';
|
|
3
|
+
import { AssignmentNode, CallNode, ExpressionNode, FunctionNode, ModuleNode, NameNode, ParseNode } from '../parser/parseNodes';
|
|
4
|
+
import { AnalyzerNodeInfoReader } from './analyzerNodeInfo';
|
|
5
|
+
import { LocalOverloadAdmission } from './overloadResultAdmission';
|
|
6
|
+
import { AutomaticOverloadSelection } from './overloadResultSelector';
|
|
7
|
+
import { EvalFlags, EvaluationCacheIsolation, EvaluationOperationController, EvaluationOperationRequest, TypeEvaluator, TypeResult } from './typeEvaluatorTypes';
|
|
8
|
+
import { Type, TypeCategory } from './types';
|
|
9
|
+
import { InferenceContext } from './typeUtils';
|
|
10
|
+
export interface OverloadResultLimits {
|
|
11
|
+
nodes: number;
|
|
12
|
+
records: number;
|
|
13
|
+
rootNodes: number;
|
|
14
|
+
graphUnits: number;
|
|
15
|
+
candidates: number;
|
|
16
|
+
calls: number;
|
|
17
|
+
proofUnits: number;
|
|
18
|
+
}
|
|
19
|
+
export interface FixedOverloadResultSeed {
|
|
20
|
+
node: CallNode;
|
|
21
|
+
candidates: (evaluator: TypeEvaluator) => readonly Type[];
|
|
22
|
+
uncertainty: TypeCategory.Any | TypeCategory.Unknown;
|
|
23
|
+
}
|
|
24
|
+
export interface ExperimentalOverloadResultOptions {
|
|
25
|
+
seeds?: (module: ModuleNode) => readonly FixedOverloadResultSeed[];
|
|
26
|
+
automatic?: boolean;
|
|
27
|
+
limits?: Partial<OverloadResultLimits>;
|
|
28
|
+
producerCalls?: number;
|
|
29
|
+
consumerCalls?: number;
|
|
30
|
+
checkerHandoff?: boolean;
|
|
31
|
+
observe?: (event: OverloadResultEvent) => void;
|
|
32
|
+
}
|
|
33
|
+
export type OverloadResultEvent = {
|
|
34
|
+
kind: 'activationProbe';
|
|
35
|
+
node: CallNode;
|
|
36
|
+
selection: AutomaticOverloadSelection;
|
|
37
|
+
} | {
|
|
38
|
+
kind: 'selection';
|
|
39
|
+
node: CallNode;
|
|
40
|
+
selection: AutomaticOverloadSelection;
|
|
41
|
+
} | {
|
|
42
|
+
kind: 'scan';
|
|
43
|
+
module: ModuleNode;
|
|
44
|
+
nodes: number;
|
|
45
|
+
seeds: number;
|
|
46
|
+
cutoff: boolean;
|
|
47
|
+
} | {
|
|
48
|
+
kind: 'admission';
|
|
49
|
+
module: ModuleNode;
|
|
50
|
+
admission: LocalOverloadAdmission;
|
|
51
|
+
} | {
|
|
52
|
+
kind: 'enter';
|
|
53
|
+
module: ModuleNode;
|
|
54
|
+
root: ParseNode;
|
|
55
|
+
mode: OperationMode;
|
|
56
|
+
} | {
|
|
57
|
+
kind: 'trial';
|
|
58
|
+
root: ParseNode;
|
|
59
|
+
mode: OperationMode;
|
|
60
|
+
result?: TypeResult;
|
|
61
|
+
diagnostics: readonly Diagnostic[];
|
|
62
|
+
failed: boolean;
|
|
63
|
+
retained: boolean;
|
|
64
|
+
nestedSpeculative: boolean;
|
|
65
|
+
exception: boolean;
|
|
66
|
+
} | {
|
|
67
|
+
kind: 'value';
|
|
68
|
+
root: ParseNode;
|
|
69
|
+
canonical: TypeResult;
|
|
70
|
+
baseline: TypeResult;
|
|
71
|
+
cutoff: boolean;
|
|
72
|
+
} | {
|
|
73
|
+
kind: 'project';
|
|
74
|
+
node: ExpressionNode;
|
|
75
|
+
source: Type;
|
|
76
|
+
result: TypeResult;
|
|
77
|
+
mode: OperationMode;
|
|
78
|
+
} | {
|
|
79
|
+
kind: 'publish';
|
|
80
|
+
root: ParseNode;
|
|
81
|
+
diagnostics: readonly Diagnostic[];
|
|
82
|
+
} | {
|
|
83
|
+
kind: 'retire';
|
|
84
|
+
module: ModuleNode;
|
|
85
|
+
outcomes: number;
|
|
86
|
+
} | {
|
|
87
|
+
kind: 'context';
|
|
88
|
+
node: ExpressionNode;
|
|
89
|
+
flags: EvalFlags;
|
|
90
|
+
context?: InferenceContext;
|
|
91
|
+
result: TypeResult;
|
|
92
|
+
} | {
|
|
93
|
+
kind: 'beforeCall';
|
|
94
|
+
node: CallNode;
|
|
95
|
+
mode: OperationMode;
|
|
96
|
+
seen: ReadonlyMap<ParseNode, TypeResult>;
|
|
97
|
+
};
|
|
98
|
+
export interface LocalOverloadOperation {
|
|
99
|
+
root: ParseNode;
|
|
100
|
+
statement: AssignmentNode | ExpressionNode;
|
|
101
|
+
expression: ExpressionNode;
|
|
102
|
+
assignment?: AssignmentNode;
|
|
103
|
+
target?: NameNode;
|
|
104
|
+
annotated: boolean;
|
|
105
|
+
fn: FunctionNode;
|
|
106
|
+
nodes: readonly ParseNode[];
|
|
107
|
+
ids: ReadonlySet<number>;
|
|
108
|
+
valueNodes: ReadonlySet<ParseNode>;
|
|
109
|
+
seed?: FixedOverloadResultSeed & {
|
|
110
|
+
automatic?: boolean;
|
|
111
|
+
};
|
|
112
|
+
admitted: boolean;
|
|
113
|
+
reader: boolean;
|
|
114
|
+
flags?: EvalFlags;
|
|
115
|
+
context?: InferenceContext;
|
|
116
|
+
}
|
|
117
|
+
type OperationMode = 'baseline' | 'candidate' | 'reader' | 'check-baseline' | 'check-candidate' | 'materialize-baseline' | 'materialize-witness' | 'context';
|
|
118
|
+
export interface OverloadResultWork {
|
|
119
|
+
candidateCalls: number;
|
|
120
|
+
candidateTrials: number;
|
|
121
|
+
ordinaryCalls: number;
|
|
122
|
+
ordinaryRequests: number;
|
|
123
|
+
projectionSetup: number;
|
|
124
|
+
contextualRequests: number;
|
|
125
|
+
retryReservations: number;
|
|
126
|
+
checkerHandoffs: number;
|
|
127
|
+
}
|
|
128
|
+
export declare class ExperimentalOverloadResultController implements EvaluationOperationController {
|
|
129
|
+
private _options;
|
|
130
|
+
private _evaluator;
|
|
131
|
+
readonly roots: Map<ParseNode, ReadonlySet<number>>;
|
|
132
|
+
private readonly _limits;
|
|
133
|
+
private readonly _info;
|
|
134
|
+
private readonly _generations;
|
|
135
|
+
private readonly _emptyModules;
|
|
136
|
+
private readonly _expiredModules;
|
|
137
|
+
private _active?;
|
|
138
|
+
private _disposed;
|
|
139
|
+
private _activationBoundary;
|
|
140
|
+
private _activationCanRestart;
|
|
141
|
+
private _canActivate?;
|
|
142
|
+
private _flushActivation?;
|
|
143
|
+
private _discovering;
|
|
144
|
+
private readonly _activationChecked;
|
|
145
|
+
private readonly _activated;
|
|
146
|
+
private readonly _pendingActivation;
|
|
147
|
+
private _cacheIsolation?;
|
|
148
|
+
private _select?;
|
|
149
|
+
private _captureQueryCache?;
|
|
150
|
+
private _checkerHandoff?;
|
|
151
|
+
private _automaticWork;
|
|
152
|
+
constructor(_options: ExperimentalOverloadResultOptions, _evaluator: () => TypeEvaluator, reader: AnalyzerNodeInfoReader);
|
|
153
|
+
get isAutomatic(): boolean;
|
|
154
|
+
get hasPendingActivation(): boolean;
|
|
155
|
+
installCacheIsolation: (isolation: EvaluationCacheIsolation) => void;
|
|
156
|
+
installSelector: (select: (node: CallNode, limit: number, proofUnits: number) => AutomaticOverloadSelection) => void;
|
|
157
|
+
installActivationBoundary: (canActivate: () => boolean, flush: () => void) => void;
|
|
158
|
+
installQueryCache: (capture: (root: ParseNode, node: NameNode) => (() => boolean) | undefined) => void;
|
|
159
|
+
installCheckerHandoff: (handoff: (root: ParseNode, expression: ExpressionNode, result: TypeResult, callback: () => void) => boolean) => void;
|
|
160
|
+
getAutomaticStats(): {
|
|
161
|
+
reasons: {
|
|
162
|
+
[k: string]: number;
|
|
163
|
+
};
|
|
164
|
+
modules: number;
|
|
165
|
+
nodes: number;
|
|
166
|
+
scanCutoffs: number;
|
|
167
|
+
seeds: number;
|
|
168
|
+
graphAdmitted: number;
|
|
169
|
+
selections: number;
|
|
170
|
+
selected: number;
|
|
171
|
+
proofUnits: number;
|
|
172
|
+
activationArgumentChecks: number;
|
|
173
|
+
activationProbes: number;
|
|
174
|
+
activationProofUnits: number;
|
|
175
|
+
activations: number;
|
|
176
|
+
};
|
|
177
|
+
getDiagnosticSink(node: ParseNode): TextRangeDiagnosticSink | undefined;
|
|
178
|
+
needsActivationBoundary(): boolean | undefined;
|
|
179
|
+
runWithActivation<T>(callback: () => T): T;
|
|
180
|
+
considerActivation(node: CallNode, args: readonly {
|
|
181
|
+
argType: Type;
|
|
182
|
+
}[]): void;
|
|
183
|
+
finishActivation(): void;
|
|
184
|
+
dispose: () => void;
|
|
185
|
+
dispatch: (_node: ExpressionNode, _flags: EvalFlags, _context?: InferenceContext) => TypeResult | undefined;
|
|
186
|
+
route: (request: EvaluationOperationRequest) => {
|
|
187
|
+
result?: TypeResult;
|
|
188
|
+
} | undefined;
|
|
189
|
+
project: (node: ExpressionNode, result: TypeResult) => TypeResult;
|
|
190
|
+
beforeCall: (node: CallNode) => void;
|
|
191
|
+
check: (module: ModuleNode) => {
|
|
192
|
+
walk: (node: ParseNode, callback: () => void) => void;
|
|
193
|
+
dispose: () => void;
|
|
194
|
+
} | undefined;
|
|
195
|
+
evict(module: ModuleNode): void;
|
|
196
|
+
getStats(module: ModuleNode): {
|
|
197
|
+
records: number;
|
|
198
|
+
outcomes: number;
|
|
199
|
+
variants: number;
|
|
200
|
+
slots: number;
|
|
201
|
+
candidateCallCeiling: number;
|
|
202
|
+
interruptedSlots: number;
|
|
203
|
+
candidateCalls: number;
|
|
204
|
+
candidateTrials: number;
|
|
205
|
+
ordinaryCalls: number;
|
|
206
|
+
ordinaryRequests: number;
|
|
207
|
+
projectionSetup: number;
|
|
208
|
+
contextualRequests: number;
|
|
209
|
+
retryReservations: number;
|
|
210
|
+
checkerHandoffs: number;
|
|
211
|
+
} | undefined;
|
|
212
|
+
private _emit;
|
|
213
|
+
private _retire;
|
|
214
|
+
private _ensure;
|
|
215
|
+
private _isEnabled;
|
|
216
|
+
private _reserveGeneration;
|
|
217
|
+
private _key;
|
|
218
|
+
private _definition;
|
|
219
|
+
private _inputs;
|
|
220
|
+
private _trial;
|
|
221
|
+
private _build;
|
|
222
|
+
private _variant;
|
|
223
|
+
private _expressionRecord;
|
|
224
|
+
private _queryOutcome;
|
|
225
|
+
private _query;
|
|
226
|
+
}
|
|
227
|
+
export {};
|