@zzzen/pyright-internal 1.2.0-dev.20240331 → 1.2.0-dev.20240407
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/analyzerFileInfo.d.ts +0 -1
- package/dist/analyzer/analyzerFileInfo.js.map +1 -1
- package/dist/analyzer/binder.js +11 -7
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/cacheManager.d.ts +11 -0
- package/dist/analyzer/cacheManager.js +59 -2
- package/dist/analyzer/cacheManager.js.map +1 -1
- package/dist/analyzer/checker.d.ts +2 -2
- package/dist/analyzer/checker.js +8 -8
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +14 -2
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowTypes.d.ts +1 -0
- package/dist/analyzer/codeFlowTypes.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +20 -3
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +2 -2
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/dataClasses.js +5 -6
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/enums.js +7 -3
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/functionTransform.js +1 -1
- package/dist/analyzer/functionTransform.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +6 -6
- package/dist/analyzer/importStatementUtils.js +42 -42
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.js +1 -1
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +6 -6
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +6 -5
- package/dist/analyzer/parseTreeUtils.js +12 -13
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +1 -1
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +4 -3
- package/dist/analyzer/program.js +21 -12
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +10 -10
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +5 -5
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.d.ts +3 -2
- package/dist/analyzer/service.js +7 -4
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +5 -3
- package/dist/analyzer/sourceFile.js +108 -71
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.js +1 -1
- package/dist/analyzer/sourceMapper.js +6 -6
- package/dist/analyzer/symbol.d.ts +4 -1
- package/dist/analyzer/symbol.js +10 -0
- package/dist/analyzer/symbol.js.map +1 -1
- package/dist/analyzer/symbolUtils.d.ts +1 -0
- package/dist/analyzer/symbolUtils.js +11 -1
- package/dist/analyzer/symbolUtils.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.js +1 -1
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +106 -49
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeGuards.js +2 -2
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeStubWriter.js +1 -1
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.js +13 -16
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +29 -20
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +5 -1
- package/dist/analyzer/types.js +20 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysis.d.ts +1 -0
- package/dist/backgroundAnalysis.js +5 -1
- package/dist/backgroundAnalysis.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +2 -1
- package/dist/backgroundAnalysisBase.js +5 -0
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.d.ts +1 -0
- package/dist/backgroundThreadBase.js +5 -1
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +4 -4
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/extensibility.d.ts +3 -2
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/serviceProviderExtensions.d.ts +2 -0
- package/dist/common/serviceProviderExtensions.js +4 -0
- package/dist/common/serviceProviderExtensions.js.map +1 -1
- package/dist/common/textEditTracker.d.ts +5 -5
- package/dist/common/textEditTracker.js +33 -33
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/common/workspaceEditUtils.js +2 -2
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +4 -4
- package/dist/languageServerBase.js +1 -1
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/autoImporter.d.ts +3 -3
- package/dist/languageService/autoImporter.js +2 -1
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +2 -2
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +2 -2
- package/dist/languageService/completionProvider.js +8 -9
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.js +1 -1
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentHighlightProvider.js +2 -2
- package/dist/languageService/documentHighlightProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.js +1 -1
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +1 -1
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.js +2 -2
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importSorter.d.ts +2 -2
- package/dist/languageService/importSorter.js +1 -1
- package/dist/languageService/importSorter.js.map +1 -1
- package/dist/languageService/referencesProvider.d.ts +4 -4
- package/dist/languageService/referencesProvider.js +2 -2
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +2 -2
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.d.ts +2 -2
- package/dist/languageService/symbolIndexer.js +1 -1
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.js +1 -1
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +3 -0
- package/dist/localization/localize.js +1 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +1 -0
- package/dist/nodeMain.d.ts +1 -1
- package/dist/nodeMain.js +2 -2
- package/dist/nodeMain.js.map +1 -1
- package/dist/parser/parser.d.ts +7 -4
- package/dist/parser/parser.js +7 -5
- package/dist/parser/parser.js.map +1 -1
- package/dist/server.d.ts +3 -3
- package/dist/server.js +3 -3
- package/dist/server.js.map +1 -1
- package/dist/tests/cacheManager.test.js +35 -0
- package/dist/tests/cacheManager.test.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +7 -7
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +4 -4
- package/dist/tests/harness/fourslash/testState.js +6 -5
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +4 -4
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/ipythonMode.test.js +1 -1
- package/dist/tests/ipythonMode.test.js.map +1 -1
- package/dist/tests/lsp/languageServer.js +1 -1
- package/dist/tests/lsp/languageServer.js.map +1 -1
- package/dist/tests/lsp/languageServerTestUtils.d.ts +1 -1
- package/dist/tests/parser.test.js +14 -14
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/signatureHelp.test.js +1 -1
- package/dist/tests/signatureHelp.test.js.map +1 -1
- package/dist/tests/testStateUtils.js +5 -3
- package/dist/tests/testStateUtils.js.map +1 -1
- package/dist/tests/testUtils.d.ts +4 -8
- package/dist/tests/testUtils.js +4 -7
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/textEditUtil.test.js +3 -3
- package/dist/tests/textEditUtil.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +1 -1
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +10 -4
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/package.json +1 -1
@@ -13,14 +13,42 @@ exports.CacheManager = void 0;
|
|
13
13
|
const debug_1 = require("../common/debug");
|
14
14
|
const memUtils_1 = require("../common/memUtils");
|
15
15
|
class CacheManager {
|
16
|
-
constructor() {
|
16
|
+
constructor(_maxWorkers = 0) {
|
17
|
+
this._maxWorkers = _maxWorkers;
|
17
18
|
this._pausedCount = 0;
|
18
19
|
this._cacheOwners = [];
|
20
|
+
this._sharedUsagePosition = 0;
|
19
21
|
this._lastHeapStats = Date.now();
|
20
22
|
}
|
21
23
|
registerCacheOwner(provider) {
|
22
24
|
this._cacheOwners.push(provider);
|
23
25
|
}
|
26
|
+
addWorker(index, worker) {
|
27
|
+
// Send the sharedArrayBuffer to the worker so it can be used
|
28
|
+
// to keep track of heap usage on all threads.
|
29
|
+
const buffer = this._getSharedUsageBuffer();
|
30
|
+
if (buffer) {
|
31
|
+
// The SharedArrayBuffer needs to be separate from data in order for it
|
32
|
+
// to be marshalled correctly.
|
33
|
+
worker.postMessage({ requestType: 'cacheUsageBuffer', sharedUsageBuffer: buffer, data: index.toString() });
|
34
|
+
worker.on('exit', () => {
|
35
|
+
const view = new Float64Array(buffer);
|
36
|
+
view[index] = 0;
|
37
|
+
});
|
38
|
+
}
|
39
|
+
}
|
40
|
+
handleCachedUsageBufferMessage(msg) {
|
41
|
+
if (msg.requestType === 'cacheUsageBuffer') {
|
42
|
+
const index = parseInt(msg.data || '0');
|
43
|
+
const buffer = msg.sharedUsageBuffer;
|
44
|
+
// Index of zero is reserved for the main thread so if
|
45
|
+
// the index isn't passed, don't save the shared buffer.
|
46
|
+
if (buffer && index) {
|
47
|
+
this._sharedUsageBuffer = buffer;
|
48
|
+
this._sharedUsagePosition = index;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
24
52
|
unregisterCacheOwner(provider) {
|
25
53
|
const index = this._cacheOwners.findIndex((p) => p === provider);
|
26
54
|
if (index < 0) {
|
@@ -61,21 +89,50 @@ class CacheManager {
|
|
61
89
|
// Returns a ratio of used bytes to total bytes.
|
62
90
|
getUsedHeapRatio(console) {
|
63
91
|
const heapStats = (0, memUtils_1.getHeapStatistics)();
|
92
|
+
let usage = this._getTotalHeapUsage(heapStats);
|
64
93
|
if (console && Date.now() - this._lastHeapStats > 1000) {
|
65
94
|
// This can fill up the user's console, so we only do it once per second.
|
66
95
|
this._lastHeapStats = Date.now();
|
67
96
|
console.info(`Heap stats: ` +
|
68
97
|
`total_heap_size=${this._convertToMB(heapStats.total_heap_size)}, ` +
|
69
98
|
`used_heap_size=${this._convertToMB(heapStats.used_heap_size)}, ` +
|
99
|
+
`cross_worker_used_heap_size=${this._convertToMB(usage)}, ` +
|
70
100
|
`total_physical_size=${this._convertToMB(heapStats.total_physical_size)}, ` +
|
71
101
|
`total_available_size=${this._convertToMB(heapStats.total_available_size)}, ` +
|
72
102
|
`heap_size_limit=${this._convertToMB(heapStats.heap_size_limit)}`);
|
73
103
|
}
|
74
|
-
|
104
|
+
// Total usage seems to be off by about 5%, so we'll add that back in
|
105
|
+
// to make the ratio more accurate. (200MB at 4GB)
|
106
|
+
usage += usage * 0.05;
|
107
|
+
return usage / heapStats.heap_size_limit;
|
75
108
|
}
|
76
109
|
_convertToMB(bytes) {
|
77
110
|
return `${Math.round(bytes / (1024 * 1024))}MB`;
|
78
111
|
}
|
112
|
+
_getSharedUsageBuffer() {
|
113
|
+
try {
|
114
|
+
if (!this._sharedUsageBuffer && this._maxWorkers > 0) {
|
115
|
+
// Allocate enough space for the workers and the main thread.
|
116
|
+
this._sharedUsageBuffer = new SharedArrayBuffer(8 * (this._maxWorkers + 1));
|
117
|
+
}
|
118
|
+
return this._sharedUsageBuffer;
|
119
|
+
}
|
120
|
+
catch {
|
121
|
+
// SharedArrayBuffer is not supported.
|
122
|
+
return undefined;
|
123
|
+
}
|
124
|
+
}
|
125
|
+
_getTotalHeapUsage(heapStats) {
|
126
|
+
// If the SharedArrayBuffer is supported, we'll use it to to get usage
|
127
|
+
// from other threads and add that to our own
|
128
|
+
const buffer = this._getSharedUsageBuffer();
|
129
|
+
if (buffer) {
|
130
|
+
const view = new Float64Array(buffer);
|
131
|
+
view[this._sharedUsagePosition] = heapStats.used_heap_size;
|
132
|
+
return view.reduce((a, b) => a + b, 0);
|
133
|
+
}
|
134
|
+
return heapStats.used_heap_size;
|
135
|
+
}
|
79
136
|
}
|
80
137
|
exports.CacheManager = CacheManager;
|
81
138
|
(function (CacheManager) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../../../src/analyzer/cacheManager.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;
|
1
|
+
{"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../../../src/analyzer/cacheManager.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, CallNode, CaseNode, ClassNode, DelNode, DictionaryNode, ErrorNode, ExceptNode, ForNode, FormatStringNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromAsNode, ImportFromNode, IndexNode, LambdaNode, ListComprehensionIfNode, ListComprehensionNode, ListNode, MatchNode, MemberAccessNode, ModuleNameNode, NameNode, NonlocalNode, ParseNode, PatternClassNode, RaiseNode, ReturnNode, SetNode, SliceNode, StatementListNode, StringListNode, SuiteNode, TernaryNode, TryNode, TupleNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, TypeParameterNode, UnaryOperationNode, UnpackNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
|
2
|
-
import {
|
2
|
+
import { ParserOutput } from '../parser/parser';
|
3
3
|
import { ImportResolver } from './importResolver';
|
4
4
|
import { ParseTreeWalker } from './parseTreeWalker';
|
5
5
|
import { SourceMapper } from './sourceMapper';
|
@@ -14,7 +14,7 @@ export declare class Checker extends ParseTreeWalker {
|
|
14
14
|
private _isUnboundCheckSuppressed;
|
15
15
|
private _scopedNodes;
|
16
16
|
private _typeParameterLists;
|
17
|
-
constructor(_importResolver: ImportResolver, _evaluator: TypeEvaluator, parseResults:
|
17
|
+
constructor(_importResolver: ImportResolver, _evaluator: TypeEvaluator, parseResults: ParserOutput, _sourceMapper: SourceMapper, _dependentFiles?: ParserOutput[] | undefined);
|
18
18
|
check(): void;
|
19
19
|
walk(node: ParseNode): void;
|
20
20
|
visitSuite(node: SuiteNode): boolean;
|
package/dist/analyzer/checker.js
CHANGED
@@ -3423,7 +3423,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3423
3423
|
// Validates that any overridden member variables are not marked
|
3424
3424
|
// as Final in parent classes.
|
3425
3425
|
_validateFinalMemberOverrides(classType) {
|
3426
|
-
|
3426
|
+
types_1.ClassType.getSymbolTable(classType).forEach((localSymbol, name) => {
|
3427
3427
|
const parentSymbol = (0, typeUtils_1.lookUpClassMember)(classType, name, 1 /* MemberAccessFlags.SkipOriginalClass */);
|
3428
3428
|
if (parentSymbol && (0, types_1.isInstantiableClass)(parentSymbol.classType) && !SymbolNameUtils.isPrivateName(name)) {
|
3429
3429
|
// Did the parent class explicitly declare the variable as final?
|
@@ -3475,7 +3475,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3475
3475
|
initMemberTypeResult = undefined;
|
3476
3476
|
}
|
3477
3477
|
}
|
3478
|
-
|
3478
|
+
types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
|
3479
3479
|
var _a;
|
3480
3480
|
// Enum members don't have type annotations.
|
3481
3481
|
if (symbol.getTypedDeclarations().length > 0) {
|
@@ -3553,7 +3553,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3553
3553
|
const initOnlySymbolMap = new Map();
|
3554
3554
|
types_1.ClassType.getReverseMro(classType).forEach((mroClass) => {
|
3555
3555
|
if ((0, types_1.isClass)(mroClass) && types_1.ClassType.isDataClass(mroClass)) {
|
3556
|
-
|
3556
|
+
types_1.ClassType.getSymbolTable(mroClass).forEach((symbol, name) => {
|
3557
3557
|
if (symbol.isInitVar()) {
|
3558
3558
|
initOnlySymbolMap.set(name, symbol);
|
3559
3559
|
}
|
@@ -3665,7 +3665,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3665
3665
|
if (types_1.ClassType.isFinal(classType)) {
|
3666
3666
|
(0, typeUtils_1.getProtocolSymbolsRecursive)(classType, abstractSymbols, 2048 /* ClassTypeFlags.SupportsAbstractMethods */);
|
3667
3667
|
}
|
3668
|
-
|
3668
|
+
types_1.ClassType.getSymbolTable(classType).forEach((localSymbol, name) => {
|
3669
3669
|
abstractSymbols.delete(name);
|
3670
3670
|
// This applies only to instance members.
|
3671
3671
|
if (!localSymbol.isInstanceMember()) {
|
@@ -3833,7 +3833,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3833
3833
|
if (types_1.ClassType.isDataClass(classType)) {
|
3834
3834
|
return;
|
3835
3835
|
}
|
3836
|
-
|
3836
|
+
types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
|
3837
3837
|
const decls = symbol.getDeclarations();
|
3838
3838
|
const isDefinedBySlots = decls.some((decl) => decl.type === 1 /* DeclarationType.Variable */ && decl.isDefinedBySlots);
|
3839
3839
|
if (isDefinedBySlots) {
|
@@ -4080,7 +4080,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4080
4080
|
const overrideSymbol = overrideClassAndSymbol.symbol;
|
4081
4081
|
let overrideType = this._evaluator.getEffectiveTypeOfSymbol(overrideSymbol);
|
4082
4082
|
overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, overrideClassAndSymbol.classType);
|
4083
|
-
const childOverrideSymbol =
|
4083
|
+
const childOverrideSymbol = types_1.ClassType.getSymbolTable(childClassType).get(memberName);
|
4084
4084
|
const childOverrideType = childOverrideSymbol
|
4085
4085
|
? this._evaluator.getEffectiveTypeOfSymbol(childOverrideSymbol)
|
4086
4086
|
: undefined;
|
@@ -4208,7 +4208,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4208
4208
|
// are decorated. For example, if the first overload is not marked @final
|
4209
4209
|
// but subsequent ones are, an error should be reported.
|
4210
4210
|
_validateOverloadDecoratorConsistency(classType) {
|
4211
|
-
|
4211
|
+
types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
|
4212
4212
|
const primaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(symbol);
|
4213
4213
|
if (!primaryDecl || primaryDecl.type !== 5 /* DeclarationType.Function */) {
|
4214
4214
|
return;
|
@@ -4331,7 +4331,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4331
4331
|
// types as the original method. Also marks the class as abstract if one
|
4332
4332
|
// or more abstract methods are not overridden.
|
4333
4333
|
_validateBaseClassOverrides(classType) {
|
4334
|
-
|
4334
|
+
types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
|
4335
4335
|
// Private symbols do not need to match in type since their
|
4336
4336
|
// names are mangled, and subclasses can't access the value in
|
4337
4337
|
// the parent class.
|