@zzzen/pyright-internal 1.2.0-dev.20260816 → 1.2.0-dev.20260830
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/analyzerNodeInfo.d.ts +123 -24
- package/dist/analyzer/analyzerNodeInfo.js +429 -89
- package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +2 -1
- package/dist/analyzer/backgroundAnalysisProgram.js +4 -8
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.d.ts +6 -3
- package/dist/analyzer/binder.js +70 -69
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +4 -2
- package/dist/analyzer/checker.js +86 -59
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +2 -1
- package/dist/analyzer/codeFlowEngine.js +12 -10
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowUtils.d.ts +2 -1
- package/dist/analyzer/codeFlowUtils.js +2 -3
- package/dist/analyzer/codeFlowUtils.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +8 -0
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/dataClasses.d.ts +5 -4
- package/dist/analyzer/dataClasses.js +30 -59
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +2 -1
- package/dist/analyzer/declarationUtils.js +2 -2
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/decorators.d.ts +5 -4
- package/dist/analyzer/decorators.js +20 -21
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/enums.d.ts +5 -4
- package/dist/analyzer/enums.js +11 -10
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +1 -1
- package/dist/analyzer/importResolver.js +5 -3
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +3 -1
- package/dist/analyzer/importStatementUtils.js +14 -7
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.d.ts +2 -1
- package/dist/analyzer/namedTuples.js +3 -4
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.d.ts +3 -2
- package/dist/analyzer/operations.js +8 -8
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +2 -2
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +13 -11
- package/dist/analyzer/parseTreeUtils.js +62 -36
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.d.ts +7 -2
- package/dist/analyzer/parseTreeWalker.js +29 -175
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/patternMatching.d.ts +4 -3
- package/dist/analyzer/patternMatching.js +47 -43
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +12 -0
- package/dist/analyzer/program.js +238 -29
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.d.ts +4 -3
- package/dist/analyzer/properties.js +7 -8
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +14 -2
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/scopeUtils.d.ts +4 -3
- package/dist/analyzer/scopeUtils.js +8 -8
- package/dist/analyzer/scopeUtils.js.map +1 -1
- package/dist/analyzer/sentinel.d.ts +3 -2
- package/dist/analyzer/sentinel.js +4 -5
- package/dist/analyzer/sentinel.js.map +1 -1
- package/dist/analyzer/service.d.ts +5 -10
- package/dist/analyzer/service.js +36 -96
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceEnumerator.d.ts +5 -0
- package/dist/analyzer/sourceEnumerator.js +57 -3
- package/dist/analyzer/sourceEnumerator.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +12 -6
- package/dist/analyzer/sourceFile.js +74 -50
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +1 -0
- package/dist/analyzer/sourceFileInfoUtils.js +8 -0
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/sourceMapper.d.ts +4 -1
- package/dist/analyzer/sourceMapper.js +14 -8
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/testWalker.js +2 -1
- package/dist/analyzer/testWalker.js.map +1 -1
- package/dist/analyzer/tracePrinter.d.ts +2 -1
- package/dist/analyzer/tracePrinter.js +2 -2
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/tuples.d.ts +3 -2
- package/dist/analyzer/tuples.js +5 -5
- package/dist/analyzer/tuples.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.d.ts +5 -7
- package/dist/analyzer/typeDocStringUtils.js +229 -132
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.d.ts +2 -0
- package/dist/analyzer/typeEvaluator.js +418 -229
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -0
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +3 -2
- package/dist/analyzer/typeGuards.js +159 -35
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeStubGeneration.d.ts +64 -0
- package/dist/analyzer/typeStubGeneration.js +226 -0
- package/dist/analyzer/typeStubGeneration.js.map +1 -0
- package/dist/analyzer/typeStubMessages.d.ts +4 -0
- package/dist/analyzer/typeStubMessages.js +25 -0
- package/dist/analyzer/typeStubMessages.js.map +1 -0
- package/dist/analyzer/typeStubOutput.d.ts +9 -0
- package/dist/analyzer/typeStubOutput.js +52 -0
- package/dist/analyzer/typeStubOutput.js.map +1 -0
- package/dist/analyzer/typeStubRenderer.d.ts +5 -0
- package/dist/analyzer/{typeStubWriter.js → typeStubRenderer.js} +20 -99
- package/dist/analyzer/typeStubRenderer.js.map +1 -0
- package/dist/analyzer/typeUtils.d.ts +1 -0
- package/dist/analyzer/typeUtils.js +115 -1
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.d.ts +4 -3
- package/dist/analyzer/typedDicts.js +15 -14
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +2 -0
- package/dist/analyzer/types.js +84 -58
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +5 -4
- package/dist/backgroundAnalysisBase.js +11 -19
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/commands/createTypeStub.d.ts +2 -6
- package/dist/commands/createTypeStub.js +14 -27
- package/dist/commands/createTypeStub.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/collectionUtils.js +15 -6
- package/dist/common/collectionUtils.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +1 -1
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/configOptions.d.ts +4 -1
- package/dist/common/configOptions.js +68 -12
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/envVarUtils.d.ts +1 -0
- package/dist/common/envVarUtils.js +41 -10
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/common/extensibility.d.ts +3 -1
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/extraPathGlob.d.ts +12 -0
- package/dist/common/extraPathGlob.js +315 -0
- package/dist/common/extraPathGlob.js.map +1 -0
- package/dist/common/host.d.ts +2 -0
- package/dist/common/host.js.map +1 -1
- package/dist/common/languageServerInterface.d.ts +2 -1
- package/dist/common/languageServerInterface.js.map +1 -1
- package/dist/common/pathConsts.d.ts +1 -0
- package/dist/common/pathConsts.js +11 -1
- package/dist/common/pathConsts.js.map +1 -1
- package/dist/common/processUtils.d.ts +4 -2
- package/dist/common/processUtils.js +3 -0
- package/dist/common/processUtils.js.map +1 -1
- package/dist/common/stringUtils.d.ts +6 -0
- package/dist/common/stringUtils.js +87 -5
- package/dist/common/stringUtils.js.map +1 -1
- package/dist/common/textEditTracker.d.ts +3 -1
- package/dist/common/textEditTracker.js +8 -6
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/common/textRangeCollection.d.ts +1 -0
- package/dist/common/textRangeCollection.js +32 -1
- package/dist/common/textRangeCollection.js.map +1 -1
- package/dist/common/uri/uriUtils.d.ts +3 -0
- package/dist/common/uri/uriUtils.js +65 -15
- package/dist/common/uri/uriUtils.js.map +1 -1
- package/dist/fileSystemMapping.d.ts +10 -0
- package/dist/fileSystemMapping.js +176 -0
- package/dist/fileSystemMapping.js.map +1 -0
- package/dist/languageServerBase.d.ts +1 -1
- package/dist/languageServerBase.js +2 -2
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.d.ts +1 -3
- package/dist/languageService/analyzerServiceExecutor.js +10 -29
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/autoImporter.d.ts +1 -0
- package/dist/languageService/autoImporter.js +32 -5
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.d.ts +7 -0
- package/dist/languageService/callHierarchyProvider.js +97 -11
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +30 -8
- package/dist/languageService/completionProvider.js +298 -93
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.js +7 -6
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentHighlightProvider.js +2 -1
- package/dist/languageService/documentHighlightProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.d.ts +3 -1
- package/dist/languageService/documentSymbolCollector.js +78 -14
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +3 -2
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/fileWatcherDynamicFeature.js +28 -1
- package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +2 -1
- package/dist/languageService/hoverProvider.js +48 -16
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importSorter.d.ts +3 -1
- package/dist/languageService/importSorter.js +4 -2
- package/dist/languageService/importSorter.js.map +1 -1
- package/dist/languageService/importStatementCandidates.js +4 -2
- package/dist/languageService/importStatementCandidates.js.map +1 -1
- package/dist/languageService/quickActions.js +2 -1
- package/dist/languageService/quickActions.js.map +1 -1
- package/dist/languageService/referencesProvider.js +12 -5
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.d.ts +3 -0
- package/dist/languageService/signatureHelpProvider.js +56 -18
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.d.ts +2 -1
- package/dist/languageService/symbolIndexer.js +7 -7
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/languageService/tooltipUtils.d.ts +1 -1
- package/dist/languageService/tooltipUtils.js +103 -35
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.js +3 -2
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +6 -0
- package/dist/localization/localize.js +10 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +15 -0
- package/dist/localization/package.nls.de.json +15 -0
- package/dist/localization/package.nls.en-us.json +5 -0
- package/dist/localization/package.nls.es.json +15 -0
- package/dist/localization/package.nls.fr.json +15 -0
- package/dist/localization/package.nls.it.json +15 -0
- package/dist/localization/package.nls.ja.json +15 -0
- package/dist/localization/package.nls.ko.json +15 -0
- package/dist/localization/package.nls.pl.json +15 -0
- package/dist/localization/package.nls.pt-br.json +15 -0
- package/dist/localization/package.nls.qps-ploc.json +15 -0
- package/dist/localization/package.nls.ru.json +15 -0
- package/dist/localization/package.nls.tr.json +15 -0
- package/dist/localization/package.nls.zh-cn.json +16 -1
- package/dist/localization/package.nls.zh-tw.json +17 -2
- package/dist/parser/parseNodes.d.ts +85 -80
- package/dist/parser/parseNodes.js +182 -159
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parseTreeUtils.d.ts +3 -0
- package/dist/parser/parseTreeUtils.js +209 -0
- package/dist/parser/parseTreeUtils.js.map +1 -0
- package/dist/parser/parser.d.ts +16 -6
- package/dist/parser/parser.js +210 -144
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/stringAnnotationInfo.d.ts +16 -0
- package/dist/parser/stringAnnotationInfo.js +26 -0
- package/dist/parser/stringAnnotationInfo.js.map +1 -0
- package/dist/pyright.js +30 -17
- package/dist/pyright.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.d.ts +2 -9
- package/dist/readonlyAugmentedFileSystem.js +17 -144
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/tests/analyzerNodeInfo.test.d.ts +1 -0
- package/dist/tests/analyzerNodeInfo.test.js +145 -0
- package/dist/tests/analyzerNodeInfo.test.js.map +1 -0
- package/dist/tests/collectionUtils.test.js +46 -0
- package/dist/tests/collectionUtils.test.js.map +1 -1
- package/dist/tests/completions.test.js +34 -0
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/config.test.js +131 -7
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/extraPathGlob.test.d.ts +1 -0
- package/dist/tests/extraPathGlob.test.js +434 -0
- package/dist/tests/extraPathGlob.test.js.map +1 -0
- package/dist/tests/fileSystemMapping.test.d.ts +1 -0
- package/dist/tests/fileSystemMapping.test.js +458 -0
- package/dist/tests/fileSystemMapping.test.js.map +1 -0
- package/dist/tests/fourslash/completions.call.typedDict.fourslash.js +23 -0
- package/dist/tests/fourslash/completions.call.typedDict.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js +14 -0
- package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js +7 -0
- package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js +41 -0
- package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js.map +1 -0
- package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js +2 -0
- package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js +5 -0
- package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.stringLiteral.fourslash.js +4 -0
- package/dist/tests/fourslash/completions.stringLiteral.fourslash.js.map +1 -1
- package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js +48 -0
- package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js +0 -1
- package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js +8 -2
- package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js +5 -2
- package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js +2 -2
- package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.js +1 -1
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/hoverProvider.test.js +38 -0
- package/dist/tests/hoverProvider.test.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +6 -3
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/ipythonMode.test.js +38 -0
- package/dist/tests/ipythonMode.test.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +88 -0
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/parser.test.js +60 -3
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/positionUtils.test.js +23 -0
- package/dist/tests/positionUtils.test.js.map +1 -1
- package/dist/tests/pyrightCli.test.d.ts +1 -0
- package/dist/tests/pyrightCli.test.js +205 -0
- package/dist/tests/pyrightCli.test.js.map +1 -0
- package/dist/tests/pyrightFileSystem.test.js +41 -0
- package/dist/tests/pyrightFileSystem.test.js.map +1 -1
- package/dist/tests/service.test.js +183 -0
- package/dist/tests/service.test.js.map +1 -1
- package/dist/tests/sourceEnumeratorSymlink.test.d.ts +1 -0
- package/dist/tests/sourceEnumeratorSymlink.test.js +203 -0
- package/dist/tests/sourceEnumeratorSymlink.test.js.map +1 -0
- package/dist/tests/stringUtils.test.js +84 -0
- package/dist/tests/stringUtils.test.js.map +1 -1
- package/dist/tests/symlinkAliasInvalidation.test.d.ts +1 -0
- package/dist/tests/symlinkAliasInvalidation.test.js +471 -0
- package/dist/tests/symlinkAliasInvalidation.test.js.map +1 -0
- package/dist/tests/testUtils.d.ts +2 -0
- package/dist/tests/testUtils.js +7 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/textEditUtil.test.js +2 -2
- package/dist/tests/textEditUtil.test.js.map +1 -1
- package/dist/tests/textRangeCollection.test.d.ts +1 -0
- package/dist/tests/textRangeCollection.test.js +137 -0
- package/dist/tests/textRangeCollection.test.js.map +1 -0
- package/dist/tests/typeEquality.test.d.ts +1 -0
- package/dist/tests/typeEquality.test.js +95 -0
- package/dist/tests/typeEquality.test.js.map +1 -0
- package/dist/tests/typeEvaluator1.test.js +24 -3
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +4 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +8 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +8 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +1 -1
- package/dist/tests/typeEvaluator6.test.js +5 -1
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +4 -0
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typeEvaluator8.test.js +4 -0
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/tests/typeServer/typeCache.test.d.ts +1 -0
- package/dist/tests/typeServer/typeCache.test.js +69 -0
- package/dist/tests/typeServer/typeCache.test.js.map +1 -0
- package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js +18 -0
- package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js.map +1 -1
- package/dist/tests/typeStubGeneration.test.d.ts +1 -0
- package/dist/tests/typeStubGeneration.test.js +397 -0
- package/dist/tests/typeStubGeneration.test.js.map +1 -0
- package/dist/tests/typeStubOutput.test.d.ts +1 -0
- package/dist/tests/typeStubOutput.test.js +136 -0
- package/dist/tests/typeStubOutput.test.js.map +1 -0
- package/dist/tests/typeUtils.test.d.ts +1 -0
- package/dist/tests/typeUtils.test.js +133 -0
- package/dist/tests/typeUtils.test.js.map +1 -0
- package/dist/tests/uri.test.js +51 -0
- package/dist/tests/uri.test.js.map +1 -1
- package/dist/typeServer/notebookDocumentHandler.d.ts +9 -2
- package/dist/typeServer/notebookDocumentHandler.js +16 -6
- package/dist/typeServer/notebookDocumentHandler.js.map +1 -1
- package/dist/typeServer/programWrapper.d.ts +1 -0
- package/dist/typeServer/programWrapper.js +28 -15
- package/dist/typeServer/programWrapper.js.map +1 -1
- package/dist/typeServer/protocol/tspSupplemental.d.ts +1 -1
- package/dist/typeServer/protocol/tspSupplemental.js +2 -2
- package/dist/typeServer/server.d.ts +13 -2
- package/dist/typeServer/server.js +36 -23
- package/dist/typeServer/server.js.map +1 -1
- package/dist/typeServer/typeCache.d.ts +8 -4
- package/dist/typeServer/typeCache.js +33 -5
- package/dist/typeServer/typeCache.js.map +1 -1
- package/dist/typeServer/typeEvalUtils.d.ts +2 -1
- package/dist/typeServer/typeEvalUtils.js +7 -3
- package/dist/typeServer/typeEvalUtils.js.map +1 -1
- package/dist/typeServer/typeGuards.js +3 -4
- package/dist/typeServer/typeGuards.js.map +1 -1
- package/dist/typeServer/typeServerFileSystem.d.ts +10 -9
- package/dist/typeServer/typeServerFileSystem.js +16 -12
- package/dist/typeServer/typeServerFileSystem.js.map +1 -1
- package/package.json +7 -5
- package/dist/analyzer/parseTreeCleaner.d.ts +0 -8
- package/dist/analyzer/parseTreeCleaner.js +0 -65
- package/dist/analyzer/parseTreeCleaner.js.map +0 -1
- package/dist/analyzer/typeStubWriter.d.ts +0 -17
- package/dist/analyzer/typeStubWriter.js.map +0 -1
|
@@ -12,7 +12,7 @@ exports.BackgroundAnalysisProgram = exports.InvalidatedReason = void 0;
|
|
|
12
12
|
require("../common/serviceProviderExtensions");
|
|
13
13
|
const analysis_1 = require("./analysis");
|
|
14
14
|
const program_1 = require("./program");
|
|
15
|
-
const
|
|
15
|
+
const typeStubGeneration_1 = require("./typeStubGeneration");
|
|
16
16
|
var InvalidatedReason;
|
|
17
17
|
(function (InvalidatedReason) {
|
|
18
18
|
InvalidatedReason[InvalidatedReason["Reanalyzed"] = 0] = "Reanalyzed";
|
|
@@ -141,15 +141,11 @@ class BackgroundAnalysisProgram {
|
|
|
141
141
|
}
|
|
142
142
|
return this._program.getDiagnosticsForRange(fileUri, range);
|
|
143
143
|
}
|
|
144
|
-
async
|
|
144
|
+
async generateTypeStubFiles(plan, token) {
|
|
145
145
|
if (this._backgroundAnalysis) {
|
|
146
|
-
return this._backgroundAnalysis.
|
|
146
|
+
return this._backgroundAnalysis.generateTypeStubFiles(plan, token);
|
|
147
147
|
}
|
|
148
|
-
return
|
|
149
|
-
targetImportPath: targetImportUri,
|
|
150
|
-
targetIsSingleFile,
|
|
151
|
-
outputPath: stubUri,
|
|
152
|
-
}, token);
|
|
148
|
+
return (0, typeStubGeneration_1.generateTypeStubFiles)(this._program, plan, token);
|
|
153
149
|
}
|
|
154
150
|
invalidateAndForceReanalysis(reason, refreshOptions) {
|
|
155
151
|
this._backgroundAnalysis?.invalidateAndForceReanalysis(reason);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backgroundAnalysisProgram.js","sourceRoot":"","sources":["../../../../../src/analyzer/backgroundAnalysisProgram.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AASH,+CAA6C;AAG7C,yCAAsE;AAEtE,uCAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"backgroundAnalysisProgram.js","sourceRoot":"","sources":["../../../../../src/analyzer/backgroundAnalysisProgram.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AASH,+CAA6C;AAG7C,yCAAsE;AAEtE,uCAAsE;AACtE,6DAA+G;AAE/G,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,qEAAU,CAAA;IACV,yFAAoB,CAAA;IACpB,2FAAqB,CAAA;IACrB,iHAAgC,CAAA;AACpC,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B;AAED,MAAa,yBAAyB;IAMlC,YACuB,SAAiB,EACnB,gBAAiC,EAC1C,cAA6B,EAC7B,eAA+B,EAC/B,mBAAyC,EAChC,gBAAkC,EAClC,eAAyB,EAC1C,OAAiB;QAPE,cAAS,GAAT,SAAS,CAAQ;QACnB,qBAAgB,GAAhB,gBAAgB,CAAiB;QAC1C,mBAAc,GAAd,cAAc,CAAe;QAC7B,oBAAe,GAAf,eAAe,CAAgB;QAC/B,wBAAmB,GAAnB,mBAAmB,CAAsB;QAChC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,oBAAe,GAAf,eAAe,CAAU;QAXtC,cAAS,GAAG,KAAK,CAAC;QActB,IAAI,CAAC,QAAQ;YACT,OAAO;gBACP,IAAI,iBAAO,CACP,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,gBAAgB,EACrB,SAAS,EACT,IAAI,CAAC,eAAe,EACpB,SAAS,CACZ,CAAC;QACN,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,OAAY;QACtB,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,gBAAgB,CAAC,aAA4B;QACzC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB,CAAC,cAA8B;QAC5C,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,eAAe,CAAC,QAAe;QAC3B,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,iCAAiC,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,2BAA2B,CAAC,WAAqB;QAC7C,IAAI,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,aAAa,CAAC,OAAY,EAAE,OAAsB,EAAE,QAAgB,EAAE,OAAwB;QAC1F,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,aAAa,CAAC,OAAY;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAC,OAAY,EAAE,UAA2B;QACtD,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,sBAAsB,CAAC,GAAQ,EAAE,OAAsB,EAAE,QAAgB,EAAE,OAAwB;QAC/F,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,aAAa,CAAC,OAAY;QACtB,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,iCAAiC,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,cAAc,CAAC,OAAY;QACvB,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,iBAAiB,CAAC,qBAA8B;QAC5C,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc,CAAC,QAAe,EAAE,qBAA8B;QAC1D,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IAClE,CAAC;IAED,qBAAqB,CAAC,QAAmC;QACrD,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;QACtC,IAAI,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa,CAAC,KAAwB;QAClC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,IAAA,yBAAc,EACjB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAC/B,KAAK,CACR,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAY,EAAE,KAAwB;QACpD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,OAAY,EAAE,KAAwB;QACrE,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,cAAc;QACV,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,OAAY,EAAE,KAAY,EAAE,KAAwB;QAC7E,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,qBAAqB,CACvB,IAA4B,EAC5B,KAAwB;QAExB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,IAAA,0CAAqB,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,4BAA4B,CAAC,MAAyB,EAAE,cAA+B;QACnF,IAAI,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAE/D,qDAAqD;QACrD,kBAAkB;QAClB,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QAEvC,qGAAqG;QACrG,2DAA2D;QAC3D,IACI,cAAc,EAAE,eAAe;YAC/B,cAAc,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;YACvC,MAAM,KAAK,iBAAiB,CAAC,gCAAgC,EAC/D,CAAC;YACC,kDAAkD;YAClD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACJ,gDAAgD;YAChD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,aAAa;QACT,wCAAwC;QACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACjD,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QAErC,uCAAuC;QACvC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,YAAY;QACR,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAEO,0BAA0B,CAAC,OAA6B;QAC5D,IAAI,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAEO,iCAAiC,CAAC,SAA4B;QAClE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,+DAA+D;QAC/D,8DAA8D;QAC9D,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC1D,IAAI,CAAC,qBAAqB,CAAC;gBACvB,WAAW,EAAE,SAAS;gBACtB,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;gBAC5C,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE;gBAC9D,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE;gBAC9D,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,WAAW,EAAE,CAAC;gBACd,MAAM,EAAE,UAAU;aACrB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ;AAtQD,8DAsQC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, BreakNode, CallNode, ClassNode, ComprehensionNode, ContinueNode, DelNode, ExceptNode, ForNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromNode, IndexNode, LambdaNode, MatchNode, MemberAccessNode, ModuleNameNode, ModuleNode, NameNode, NonlocalNode, ParseNode, PatternAsNode, PatternCaptureNode, PatternMappingExpandEntryNode, RaiseNode, ReturnNode, SuiteNode, TernaryNode, TryNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, UnaryOperationNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
|
|
2
2
|
import { AnalyzerFileInfo } from './analyzerFileInfo';
|
|
3
|
+
import * as AnalyzerNodeInfo from './analyzerNodeInfo';
|
|
3
4
|
import { ParseTreeWalker } from './parseTreeWalker';
|
|
4
5
|
import { CellChainIndexProvider } from './cellChainIndex';
|
|
5
6
|
import { Scope } from './scope';
|
|
6
7
|
export declare class Binder extends ParseTreeWalker {
|
|
7
8
|
private _moduleSymbolOnly;
|
|
8
|
-
private readonly _cellChainIndex
|
|
9
|
+
private readonly _cellChainIndex;
|
|
9
10
|
private readonly _fileInfo;
|
|
11
|
+
private readonly _nodeInfo;
|
|
10
12
|
private _deferredBindingTasks;
|
|
11
13
|
private _currentScope;
|
|
12
14
|
private _currentFlowNode;
|
|
@@ -37,7 +39,7 @@ export declare class Binder extends ParseTreeWalker {
|
|
|
37
39
|
private _potentialWildcardReexportSymbols;
|
|
38
40
|
private _potentialPrivateSymbols;
|
|
39
41
|
private _codeFlowComplexity;
|
|
40
|
-
constructor(fileInfo: AnalyzerFileInfo, _moduleSymbolOnly
|
|
42
|
+
constructor(fileInfo: AnalyzerFileInfo, _moduleSymbolOnly: boolean | undefined, _cellChainIndex: CellChainIndexProvider | undefined, nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoAccessor);
|
|
41
43
|
bindModule(node: ModuleNode): void;
|
|
42
44
|
visitModule(node: ModuleNode): boolean;
|
|
43
45
|
visitSuite(node: SuiteNode): boolean;
|
|
@@ -161,8 +163,9 @@ export declare class ReturnFinder extends ParseTreeWalker {
|
|
|
161
163
|
visitReturn(node: ReturnNode): boolean;
|
|
162
164
|
}
|
|
163
165
|
export declare class DummyScopeGenerator extends ParseTreeWalker {
|
|
166
|
+
private readonly _nodeInfo;
|
|
164
167
|
private _currentScope;
|
|
165
|
-
constructor(currentScope: Scope | undefined);
|
|
168
|
+
constructor(currentScope: Scope | undefined, _nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoAccessor);
|
|
166
169
|
visitClass(node: ClassNode): boolean;
|
|
167
170
|
visitFunction(node: FunctionNode): boolean;
|
|
168
171
|
private _createNewScope;
|
package/dist/analyzer/binder.js
CHANGED
|
@@ -58,7 +58,6 @@ const positionUtils_1 = require("../common/positionUtils");
|
|
|
58
58
|
const textRange_1 = require("../common/textRange");
|
|
59
59
|
const uri_1 = require("../common/uri/uri");
|
|
60
60
|
const localize_1 = require("../localization/localize");
|
|
61
|
-
const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
|
|
62
61
|
const codeFlowTypes_1 = require("./codeFlowTypes");
|
|
63
62
|
const declaration_1 = require("./declaration");
|
|
64
63
|
const importStatementUtils_1 = require("./importStatementUtils");
|
|
@@ -131,7 +130,7 @@ function doesCallExposeClassNamespace(scope, node) {
|
|
|
131
130
|
// flow nodes. This number is somewhat arbitrary and is tuned empirically.
|
|
132
131
|
const flowNodeComplexityContribution = 0.025;
|
|
133
132
|
class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
134
|
-
constructor(fileInfo, _moduleSymbolOnly
|
|
133
|
+
constructor(fileInfo, _moduleSymbolOnly, _cellChainIndex, nodeInfo) {
|
|
135
134
|
super();
|
|
136
135
|
this._moduleSymbolOnly = _moduleSymbolOnly;
|
|
137
136
|
this._cellChainIndex = _cellChainIndex;
|
|
@@ -176,6 +175,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
176
175
|
// the current function.
|
|
177
176
|
this._codeFlowComplexity = 0;
|
|
178
177
|
this._fileInfo = fileInfo;
|
|
178
|
+
this._nodeInfo = nodeInfo;
|
|
179
179
|
}
|
|
180
180
|
bindModule(node) {
|
|
181
181
|
// We'll assume that if there is no builtins scope provided, we must be
|
|
@@ -185,8 +185,8 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
185
185
|
this._addTypingImportAliasesFromBuiltinsScope();
|
|
186
186
|
this._createNewScope(isBuiltInModule ? 5 /* ScopeType.Builtin */ : 4 /* ScopeType.Module */, this._fileInfo.builtinsScope,
|
|
187
187
|
/* proxyScope */ undefined, chainedModuleLevelScopeLookup, () => {
|
|
188
|
-
|
|
189
|
-
|
|
188
|
+
this._nodeInfo.setScope(node, this._currentScope);
|
|
189
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
190
190
|
// Bind implicit names.
|
|
191
191
|
// List taken from https://docs.python.org/3/reference/import.html#__name__
|
|
192
192
|
this._addImplicitSymbolToCurrentScope('__name__', node, 'str');
|
|
@@ -204,9 +204,9 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
204
204
|
this._currentFlowNode = this._createStartFlowNode();
|
|
205
205
|
this._walkStatementsAndReportUnreachable(node.d.statements);
|
|
206
206
|
// Associate the code flow node at the end of the module with the module.
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
this._nodeInfo.setAfterFlowNode(node, this._currentFlowNode);
|
|
208
|
+
this._nodeInfo.setCodeFlowExpressions(node, this._currentScopeCodeFlowExpressions);
|
|
209
|
+
this._nodeInfo.setCodeFlowComplexity(node, this._codeFlowComplexity);
|
|
210
210
|
});
|
|
211
211
|
// Perform all analysis that was deferred during the first pass.
|
|
212
212
|
this._bindDeferred();
|
|
@@ -248,17 +248,17 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
248
248
|
}
|
|
249
249
|
});
|
|
250
250
|
if (this._dunderAllNames) {
|
|
251
|
-
|
|
251
|
+
this._nodeInfo.setDunderAllInfo(node, {
|
|
252
252
|
names: this._dunderAllNames,
|
|
253
253
|
stringNodes: this._dunderAllStringNodes,
|
|
254
254
|
usesUnsupportedDunderAllForm: this._usesUnsupportedDunderAllForm,
|
|
255
255
|
});
|
|
256
256
|
}
|
|
257
257
|
else {
|
|
258
|
-
|
|
258
|
+
this._nodeInfo.setDunderAllInfo(node, /* names */ undefined);
|
|
259
259
|
}
|
|
260
260
|
// Set __all__ flags on the module symbols.
|
|
261
|
-
const scope =
|
|
261
|
+
const scope = this._nodeInfo.getScope(node);
|
|
262
262
|
if (scope && this._dunderAllNames) {
|
|
263
263
|
for (const name of this._dunderAllNames) {
|
|
264
264
|
scope.symbolTable.get(name)?.setIsInDunderAll();
|
|
@@ -276,7 +276,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
276
276
|
return false;
|
|
277
277
|
}
|
|
278
278
|
visitModuleName(node) {
|
|
279
|
-
const importResult =
|
|
279
|
+
const importResult = this._nodeInfo.getImportInfo(node);
|
|
280
280
|
(0, debug_1.assert)(importResult !== undefined);
|
|
281
281
|
if (importResult.isNativeLib) {
|
|
282
282
|
return true;
|
|
@@ -335,17 +335,17 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
335
335
|
symbol.addDeclaration(classDeclaration);
|
|
336
336
|
}
|
|
337
337
|
// Stash the declaration in the parse node for later access.
|
|
338
|
-
|
|
338
|
+
this._nodeInfo.setDeclaration(node, classDeclaration);
|
|
339
339
|
let typeParamScope;
|
|
340
340
|
if (node.d.typeParams) {
|
|
341
341
|
this.walk(node.d.typeParams);
|
|
342
|
-
typeParamScope =
|
|
342
|
+
typeParamScope = this._nodeInfo.getScope(node.d.typeParams);
|
|
343
343
|
}
|
|
344
344
|
this.walkMultiple(node.d.arguments);
|
|
345
345
|
this._createNewScope(3 /* ScopeType.Class */, typeParamScope ?? this._getNonClassParentScope(),
|
|
346
346
|
/* proxyScope */ undefined,
|
|
347
347
|
/* chainedModuleLevelScopeLookup */ undefined, () => {
|
|
348
|
-
|
|
348
|
+
this._nodeInfo.setScope(node, this._currentScope);
|
|
349
349
|
this._addImplicitSymbolToCurrentScope('__doc__', node, 'str | None');
|
|
350
350
|
this._addImplicitSymbolToCurrentScope('__module__', node, 'str');
|
|
351
351
|
this._dunderSlotsEntries = undefined;
|
|
@@ -387,7 +387,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
387
387
|
}
|
|
388
388
|
visitFunction(node) {
|
|
389
389
|
this._createVariableAnnotationFlowNode();
|
|
390
|
-
|
|
390
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
391
391
|
const symbol = this._bindNameToScope(this._currentScope, node.d.name);
|
|
392
392
|
const containingClassNode = ParseTreeUtils.getEnclosingClass(node, /* stopAtFunction */ true);
|
|
393
393
|
const functionDeclaration = {
|
|
@@ -404,7 +404,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
404
404
|
symbol.addDeclaration(functionDeclaration);
|
|
405
405
|
}
|
|
406
406
|
// Stash the declaration in the parse node for later access.
|
|
407
|
-
|
|
407
|
+
this._nodeInfo.setDeclaration(node, functionDeclaration);
|
|
408
408
|
// Walk the default values prior to the type parameters.
|
|
409
409
|
node.d.params.forEach((param) => {
|
|
410
410
|
if (param.d.defaultValue) {
|
|
@@ -414,7 +414,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
414
414
|
let typeParamScope;
|
|
415
415
|
if (node.d.typeParams) {
|
|
416
416
|
this.walk(node.d.typeParams);
|
|
417
|
-
typeParamScope =
|
|
417
|
+
typeParamScope = this._nodeInfo.getScope(node.d.typeParams);
|
|
418
418
|
}
|
|
419
419
|
this.walkMultiple(node.d.decorators);
|
|
420
420
|
node.d.params.forEach((param) => {
|
|
@@ -436,7 +436,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
436
436
|
this._createNewScope(2 /* ScopeType.Function */, typeParamScope ?? this._getNonClassParentScope(),
|
|
437
437
|
/* proxyScope */ undefined,
|
|
438
438
|
/* chainedModuleLevelScopeLookup */ undefined, () => {
|
|
439
|
-
|
|
439
|
+
this._nodeInfo.setScope(node, this._currentScope);
|
|
440
440
|
const enclosingClass = ParseTreeUtils.getEnclosingClass(node);
|
|
441
441
|
if (enclosingClass) {
|
|
442
442
|
// Add the implicit "__class__" symbol described in PEP 3135.
|
|
@@ -459,7 +459,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
459
459
|
isInExceptSuite: this._isInExceptSuite,
|
|
460
460
|
};
|
|
461
461
|
symbol.addDeclaration(paramDeclaration);
|
|
462
|
-
|
|
462
|
+
this._nodeInfo.setDeclaration(paramNode.d.name, paramDeclaration);
|
|
463
463
|
}
|
|
464
464
|
this._createFlowAssignment(paramNode.d.name);
|
|
465
465
|
}
|
|
@@ -471,15 +471,15 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
471
471
|
this._targetFunctionDeclaration = undefined;
|
|
472
472
|
// Associate the code flow node at the end of the suite with
|
|
473
473
|
// the suite.
|
|
474
|
-
|
|
474
|
+
this._nodeInfo.setAfterFlowNode(node.d.suite, this._currentFlowNode);
|
|
475
475
|
// Compute the final return flow node and associate it with
|
|
476
476
|
// the function's parse node. If this node is unreachable, then
|
|
477
477
|
// the function never returns.
|
|
478
478
|
this._addAntecedent(this._currentReturnTarget, this._currentFlowNode);
|
|
479
479
|
const returnFlowNode = this._finishFlowLabel(this._currentReturnTarget);
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
480
|
+
this._nodeInfo.setAfterFlowNode(node, returnFlowNode);
|
|
481
|
+
this._nodeInfo.setCodeFlowExpressions(node, this._currentScopeCodeFlowExpressions);
|
|
482
|
+
this._nodeInfo.setCodeFlowComplexity(node, this._codeFlowComplexity);
|
|
483
483
|
});
|
|
484
484
|
});
|
|
485
485
|
this._createAssignmentTargetFlowNodes(node.d.name, /* walkTargets */ false, /* unbound */ false);
|
|
@@ -488,7 +488,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
488
488
|
}
|
|
489
489
|
visitLambda(node) {
|
|
490
490
|
this._createVariableAnnotationFlowNode();
|
|
491
|
-
|
|
491
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
492
492
|
// Analyze the parameter defaults in the context of the parent's scope
|
|
493
493
|
// before we add any names from the function's scope.
|
|
494
494
|
node.d.params.forEach((param) => {
|
|
@@ -499,7 +499,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
499
499
|
this._createNewScope(2 /* ScopeType.Function */, this._getNonClassParentScope(),
|
|
500
500
|
/* proxyScope */ undefined,
|
|
501
501
|
/* chainedModuleLevelScopeLookup */ undefined, () => {
|
|
502
|
-
|
|
502
|
+
this._nodeInfo.setScope(node, this._currentScope);
|
|
503
503
|
const enclosingClass = ParseTreeUtils.getEnclosingClass(node);
|
|
504
504
|
if (enclosingClass) {
|
|
505
505
|
// Lambdas create the same implicit __class__ closure as named functions.
|
|
@@ -521,16 +521,16 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
521
521
|
isInExceptSuite: this._isInExceptSuite,
|
|
522
522
|
};
|
|
523
523
|
symbol.addDeclaration(paramDeclaration);
|
|
524
|
-
|
|
524
|
+
this._nodeInfo.setDeclaration(paramNode.d.name, paramDeclaration);
|
|
525
525
|
}
|
|
526
526
|
this._createFlowAssignment(paramNode.d.name);
|
|
527
527
|
this.walk(paramNode.d.name);
|
|
528
|
-
|
|
528
|
+
this._nodeInfo.setFlowNode(paramNode, this._currentFlowNode);
|
|
529
529
|
}
|
|
530
530
|
});
|
|
531
531
|
// Walk the expression that make up the lambda body.
|
|
532
532
|
this.walk(node.d.expr);
|
|
533
|
-
|
|
533
|
+
this._nodeInfo.setCodeFlowExpressions(node, this._currentScopeCodeFlowExpressions);
|
|
534
534
|
});
|
|
535
535
|
});
|
|
536
536
|
// We'll walk the child nodes in a deferred manner.
|
|
@@ -545,7 +545,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
545
545
|
const sortedArgs = ParseTreeUtils.getArgsByRuntimeOrder(node);
|
|
546
546
|
sortedArgs.forEach((argNode) => {
|
|
547
547
|
if (this._currentFlowNode) {
|
|
548
|
-
|
|
548
|
+
this._nodeInfo.setFlowNode(argNode, this._currentFlowNode);
|
|
549
549
|
}
|
|
550
550
|
this.walk(argNode);
|
|
551
551
|
});
|
|
@@ -650,7 +650,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
650
650
|
isInExceptSuite: this._isInExceptSuite,
|
|
651
651
|
};
|
|
652
652
|
symbol.addDeclaration(paramDeclaration);
|
|
653
|
-
|
|
653
|
+
this._nodeInfo.setDeclaration(name, paramDeclaration);
|
|
654
654
|
if (typeParamsSeen.has(name.d.value)) {
|
|
655
655
|
this._addSyntaxError(localize_1.LocMessage.typeParameterExistingTypeParameter().format({ name: name.d.value }), name);
|
|
656
656
|
}
|
|
@@ -663,7 +663,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
663
663
|
this.walk(param.d.defaultExpr);
|
|
664
664
|
}
|
|
665
665
|
});
|
|
666
|
-
|
|
666
|
+
this._nodeInfo.setScope(node, typeParamScope);
|
|
667
667
|
return false;
|
|
668
668
|
}
|
|
669
669
|
visitTypeAlias(node) {
|
|
@@ -672,7 +672,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
672
672
|
let typeParamScope;
|
|
673
673
|
if (node.d.typeParams) {
|
|
674
674
|
this.walk(node.d.typeParams);
|
|
675
|
-
typeParamScope =
|
|
675
|
+
typeParamScope = this._nodeInfo.getScope(node.d.typeParams);
|
|
676
676
|
}
|
|
677
677
|
const typeAliasDeclaration = {
|
|
678
678
|
type: 4 /* DeclarationType.TypeAlias */,
|
|
@@ -688,7 +688,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
688
688
|
symbol.addDeclaration(typeAliasDeclaration);
|
|
689
689
|
}
|
|
690
690
|
// Stash the declaration in the parse node for later access.
|
|
691
|
-
|
|
691
|
+
this._nodeInfo.setDeclaration(node, typeAliasDeclaration);
|
|
692
692
|
this._createAssignmentTargetFlowNodes(node.d.name, /* walkTargets */ true, /* unbound */ false);
|
|
693
693
|
const prevScope = this._currentScope;
|
|
694
694
|
this._currentScope = typeParamScope ?? this._currentScope;
|
|
@@ -857,7 +857,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
857
857
|
// Evaluate the operand expression.
|
|
858
858
|
this.walk(node.d.rightExpr);
|
|
859
859
|
});
|
|
860
|
-
const evaluationNode = ParseTreeUtils.getEvaluationNodeForAssignmentExpression(node);
|
|
860
|
+
const evaluationNode = ParseTreeUtils.getEvaluationNodeForAssignmentExpression(node, this._nodeInfo);
|
|
861
861
|
if (!evaluationNode) {
|
|
862
862
|
this._addSyntaxError(localize_1.LocMessage.assignmentExprContext(), node);
|
|
863
863
|
this.walk(node.d.name);
|
|
@@ -867,7 +867,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
867
867
|
// because of the behavior defined in PEP 572. Targets of assignment
|
|
868
868
|
// expressions don't bind to a list comprehension's scope but instead
|
|
869
869
|
// bind to its containing scope.
|
|
870
|
-
const containerScope =
|
|
870
|
+
const containerScope = this._nodeInfo.getScope(evaluationNode);
|
|
871
871
|
// If we're in a list comprehension (possibly nested), make sure that
|
|
872
872
|
// local for targets don't collide with the target of the assignment
|
|
873
873
|
// expression.
|
|
@@ -1071,10 +1071,10 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
1071
1071
|
this._targetFunctionDeclaration.returnStatements.push(node);
|
|
1072
1072
|
}
|
|
1073
1073
|
if (node.d.expr) {
|
|
1074
|
-
|
|
1074
|
+
this._nodeInfo.setFlowNode(node.d.expr, this._currentFlowNode);
|
|
1075
1075
|
this.walk(node.d.expr);
|
|
1076
1076
|
}
|
|
1077
|
-
|
|
1077
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
1078
1078
|
if (this._currentReturnTarget) {
|
|
1079
1079
|
this._addAntecedent(this._currentReturnTarget, this._currentFlowNode);
|
|
1080
1080
|
}
|
|
@@ -1100,15 +1100,15 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
1100
1100
|
}
|
|
1101
1101
|
visitMemberAccess(node) {
|
|
1102
1102
|
this.walk(node.d.leftExpr);
|
|
1103
|
-
|
|
1103
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
1104
1104
|
return false;
|
|
1105
1105
|
}
|
|
1106
1106
|
visitName(node) {
|
|
1107
|
-
|
|
1107
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
1108
1108
|
return false;
|
|
1109
1109
|
}
|
|
1110
1110
|
visitIndex(node) {
|
|
1111
|
-
|
|
1111
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
1112
1112
|
this.walk(node.d.leftExpr);
|
|
1113
1113
|
// If we're within an 'Annotated' type annotation, set the flag.
|
|
1114
1114
|
const wasInAnnotatedAnnotation = this._isInAnnotatedAnnotation;
|
|
@@ -1130,7 +1130,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
1130
1130
|
// Determine if the test condition is always true or always false. If so,
|
|
1131
1131
|
// we can treat either the then or the else clause as unconditional.
|
|
1132
1132
|
const constExprValue = StaticExpressions.evaluateStaticBoolLikeExpression(node.d.testExpr, this._fileInfo.executionEnvironment, this._fileInfo.definedConstants, this._typingImportAliases, this._sysImportAliases);
|
|
1133
|
-
|
|
1133
|
+
this._nodeInfo.setStaticConditionValue(node, constExprValue);
|
|
1134
1134
|
this._bindConditional(node.d.testExpr, thenLabel, elseLabel);
|
|
1135
1135
|
// Handle the if clause.
|
|
1136
1136
|
this._currentFlowNode =
|
|
@@ -1369,7 +1369,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
1369
1369
|
}
|
|
1370
1370
|
visitAwait(node) {
|
|
1371
1371
|
// Make sure this is within an async lambda or function.
|
|
1372
|
-
const execScopeNode = ParseTreeUtils.getExecutionScopeNode(node);
|
|
1372
|
+
const execScopeNode = ParseTreeUtils.getExecutionScopeNode(node, this._nodeInfo);
|
|
1373
1373
|
if (execScopeNode?.nodeType !== 31 /* ParseNodeType.Function */ || !execScopeNode.d.isAsync) {
|
|
1374
1374
|
if (this._fileInfo.ipythonMode && execScopeNode?.nodeType === 36 /* ParseNodeType.Module */) {
|
|
1375
1375
|
// Top level await is allowed in ipython mode.
|
|
@@ -1466,7 +1466,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
1466
1466
|
this._potentialHiddenSymbols.set(symbolName, symbol);
|
|
1467
1467
|
}
|
|
1468
1468
|
}
|
|
1469
|
-
const importInfo =
|
|
1469
|
+
const importInfo = this._nodeInfo.getImportInfo(node.d.module);
|
|
1470
1470
|
(0, debug_1.assert)(importInfo !== undefined);
|
|
1471
1471
|
if (symbol) {
|
|
1472
1472
|
this._createAliasDeclarationForMultipartImportName(node, node.d.alias, importInfo, symbol);
|
|
@@ -1489,8 +1489,8 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
1489
1489
|
visitImportFrom(node) {
|
|
1490
1490
|
const typingSymbolsOfInterest = ['Final', 'ClassVar', 'Annotated'];
|
|
1491
1491
|
const dataclassesSymbolsOfInterest = ['InitVar', 'KW_ONLY'];
|
|
1492
|
-
const importInfo =
|
|
1493
|
-
|
|
1492
|
+
const importInfo = this._nodeInfo.getImportInfo(node.d.module);
|
|
1493
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
1494
1494
|
let resolvedPath = uri_1.Uri.empty();
|
|
1495
1495
|
if (importInfo && importInfo.isImportFound && !importInfo.isNativeLib) {
|
|
1496
1496
|
resolvedPath = importInfo.resolvedUris[importInfo.resolvedUris.length - 1];
|
|
@@ -1630,7 +1630,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
1630
1630
|
node.d.imports.forEach((importSymbolNode) => {
|
|
1631
1631
|
const importedName = importSymbolNode.d.name.d.value;
|
|
1632
1632
|
const nameNode = importSymbolNode.d.alias || importSymbolNode.d.name;
|
|
1633
|
-
|
|
1633
|
+
this._nodeInfo.setFlowNode(importSymbolNode, this._currentFlowNode);
|
|
1634
1634
|
const symbol = this._bindNameToScope(this._currentScope, nameNode);
|
|
1635
1635
|
if (symbol) {
|
|
1636
1636
|
// All import statements of the form `from . import x` treat x
|
|
@@ -1859,7 +1859,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
1859
1859
|
this._createNewScope(1 /* ScopeType.Comprehension */, this._getNonClassParentScope(),
|
|
1860
1860
|
/* proxyScope */ undefined,
|
|
1861
1861
|
/* chainedModuleLevelScopeLookup */ undefined, () => {
|
|
1862
|
-
|
|
1862
|
+
this._nodeInfo.setScope(node, this._currentScope);
|
|
1863
1863
|
const falseLabel = this._createBranchLabel();
|
|
1864
1864
|
// We'll walk the forIfNodes list twice. The first time we'll
|
|
1865
1865
|
// bind targets of for statements. The second time we'll walk
|
|
@@ -2197,7 +2197,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
2197
2197
|
}
|
|
2198
2198
|
_createAliasDeclarationForMultipartImportName(node, importAlias, importInfo, symbol) {
|
|
2199
2199
|
const firstNamePartValue = node.d.module.d.nameParts[0].d.value;
|
|
2200
|
-
|
|
2200
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
2201
2201
|
let uriOfFirstSubmodule;
|
|
2202
2202
|
if (importInfo && importInfo.isImportFound && !importInfo.isNativeLib && importInfo.resolvedUris.length > 0) {
|
|
2203
2203
|
uriOfFirstSubmodule = importInfo.resolvedUris[0];
|
|
@@ -2273,7 +2273,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
2273
2273
|
}
|
|
2274
2274
|
// See if there is import info for this part of the path. This allows us
|
|
2275
2275
|
// to implicitly import all of the modules in a multi-part module name.
|
|
2276
|
-
const implicitImportInfo =
|
|
2276
|
+
const implicitImportInfo = this._nodeInfo.getImportInfo(node.d.module.d.nameParts[0]);
|
|
2277
2277
|
if (implicitImportInfo && implicitImportInfo.resolvedUris.length) {
|
|
2278
2278
|
newDecl.uri = implicitImportInfo.resolvedUris[0];
|
|
2279
2279
|
newDecl.loadSymbolsFromPath = true;
|
|
@@ -2328,7 +2328,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
2328
2328
|
// is import info for this part of the path. This allows us to implicitly
|
|
2329
2329
|
// import all of the modules in a multi-part module name (e.g. "import a.b.c"
|
|
2330
2330
|
// imports "a" and "a.b" and "a.b.c").
|
|
2331
|
-
const implicitImportInfo =
|
|
2331
|
+
const implicitImportInfo = this._nodeInfo.getImportInfo(node.d.module.d.nameParts[i]);
|
|
2332
2332
|
if (implicitImportInfo && implicitImportInfo.resolvedUris.length) {
|
|
2333
2333
|
loaderActions.uri = implicitImportInfo.resolvedUris[i];
|
|
2334
2334
|
loaderActions.loadSymbolsFromPath = true;
|
|
@@ -2345,7 +2345,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
2345
2345
|
_walkStatementsAndReportUnreachable(statements) {
|
|
2346
2346
|
let foundUnreachableStatement = false;
|
|
2347
2347
|
for (const statement of statements) {
|
|
2348
|
-
|
|
2348
|
+
this._nodeInfo.setFlowNode(statement, this._currentFlowNode);
|
|
2349
2349
|
if (!foundUnreachableStatement) {
|
|
2350
2350
|
foundUnreachableStatement = this._isCodeUnreachable();
|
|
2351
2351
|
}
|
|
@@ -2366,7 +2366,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
2366
2366
|
// subtree, we need to create dummy scopes for them. The type analyzer
|
|
2367
2367
|
// depends on scopes being present.
|
|
2368
2368
|
if (!this._moduleSymbolOnly) {
|
|
2369
|
-
const dummyScopeGenerator = new DummyScopeGenerator(this._currentScope);
|
|
2369
|
+
const dummyScopeGenerator = new DummyScopeGenerator(this._currentScope, this._nodeInfo);
|
|
2370
2370
|
dummyScopeGenerator.walk(statement);
|
|
2371
2371
|
}
|
|
2372
2372
|
}
|
|
@@ -2842,8 +2842,8 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
2842
2842
|
// introduced in except clauses. If there is no use the previous flow node
|
|
2843
2843
|
// associated, use the previous flow node (applies in the del case).
|
|
2844
2844
|
// Otherwise, the node will be evaluated as unbound at this point in the flow.
|
|
2845
|
-
if (!unbound ||
|
|
2846
|
-
|
|
2845
|
+
if (!unbound || this._nodeInfo.getFlowNode(node) === undefined) {
|
|
2846
|
+
this._nodeInfo.setFlowNode(node, unbound ? prevFlowNode : this._currentFlowNode);
|
|
2847
2847
|
}
|
|
2848
2848
|
}
|
|
2849
2849
|
_createFlowWildcardImport(node, names) {
|
|
@@ -2858,7 +2858,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
2858
2858
|
this._addExceptTargets(flowNode);
|
|
2859
2859
|
this._currentFlowNode = flowNode;
|
|
2860
2860
|
}
|
|
2861
|
-
|
|
2861
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
2862
2862
|
}
|
|
2863
2863
|
_createFlowExhaustedMatch(node) {
|
|
2864
2864
|
if (!this._isCodeUnreachable()) {
|
|
@@ -2871,7 +2871,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
2871
2871
|
};
|
|
2872
2872
|
this._currentFlowNode = flowNode;
|
|
2873
2873
|
}
|
|
2874
|
-
|
|
2874
|
+
this._nodeInfo.setAfterFlowNode(node, this._currentFlowNode);
|
|
2875
2875
|
}
|
|
2876
2876
|
_isCodeUnreachable() {
|
|
2877
2877
|
return !!(this._currentFlowNode.flags &
|
|
@@ -3063,7 +3063,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
3063
3063
|
// state so that hits from later cells are correctly marked.
|
|
3064
3064
|
return (name, context) => {
|
|
3065
3065
|
for (const moduleNode of cellChainIndex.getLaterModuleNodes(fileUri) ?? []) {
|
|
3066
|
-
const moduleScope =
|
|
3066
|
+
const moduleScope = this._nodeInfo.getScope(moduleNode);
|
|
3067
3067
|
if (!moduleScope) {
|
|
3068
3068
|
continue;
|
|
3069
3069
|
}
|
|
@@ -3335,8 +3335,8 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
3335
3335
|
_isKnownAnnotation(typeAnnotation, name, importAliases, symbolAliases) {
|
|
3336
3336
|
let annotationNode = typeAnnotation;
|
|
3337
3337
|
// Is this a quoted annotation?
|
|
3338
|
-
if (annotationNode.nodeType === 48 /* ParseNodeType.StringList */
|
|
3339
|
-
annotationNode =
|
|
3338
|
+
if (annotationNode.nodeType === 48 /* ParseNodeType.StringList */) {
|
|
3339
|
+
annotationNode = this._nodeInfo.getStringAnnotation(annotationNode) ?? annotationNode;
|
|
3340
3340
|
}
|
|
3341
3341
|
if (annotationNode.nodeType === 38 /* ParseNodeType.Name */) {
|
|
3342
3342
|
const alias = symbolAliases.get(annotationNode.d.value);
|
|
@@ -3408,8 +3408,8 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
3408
3408
|
let classVarTypeNode;
|
|
3409
3409
|
while (typeAnnotation) {
|
|
3410
3410
|
// Is this a quoted annotation?
|
|
3411
|
-
if (typeAnnotation.nodeType === 48 /* ParseNodeType.StringList */
|
|
3412
|
-
typeAnnotation =
|
|
3411
|
+
if (typeAnnotation.nodeType === 48 /* ParseNodeType.StringList */) {
|
|
3412
|
+
typeAnnotation = this._nodeInfo.getStringAnnotation(typeAnnotation) ?? typeAnnotation;
|
|
3413
3413
|
}
|
|
3414
3414
|
if (typeAnnotation.nodeType === 27 /* ParseNodeType.Index */ &&
|
|
3415
3415
|
typeAnnotation.d.items.length > 0 &&
|
|
@@ -3508,7 +3508,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
3508
3508
|
}
|
|
3509
3509
|
}
|
|
3510
3510
|
}
|
|
3511
|
-
const classScope =
|
|
3511
|
+
const classScope = this._nodeInfo.getScope(classNode);
|
|
3512
3512
|
(0, debug_1.assert)(classScope !== undefined);
|
|
3513
3513
|
return {
|
|
3514
3514
|
classNode,
|
|
@@ -3715,7 +3715,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
3715
3715
|
if (symbol) {
|
|
3716
3716
|
symbol.addDeclaration(specialBuiltInClassDeclaration);
|
|
3717
3717
|
}
|
|
3718
|
-
|
|
3718
|
+
this._nodeInfo.setDeclaration(node, specialBuiltInClassDeclaration);
|
|
3719
3719
|
return true;
|
|
3720
3720
|
}
|
|
3721
3721
|
_deferBinding(callback) {
|
|
@@ -3759,7 +3759,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
3759
3759
|
if (node.d.expr) {
|
|
3760
3760
|
this.walk(node.d.expr);
|
|
3761
3761
|
}
|
|
3762
|
-
|
|
3762
|
+
this._nodeInfo.setFlowNode(node, this._currentFlowNode);
|
|
3763
3763
|
}
|
|
3764
3764
|
_getUniqueFlowNodeId() {
|
|
3765
3765
|
this._codeFlowComplexity += flowNodeComplexityContribution;
|
|
@@ -3838,16 +3838,17 @@ exports.ReturnFinder = ReturnFinder;
|
|
|
3838
3838
|
// will still evaluate these types, and it depends on the presence
|
|
3839
3839
|
// of a scope.
|
|
3840
3840
|
class DummyScopeGenerator extends parseTreeWalker_1.ParseTreeWalker {
|
|
3841
|
-
constructor(currentScope) {
|
|
3841
|
+
constructor(currentScope, _nodeInfo) {
|
|
3842
3842
|
super();
|
|
3843
|
+
this._nodeInfo = _nodeInfo;
|
|
3843
3844
|
this._currentScope = currentScope;
|
|
3844
3845
|
}
|
|
3845
3846
|
visitClass(node) {
|
|
3846
3847
|
const newScope = this._createNewScope(3 /* ScopeType.Class */, () => {
|
|
3847
3848
|
this.walk(node.d.suite);
|
|
3848
3849
|
});
|
|
3849
|
-
if (!
|
|
3850
|
-
|
|
3850
|
+
if (!this._nodeInfo.getScope(node)) {
|
|
3851
|
+
this._nodeInfo.setScope(node, newScope);
|
|
3851
3852
|
}
|
|
3852
3853
|
return false;
|
|
3853
3854
|
}
|
|
@@ -3855,8 +3856,8 @@ class DummyScopeGenerator extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
3855
3856
|
const newScope = this._createNewScope(2 /* ScopeType.Function */, () => {
|
|
3856
3857
|
this.walk(node.d.suite);
|
|
3857
3858
|
});
|
|
3858
|
-
if (!
|
|
3859
|
-
|
|
3859
|
+
if (!this._nodeInfo.getScope(node)) {
|
|
3860
|
+
this._nodeInfo.setScope(node, newScope);
|
|
3860
3861
|
}
|
|
3861
3862
|
return false;
|
|
3862
3863
|
}
|