@zzzen/pyright-internal 1.2.0-dev.20240324 → 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 +15 -8
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/cacheManager.d.ts +12 -0
- package/dist/analyzer/cacheManager.js +63 -3
- package/dist/analyzer/cacheManager.js.map +1 -1
- package/dist/analyzer/checker.d.ts +2 -3
- package/dist/analyzer/checker.js +18 -13
- 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/constructors.d.ts +3 -2
- package/dist/analyzer/constructors.js +76 -54
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +7 -6
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declaration.js +1 -1
- package/dist/analyzer/declaration.js.map +1 -1
- package/dist/analyzer/enums.js +8 -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/importResolver.js +19 -17
- package/dist/analyzer/importResolver.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 +3 -1
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +7 -7
- 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 +15 -4
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +5 -10
- package/dist/analyzer/program.js +35 -30
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/programTypes.d.ts +11 -0
- package/dist/analyzer/programTypes.js +11 -0
- package/dist/analyzer/programTypes.js.map +1 -0
- 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 +24 -15
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +5 -3
- package/dist/analyzer/sourceFile.js +112 -75
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.js +4 -4
- package/dist/analyzer/sourceFileInfoUtils.js.map +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/tracePrinter.js +2 -2
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.js +1 -1
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +159 -73
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeGuards.js +16 -9
- 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.d.ts +2 -2
- package/dist/analyzer/typeUtils.js +33 -20
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +32 -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 +6 -2
- package/dist/backgroundAnalysis.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +2 -1
- package/dist/backgroundAnalysisBase.js +6 -1
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.d.ts +1 -0
- package/dist/backgroundThreadBase.js +19 -10
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/commands/commandController.d.ts +2 -1
- package/dist/commands/commandController.js +3 -0
- package/dist/commands/commandController.js.map +1 -1
- package/dist/commands/createTypeStub.d.ts +1 -1
- package/dist/commands/createTypeStub.js +3 -3
- package/dist/commands/createTypeStub.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.d.ts +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +5 -5
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/commands/quickActionCommand.d.ts +1 -1
- package/dist/commands/quickActionCommand.js +2 -2
- package/dist/commands/quickActionCommand.js.map +1 -1
- package/dist/commands/restartServer.d.ts +1 -1
- package/dist/common/cancellationUtils.js +2 -2
- package/dist/common/cancellationUtils.js.map +1 -1
- package/dist/common/caseSensitivityDetector.d.ts +6 -0
- package/dist/common/caseSensitivityDetector.js +18 -0
- package/dist/common/caseSensitivityDetector.js.map +1 -0
- package/dist/common/commandLineOptions.d.ts +3 -2
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/commandUtils.js +1 -1
- package/dist/common/commandUtils.js.map +1 -1
- package/dist/common/configOptions.js +3 -3
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/envVarUtils.d.ts +1 -0
- package/dist/common/envVarUtils.js +42 -7
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/common/extensibility.d.ts +4 -3
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/fileBasedCancellationUtils.js +2 -2
- package/dist/common/fileBasedCancellationUtils.js.map +1 -1
- package/dist/common/fileSystem.d.ts +0 -1
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/fullAccessHost.js +4 -3
- package/dist/common/fullAccessHost.js.map +1 -1
- package/dist/common/languageServerInterface.d.ts +62 -0
- package/dist/common/languageServerInterface.js +10 -0
- package/dist/common/languageServerInterface.js.map +1 -0
- package/dist/common/realFileSystem.d.ts +8 -4
- package/dist/common/realFileSystem.js +56 -17
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/serviceKeys.d.ts +21 -0
- package/dist/common/serviceKeys.js +26 -0
- package/dist/common/serviceKeys.js.map +1 -0
- package/dist/common/serviceProviderExtensions.d.ts +3 -15
- package/dist/common/serviceProviderExtensions.js +23 -27
- package/dist/common/serviceProviderExtensions.js.map +1 -1
- package/dist/common/textEditTracker.d.ts +5 -5
- package/dist/common/textEditTracker.js +35 -35
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/common/uri/constantUri.d.ts +36 -0
- package/dist/common/uri/constantUri.js +112 -0
- package/dist/common/uri/constantUri.js.map +1 -0
- package/dist/common/uri/emptyUri.d.ts +3 -31
- package/dist/common/uri/emptyUri.js +3 -84
- package/dist/common/uri/emptyUri.js.map +1 -1
- package/dist/common/uri/fileUri.d.ts +1 -0
- package/dist/common/uri/fileUri.js +3 -2
- package/dist/common/uri/fileUri.js.map +1 -1
- package/dist/common/uri/uri.d.ts +11 -3
- package/dist/common/uri/uri.js +31 -20
- package/dist/common/uri/uri.js.map +1 -1
- package/dist/common/uri/uriUtils.d.ts +11 -5
- package/dist/common/uri/uriUtils.js +31 -53
- package/dist/common/uri/uriUtils.js.map +1 -1
- package/dist/common/workspaceEditUtils.js +4 -4
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +11 -59
- package/dist/languageServerBase.js +18 -8
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.d.ts +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +4 -5
- package/dist/languageService/analyzerServiceExecutor.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 +6 -6
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/codeActionProvider.js +43 -42
- package/dist/languageService/codeActionProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +2 -2
- package/dist/languageService/completionProvider.js +10 -11
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.js +3 -3
- 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 +3 -3
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.d.ts +3 -2
- package/dist/languageService/documentSymbolProvider.js +4 -3
- 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 +4 -4
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +4 -4
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.d.ts +5 -2
- package/dist/languageService/symbolIndexer.js +21 -11
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.js +2 -2
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +3 -0
- package/dist/localization/localize.js +22 -16
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +1 -0
- package/dist/localization/package.nls.de.json +1 -0
- package/dist/localization/package.nls.en-us.json +1 -0
- package/dist/localization/package.nls.es.json +1 -0
- package/dist/localization/package.nls.fr.json +1 -0
- package/dist/localization/package.nls.it.json +1 -0
- package/dist/localization/package.nls.ja.json +1 -0
- package/dist/localization/package.nls.ko.json +1 -0
- package/dist/localization/package.nls.pl.json +1 -0
- package/dist/localization/package.nls.pt-br.json +1 -0
- package/dist/localization/package.nls.qps-ploc.json +1 -0
- package/dist/localization/package.nls.ru.json +1 -0
- package/dist/localization/package.nls.tr.json +1 -0
- package/dist/localization/package.nls.zh-cn.json +1 -0
- package/dist/localization/package.nls.zh-tw.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/pyright.js +6 -6
- package/dist/pyright.js.map +1 -1
- package/dist/pyrightFileSystem.d.ts +3 -1
- package/dist/pyrightFileSystem.js +14 -9
- package/dist/pyrightFileSystem.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.d.ts +0 -1
- package/dist/readonlyAugmentedFileSystem.js +0 -3
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/server.d.ts +4 -2
- package/dist/server.js +15 -11
- 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 +18 -18
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/completions.test.js +4 -4
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/config.test.js +19 -14
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/documentSymbolCollector.test.js +2 -3
- package/dist/tests/documentSymbolCollector.test.js.map +1 -1
- package/dist/tests/envVarUtils.test.js +77 -2
- package/dist/tests/envVarUtils.test.js.map +1 -1
- package/dist/tests/filesystem.test.js +13 -13
- package/dist/tests/filesystem.test.js.map +1 -1
- package/dist/tests/fourSlashParser.test.js +10 -10
- package/dist/tests/fourSlashParser.test.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashParser.js +12 -10
- package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashTypes.d.ts +1 -0
- package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.d.ts +3 -2
- package/dist/tests/harness/fourslash/testLanguageService.js +2 -2
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +6 -6
- package/dist/tests/harness/fourslash/testState.js +42 -37
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +1 -1
- package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
- package/dist/tests/harness/testHost.d.ts +7 -0
- package/dist/tests/harness/testHost.js +33 -14
- package/dist/tests/harness/testHost.js.map +1 -1
- package/dist/tests/harness/vfs/factory.d.ts +3 -4
- package/dist/tests/harness/vfs/factory.js +7 -6
- package/dist/tests/harness/vfs/factory.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +5 -3
- package/dist/tests/harness/vfs/filesystem.js +22 -15
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importResolver.test.js +35 -34
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +9 -10
- 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/logger.test.js +1 -1
- package/dist/tests/logger.test.js.map +1 -1
- package/dist/tests/lsp/languageServer.js +6 -5
- package/dist/tests/lsp/languageServer.js.map +1 -1
- package/dist/tests/lsp/languageServerTestUtils.d.ts +1 -1
- package/dist/tests/lsp/languageServerTestUtils.js +15 -10
- package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +1 -2
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/parser.test.js +14 -14
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/pyrightFileSystem.test.js +6 -5
- package/dist/tests/pyrightFileSystem.test.js.map +1 -1
- package/dist/tests/serialization.test.js +5 -5
- package/dist/tests/serialization.test.js.map +1 -1
- package/dist/tests/service.test.js +16 -25
- package/dist/tests/service.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/sourceFile.test.js +8 -5
- package/dist/tests/sourceFile.test.js.map +1 -1
- package/dist/tests/sourceMapperUtils.test.js +4 -4
- package/dist/tests/sourceMapperUtils.test.js.map +1 -1
- package/dist/tests/testState.test.js +5 -5
- package/dist/tests/testState.test.js.map +1 -1
- package/dist/tests/testStateUtils.js +8 -6
- package/dist/tests/testStateUtils.js.map +1 -1
- package/dist/tests/testUtils.d.ts +4 -8
- package/dist/tests/testUtils.js +9 -10
- 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 +11 -5
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typePrinter.test.js.map +1 -1
- package/dist/tests/uri.test.js +220 -199
- package/dist/tests/uri.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +7 -7
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/dist/tests/zipfs.test.js +7 -5
- package/dist/tests/zipfs.test.js.map +1 -1
- package/dist/workspaceFactory.d.ts +15 -6
- package/dist/workspaceFactory.js +16 -10
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +5 -5
@@ -1,12 +1,22 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { Worker } from 'worker_threads';
|
3
|
+
import { AnalysisRequest } from '../backgroundAnalysisBase';
|
1
4
|
import { ConsoleInterface } from '../common/console';
|
2
5
|
export interface CacheOwner {
|
3
6
|
getCacheUsage(): number;
|
4
7
|
emptyCache(): void;
|
5
8
|
}
|
6
9
|
export declare class CacheManager {
|
10
|
+
private readonly _maxWorkers;
|
7
11
|
private _pausedCount;
|
8
12
|
private readonly _cacheOwners;
|
13
|
+
private _sharedUsageBuffer;
|
14
|
+
private _sharedUsagePosition;
|
15
|
+
private _lastHeapStats;
|
16
|
+
constructor(_maxWorkers?: number);
|
9
17
|
registerCacheOwner(provider: CacheOwner): void;
|
18
|
+
addWorker(index: number, worker: Worker): void;
|
19
|
+
handleCachedUsageBufferMessage(msg: AnalysisRequest): void;
|
10
20
|
unregisterCacheOwner(provider: CacheOwner): void;
|
11
21
|
pauseTracking(): {
|
12
22
|
dispose(): void;
|
@@ -15,6 +25,8 @@ export declare class CacheManager {
|
|
15
25
|
emptyCache(console?: ConsoleInterface): void;
|
16
26
|
getUsedHeapRatio(console?: ConsoleInterface): number;
|
17
27
|
private _convertToMB;
|
28
|
+
private _getSharedUsageBuffer;
|
29
|
+
private _getTotalHeapUsage;
|
18
30
|
}
|
19
31
|
export declare namespace CacheManager {
|
20
32
|
function is(obj: any): obj is CacheManager;
|
@@ -13,13 +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;
|
21
|
+
this._lastHeapStats = Date.now();
|
19
22
|
}
|
20
23
|
registerCacheOwner(provider) {
|
21
24
|
this._cacheOwners.push(provider);
|
22
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
|
+
}
|
23
52
|
unregisterCacheOwner(provider) {
|
24
53
|
const index = this._cacheOwners.findIndex((p) => p === provider);
|
25
54
|
if (index < 0) {
|
@@ -60,19 +89,50 @@ class CacheManager {
|
|
60
89
|
// Returns a ratio of used bytes to total bytes.
|
61
90
|
getUsedHeapRatio(console) {
|
62
91
|
const heapStats = (0, memUtils_1.getHeapStatistics)();
|
63
|
-
|
92
|
+
let usage = this._getTotalHeapUsage(heapStats);
|
93
|
+
if (console && Date.now() - this._lastHeapStats > 1000) {
|
94
|
+
// This can fill up the user's console, so we only do it once per second.
|
95
|
+
this._lastHeapStats = Date.now();
|
64
96
|
console.info(`Heap stats: ` +
|
65
97
|
`total_heap_size=${this._convertToMB(heapStats.total_heap_size)}, ` +
|
66
98
|
`used_heap_size=${this._convertToMB(heapStats.used_heap_size)}, ` +
|
99
|
+
`cross_worker_used_heap_size=${this._convertToMB(usage)}, ` +
|
67
100
|
`total_physical_size=${this._convertToMB(heapStats.total_physical_size)}, ` +
|
68
101
|
`total_available_size=${this._convertToMB(heapStats.total_available_size)}, ` +
|
69
102
|
`heap_size_limit=${this._convertToMB(heapStats.heap_size_limit)}`);
|
70
103
|
}
|
71
|
-
|
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;
|
72
108
|
}
|
73
109
|
_convertToMB(bytes) {
|
74
110
|
return `${Math.round(bytes / (1024 * 1024))}MB`;
|
75
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
|
+
}
|
76
136
|
}
|
77
137
|
exports.CacheManager = CacheManager;
|
78
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';
|
@@ -7,7 +7,6 @@ import { TypeEvaluator } from './typeEvaluatorTypes';
|
|
7
7
|
export declare class Checker extends ParseTreeWalker {
|
8
8
|
private _importResolver;
|
9
9
|
private _evaluator;
|
10
|
-
private _parseResults;
|
11
10
|
private _sourceMapper;
|
12
11
|
private _dependentFiles?;
|
13
12
|
private readonly _moduleNode;
|
@@ -15,7 +14,7 @@ export declare class Checker extends ParseTreeWalker {
|
|
15
14
|
private _isUnboundCheckSuppressed;
|
16
15
|
private _scopedNodes;
|
17
16
|
private _typeParameterLists;
|
18
|
-
constructor(_importResolver: ImportResolver, _evaluator: TypeEvaluator,
|
17
|
+
constructor(_importResolver: ImportResolver, _evaluator: TypeEvaluator, parseResults: ParserOutput, _sourceMapper: SourceMapper, _dependentFiles?: ParserOutput[] | undefined);
|
19
18
|
check(): void;
|
20
19
|
walk(node: ParseNode): void;
|
21
20
|
visitSuite(node: SuiteNode): boolean;
|
package/dist/analyzer/checker.js
CHANGED
@@ -78,11 +78,10 @@ const types_1 = require("./types");
|
|
78
78
|
// functions to be emitted.
|
79
79
|
const isPrintCodeComplexityEnabled = false;
|
80
80
|
class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
81
|
-
constructor(_importResolver, _evaluator,
|
81
|
+
constructor(_importResolver, _evaluator, parseResults, _sourceMapper, _dependentFiles) {
|
82
82
|
super();
|
83
83
|
this._importResolver = _importResolver;
|
84
84
|
this._evaluator = _evaluator;
|
85
|
-
this._parseResults = _parseResults;
|
86
85
|
this._sourceMapper = _sourceMapper;
|
87
86
|
this._dependentFiles = _dependentFiles;
|
88
87
|
this._isUnboundCheckSuppressed = false;
|
@@ -91,7 +90,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
91
90
|
this._scopedNodes = [];
|
92
91
|
// A list of all visited type parameter lists.
|
93
92
|
this._typeParameterLists = [];
|
94
|
-
this._moduleNode =
|
93
|
+
this._moduleNode = parseResults.parseTree;
|
95
94
|
this._fileInfo = AnalyzerNodeInfo.getFileInfo(this._moduleNode);
|
96
95
|
}
|
97
96
|
check() {
|
@@ -3424,7 +3423,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3424
3423
|
// Validates that any overridden member variables are not marked
|
3425
3424
|
// as Final in parent classes.
|
3426
3425
|
_validateFinalMemberOverrides(classType) {
|
3427
|
-
|
3426
|
+
types_1.ClassType.getSymbolTable(classType).forEach((localSymbol, name) => {
|
3428
3427
|
const parentSymbol = (0, typeUtils_1.lookUpClassMember)(classType, name, 1 /* MemberAccessFlags.SkipOriginalClass */);
|
3429
3428
|
if (parentSymbol && (0, types_1.isInstantiableClass)(parentSymbol.classType) && !SymbolNameUtils.isPrivateName(name)) {
|
3430
3429
|
// Did the parent class explicitly declare the variable as final?
|
@@ -3460,21 +3459,23 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3460
3459
|
const declaredValueType = (0, enums_1.getEnumDeclaredValueType)(this._evaluator, classType, /* declaredTypesOnly */ true);
|
3461
3460
|
// Is there a custom "__new__" and/or "__init__" method? If so, we'll
|
3462
3461
|
// verify that the signature of these calls is compatible with the values.
|
3463
|
-
let newMemberTypeResult = (0, constructors_1.getBoundNewMethod)(this._evaluator, node.name, classType,
|
3462
|
+
let newMemberTypeResult = (0, constructors_1.getBoundNewMethod)(this._evaluator, node.name, classType,
|
3463
|
+
/* diag */ undefined, 4 /* MemberAccessFlags.SkipObjectBaseClass */);
|
3464
3464
|
// If this __new__ comes from a built-in class like Enum, we'll ignore it.
|
3465
3465
|
if (newMemberTypeResult === null || newMemberTypeResult === void 0 ? void 0 : newMemberTypeResult.classType) {
|
3466
3466
|
if ((0, types_1.isClass)(newMemberTypeResult.classType) && types_1.ClassType.isBuiltIn(newMemberTypeResult.classType)) {
|
3467
3467
|
newMemberTypeResult = undefined;
|
3468
3468
|
}
|
3469
3469
|
}
|
3470
|
-
let initMemberTypeResult = (0, constructors_1.getBoundInitMethod)(this._evaluator, node.name, types_1.ClassType.cloneAsInstance(classType),
|
3470
|
+
let initMemberTypeResult = (0, constructors_1.getBoundInitMethod)(this._evaluator, node.name, types_1.ClassType.cloneAsInstance(classType),
|
3471
|
+
/* diag */ undefined, 4 /* MemberAccessFlags.SkipObjectBaseClass */);
|
3471
3472
|
// If this __init__ comes from a built-in class like Enum, we'll ignore it.
|
3472
3473
|
if (initMemberTypeResult === null || initMemberTypeResult === void 0 ? void 0 : initMemberTypeResult.classType) {
|
3473
3474
|
if ((0, types_1.isClass)(initMemberTypeResult.classType) && types_1.ClassType.isBuiltIn(initMemberTypeResult.classType)) {
|
3474
3475
|
initMemberTypeResult = undefined;
|
3475
3476
|
}
|
3476
3477
|
}
|
3477
|
-
|
3478
|
+
types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
|
3478
3479
|
var _a;
|
3479
3480
|
// Enum members don't have type annotations.
|
3480
3481
|
if (symbol.getTypedDeclarations().length > 0) {
|
@@ -3552,7 +3553,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3552
3553
|
const initOnlySymbolMap = new Map();
|
3553
3554
|
types_1.ClassType.getReverseMro(classType).forEach((mroClass) => {
|
3554
3555
|
if ((0, types_1.isClass)(mroClass) && types_1.ClassType.isDataClass(mroClass)) {
|
3555
|
-
|
3556
|
+
types_1.ClassType.getSymbolTable(mroClass).forEach((symbol, name) => {
|
3556
3557
|
if (symbol.isInitVar()) {
|
3557
3558
|
initOnlySymbolMap.set(name, symbol);
|
3558
3559
|
}
|
@@ -3664,7 +3665,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3664
3665
|
if (types_1.ClassType.isFinal(classType)) {
|
3665
3666
|
(0, typeUtils_1.getProtocolSymbolsRecursive)(classType, abstractSymbols, 2048 /* ClassTypeFlags.SupportsAbstractMethods */);
|
3666
3667
|
}
|
3667
|
-
|
3668
|
+
types_1.ClassType.getSymbolTable(classType).forEach((localSymbol, name) => {
|
3668
3669
|
abstractSymbols.delete(name);
|
3669
3670
|
// This applies only to instance members.
|
3670
3671
|
if (!localSymbol.isInstanceMember()) {
|
@@ -3832,7 +3833,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3832
3833
|
if (types_1.ClassType.isDataClass(classType)) {
|
3833
3834
|
return;
|
3834
3835
|
}
|
3835
|
-
|
3836
|
+
types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
|
3836
3837
|
const decls = symbol.getDeclarations();
|
3837
3838
|
const isDefinedBySlots = decls.some((decl) => decl.type === 1 /* DeclarationType.Variable */ && decl.isDefinedBySlots);
|
3838
3839
|
if (isDefinedBySlots) {
|
@@ -4079,7 +4080,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4079
4080
|
const overrideSymbol = overrideClassAndSymbol.symbol;
|
4080
4081
|
let overrideType = this._evaluator.getEffectiveTypeOfSymbol(overrideSymbol);
|
4081
4082
|
overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, overrideClassAndSymbol.classType);
|
4082
|
-
const childOverrideSymbol =
|
4083
|
+
const childOverrideSymbol = types_1.ClassType.getSymbolTable(childClassType).get(memberName);
|
4083
4084
|
const childOverrideType = childOverrideSymbol
|
4084
4085
|
? this._evaluator.getEffectiveTypeOfSymbol(childOverrideSymbol)
|
4085
4086
|
: undefined;
|
@@ -4207,7 +4208,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4207
4208
|
// are decorated. For example, if the first overload is not marked @final
|
4208
4209
|
// but subsequent ones are, an error should be reported.
|
4209
4210
|
_validateOverloadDecoratorConsistency(classType) {
|
4210
|
-
|
4211
|
+
types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
|
4211
4212
|
const primaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(symbol);
|
4212
4213
|
if (!primaryDecl || primaryDecl.type !== 5 /* DeclarationType.Function */) {
|
4213
4214
|
return;
|
@@ -4330,7 +4331,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4330
4331
|
// types as the original method. Also marks the class as abstract if one
|
4331
4332
|
// or more abstract methods are not overridden.
|
4332
4333
|
_validateBaseClassOverrides(classType) {
|
4333
|
-
|
4334
|
+
types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
|
4334
4335
|
// Private symbols do not need to match in type since their
|
4335
4336
|
// names are mangled, and subclasses can't access the value in
|
4336
4337
|
// the parent class.
|
@@ -4408,6 +4409,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4408
4409
|
if (!symbol.getDeclarations().some((decl) => decl === overrideFunction.details.declaration)) {
|
4409
4410
|
return;
|
4410
4411
|
}
|
4412
|
+
// If the base class is unknown, don't report a missing decorator.
|
4413
|
+
if ((0, types_1.isAnyOrUnknown)(baseMember.classType)) {
|
4414
|
+
return;
|
4415
|
+
}
|
4411
4416
|
const funcNode = overrideFunction.details.declaration.node;
|
4412
4417
|
this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportImplicitOverride, localize_1.LocMessage.overrideDecoratorMissing().format({
|
4413
4418
|
name: funcNode.name.value,
|