@zzzen/pyright-internal 1.2.0-dev.20221016 → 1.2.0-dev.20221204
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/backgroundAnalysisProgram.d.ts +7 -9
- package/dist/analyzer/backgroundAnalysisProgram.js +14 -52
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.js +43 -32
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +15 -3
- package/dist/analyzer/checker.js +260 -143
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +2 -2
- package/dist/analyzer/codeFlowEngine.js +85 -88
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowTypes.d.ts +1 -0
- package/dist/analyzer/codeFlowTypes.js +3 -1
- package/dist/analyzer/codeFlowTypes.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +11 -1
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/dataClasses.d.ts +3 -3
- package/dist/analyzer/dataClasses.js +92 -59
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declaration.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +1 -1
- package/dist/analyzer/declarationUtils.js +6 -4
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/docStringConversion.js +7 -5
- package/dist/analyzer/docStringConversion.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +3 -0
- package/dist/analyzer/importResolver.js +50 -8
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importResult.d.ts +1 -0
- package/dist/analyzer/namedTuples.js +1 -1
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.d.ts +2 -1
- package/dist/analyzer/packageTypeVerifier.js +16 -10
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +2 -1
- package/dist/analyzer/parseTreeUtils.js +38 -3
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.d.ts +86 -79
- package/dist/analyzer/parseTreeWalker.js +384 -201
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/program.d.ts +4 -7
- package/dist/analyzer/program.js +84 -79
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +10 -3
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +1 -1
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/regions.d.ts +11 -0
- package/dist/analyzer/regions.js +57 -0
- package/dist/analyzer/regions.js.map +1 -0
- package/dist/analyzer/service.d.ts +11 -6
- package/dist/analyzer/service.js +127 -65
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +5 -2
- package/dist/analyzer/sourceFile.js +23 -10
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +1 -1
- package/dist/analyzer/sourceFileInfoUtils.js +1 -1
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/sourceMapper.d.ts +6 -1
- package/dist/analyzer/sourceMapper.js +28 -5
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/sourceMapperUtils.d.ts +2 -1
- package/dist/analyzer/sourceMapperUtils.js +17 -5
- package/dist/analyzer/sourceMapperUtils.js.map +1 -1
- package/dist/analyzer/staticExpressions.js +19 -9
- package/dist/analyzer/staticExpressions.js.map +1 -1
- package/dist/analyzer/symbolUtils.d.ts +1 -0
- package/dist/analyzer/symbolUtils.js +5 -1
- package/dist/analyzer/symbolUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +664 -257
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +16 -4
- package/dist/analyzer/typeGuards.js +9 -0
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.d.ts +3 -1
- package/dist/analyzer/typePrinter.js +143 -28
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeStubWriter.js +5 -1
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +4 -2
- package/dist/analyzer/typeUtils.js +114 -20
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +8 -6
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +7 -5
- package/dist/analyzer/types.js +45 -20
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +6 -4
- package/dist/backgroundAnalysisBase.js +30 -9
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.d.ts +2 -1
- package/dist/backgroundThreadBase.js +4 -0
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/commands/createTypeStub.js +3 -1
- package/dist/commands/createTypeStub.js.map +1 -1
- package/dist/common/configOptions.d.ts +1 -0
- package/dist/common/configOptions.js +4 -0
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/core.d.ts +2 -0
- package/dist/common/core.js +24 -3
- package/dist/common/core.js.map +1 -1
- package/dist/common/diagnostic.d.ts +8 -0
- package/dist/common/diagnostic.js +5 -1
- package/dist/common/diagnostic.js.map +1 -1
- package/dist/common/diagnosticRules.d.ts +2 -1
- package/dist/common/diagnosticRules.js +1 -0
- package/dist/common/diagnosticRules.js.map +1 -1
- package/dist/common/fileSystem.d.ts +1 -0
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/pathUtils.d.ts +1 -0
- package/dist/common/pathUtils.js +17 -4
- package/dist/common/pathUtils.js.map +1 -1
- package/dist/common/pythonVersion.d.ts +1 -1
- package/dist/common/pythonVersion.js +1 -1
- package/dist/common/realFileSystem.js +12 -3
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/workspaceEditUtils.d.ts +6 -1
- package/dist/common/workspaceEditUtils.js +72 -1
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +16 -8
- package/dist/languageServerBase.js +76 -32
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.d.ts +6 -2
- package/dist/languageService/analyzerServiceExecutor.js +8 -6
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/autoImporter.js +2 -1
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/codeActionProvider.js +30 -0
- package/dist/languageService/codeActionProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +2 -0
- package/dist/languageService/completionProvider.js +84 -32
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.d.ts +2 -0
- package/dist/languageService/definitionProvider.js +3 -0
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.js +7 -3
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +1 -1
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +1 -1
- package/dist/languageService/hoverProvider.js +73 -38
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/indentationUtils.d.ts +3 -0
- package/dist/languageService/indentationUtils.js +4 -3
- package/dist/languageService/indentationUtils.js.map +1 -1
- package/dist/languageService/referencesProvider.js +2 -1
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +1 -2
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +30 -19
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/localization/localize.d.ts +29 -4
- package/dist/localization/localize.js +20 -5
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +18 -3
- package/dist/parser/parseNodes.d.ts +2 -1
- package/dist/parser/parseNodes.js +6 -1
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.js +29 -15
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/tokenizer.js +19 -9
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/pyright.js +4 -4
- package/dist/pyright.js.map +1 -1
- package/dist/pyrightFileSystem.d.ts +1 -0
- package/dist/pyrightFileSystem.js +3 -0
- package/dist/pyrightFileSystem.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.d.ts +1 -0
- package/dist/readonlyAugmentedFileSystem.js +3 -0
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +2 -0
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/checker.test.js +26 -3
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/config.test.js +11 -0
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/diagnostics.test.d.ts +1 -0
- package/dist/tests/diagnostics.test.js +37 -0
- package/dist/tests/diagnostics.test.js.map +1 -0
- package/dist/tests/docStringConversion.test.js +71 -12
- package/dist/tests/docStringConversion.test.js.map +1 -1
- package/dist/tests/fourslash/completions.autoimport.shadow.fourslash.js +1 -1
- package/dist/tests/fourslash/completions.autoimport.shadow.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.builtinDocstrings.fourslash.js +5 -5
- package/dist/tests/fourslash/completions.builtinDocstrings.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.classVariable.fourslash.js +119 -24
- package/dist/tests/fourslash/completions.classVariable.fourslash.js.map +1 -1
- package/dist/tests/fourslash/{signature.paramspec.fourslash.d.ts → completions.dunderNew.Inheritance.fourslash.d.ts} +0 -0
- package/dist/tests/fourslash/completions.dunderNew.Inheritance.fourslash.js +29 -0
- package/dist/tests/fourslash/completions.dunderNew.Inheritance.fourslash.js.map +1 -0
- package/dist/tests/fourslash/completions.dunderNew.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.dunderNew.fourslash.js +20 -0
- package/dist/tests/fourslash/completions.dunderNew.fourslash.js.map +1 -0
- package/dist/tests/fourslash/completions.fourslash.js +2 -2
- package/dist/tests/fourslash/completions.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.libCodeAndStub.fourslash.js +1 -1
- package/dist/tests/fourslash/completions.libCodeAndStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.libCodeNoStub.fourslash.js +1 -1
- package/dist/tests/fourslash/completions.libCodeNoStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.libStub.fourslash.js +1 -1
- package/dist/tests/fourslash/completions.libStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.localCode.fourslash.js +2 -2
- package/dist/tests/fourslash/completions.localCode.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.plainText.fourslash.js +2 -2
- package/dist/tests/fourslash/completions.plainText.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.self.fourslash.js +2 -2
- package/dist/tests/fourslash/completions.self.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.wildcardimports.fourslash.js +1 -1
- package/dist/tests/fourslash/completions.wildcardimports.fourslash.js.map +1 -1
- package/dist/tests/fourslash/findDefinitions.namespaceImport.fourslash.js +2 -2
- package/dist/tests/fourslash/findDefinitions.namespaceImport.fourslash.js.map +1 -1
- package/dist/tests/fourslash/findDefinitions.namespaceImportWithInit.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/findDefinitions.namespaceImportWithInit.fourslash.js +32 -0
- package/dist/tests/fourslash/findDefinitions.namespaceImportWithInit.fourslash.js.map +1 -0
- package/dist/tests/fourslash/fourslash.d.ts +2 -1
- package/dist/tests/fourslash/hover.builtinDocstrings.fourslash.js +2 -2
- package/dist/tests/fourslash/hover.builtinDocstrings.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.fourslash.js +4 -4
- package/dist/tests/fourslash/hover.docFromSrc.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js +2 -2
- package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.typeshed.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.docFromSrc.typeshed.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docstring.alias.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.docstring.alias.fourslash.js +24 -0
- package/dist/tests/fourslash/hover.docstring.alias.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.docstring.links.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.docstring.links.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docstring.split.fourslash.js +3 -3
- package/dist/tests/fourslash/hover.docstring.split.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.dunderNew.basic.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.dunderNew.basic.fourslash.js +13 -0
- package/dist/tests/fourslash/hover.dunderNew.basic.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.dunderNew.inheritance.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.dunderNew.inheritance.fourslash.js +15 -0
- package/dist/tests/fourslash/hover.dunderNew.inheritance.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.dunderNew.inheritance2.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.dunderNew.inheritance2.fourslash.js +21 -0
- package/dist/tests/fourslash/hover.dunderNew.inheritance2.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.dunderNew.overloads.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.dunderNew.overloads.fourslash.js +17 -0
- package/dist/tests/fourslash/hover.dunderNew.overloads.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.dunderNew.withInit.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.dunderNew.withInit.fourslash.js +15 -0
- package/dist/tests/fourslash/hover.dunderNew.withInit.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js +3 -3
- package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.js +2 -2
- package/dist/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js +2 -2
- package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.init.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.init.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.libCodeAndStub.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.libCodeAndStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.libCodeNoStub.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.libCodeNoStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.libStub.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.libStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.plainText.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.plainText.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.wildcardimports.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.wildcardimports.fourslash.js.map +1 -1
- package/dist/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.js +1 -1
- package/dist/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.js.map +1 -1
- package/dist/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.js +1 -1
- package/dist/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.js.map +1 -1
- package/dist/tests/fourslash/shadowedImports.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/shadowedImports.fourslash.js +75 -0
- package/dist/tests/fourslash/shadowedImports.fourslash.js.map +1 -0
- package/dist/tests/fourslash/signature.dunderNew.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/signature.dunderNew.fourslash.js +24 -0
- package/dist/tests/fourslash/signature.dunderNew.fourslash.js.map +1 -0
- package/dist/tests/harness/fourslash/runner.js +1 -1
- package/dist/tests/harness/fourslash/runner.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.d.ts +3 -1
- package/dist/tests/harness/fourslash/testLanguageService.js +5 -4
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +7 -7
- package/dist/tests/harness/fourslash/testState.js +79 -163
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/fourslash/workspaceEditTestUtils.d.ts +16 -0
- package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +159 -0
- package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -0
- package/dist/tests/harness/vfs/filesystem.d.ts +1 -0
- package/dist/tests/harness/vfs/filesystem.js +3 -0
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/indentationUtils.ptvs.test.js +1 -1
- package/dist/tests/indentationUtils.test.js +4 -4
- package/dist/tests/ipythonMode.test.js +39 -0
- package/dist/tests/ipythonMode.test.js.map +1 -1
- package/dist/tests/logger.test.js +3 -1
- package/dist/tests/logger.test.js.map +1 -1
- package/dist/tests/parser.test.js +3 -3
- package/dist/tests/pathUtils.test.js +7 -0
- package/dist/tests/pathUtils.test.js.map +1 -1
- package/dist/tests/service.test.d.ts +1 -0
- package/dist/tests/service.test.js +159 -0
- package/dist/tests/service.test.js.map +1 -0
- package/dist/tests/sourceFile.test.js +34 -1
- package/dist/tests/sourceFile.test.js.map +1 -1
- package/dist/tests/sourceMapperUtils.test.js +39 -4
- package/dist/tests/sourceMapperUtils.test.js.map +1 -1
- package/dist/tests/tokenizer.test.js +6 -2
- package/dist/tests/tokenizer.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +16 -6
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +15 -3
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +51 -11
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +11 -7
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +48 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/typePrinter.test.d.ts +1 -0
- package/dist/tests/typePrinter.test.js +148 -0
- package/dist/tests/typePrinter.test.js.map +1 -0
- package/dist/tests/workspaceEditUtils.test.d.ts +1 -0
- package/dist/tests/workspaceEditUtils.test.js +167 -0
- package/dist/tests/workspaceEditUtils.test.js.map +1 -0
- package/dist/workspaceMap.d.ts +4 -1
- package/dist/workspaceMap.js +64 -16
- package/dist/workspaceMap.js.map +1 -1
- package/package.json +3 -3
- package/dist/tests/fourslash/signature.paramspec.fourslash.js +0 -30
- package/dist/tests/fourslash/signature.paramspec.fourslash.js.map +0 -1
@@ -0,0 +1,148 @@
|
|
1
|
+
"use strict";
|
2
|
+
/*
|
3
|
+
* typePrinter.test.ts
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
5
|
+
* Licensed under the MIT license.
|
6
|
+
* Author: Eric Traut
|
7
|
+
*
|
8
|
+
* Unit tests for typePrinter module.
|
9
|
+
*/
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
11
|
+
if (k2 === undefined) k2 = k;
|
12
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
13
|
+
}) : (function(o, m, k, k2) {
|
14
|
+
if (k2 === undefined) k2 = k;
|
15
|
+
o[k2] = m[k];
|
16
|
+
}));
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
19
|
+
}) : function(o, v) {
|
20
|
+
o["default"] = v;
|
21
|
+
});
|
22
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
23
|
+
if (mod && mod.__esModule) return mod;
|
24
|
+
var result = {};
|
25
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
26
|
+
__setModuleDefault(result, mod);
|
27
|
+
return result;
|
28
|
+
};
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
30
|
+
const assert = __importStar(require("assert"));
|
31
|
+
const typePrinter_1 = require("../analyzer/typePrinter");
|
32
|
+
const types_1 = require("../analyzer/types");
|
33
|
+
function returnTypeCallback(type) {
|
34
|
+
var _a;
|
35
|
+
return (_a = type.details.declaredReturnType) !== null && _a !== void 0 ? _a : types_1.UnknownType.create(/* isEllipsis */ true);
|
36
|
+
}
|
37
|
+
test('SimpleTypes', () => {
|
38
|
+
const anyType = types_1.AnyType.create(/* isEllipsis */ false);
|
39
|
+
assert.strictEqual((0, typePrinter_1.printType)(anyType, 0 /* None */, returnTypeCallback), 'Any');
|
40
|
+
const ellipsisType = types_1.AnyType.create(/* isEllipsis */ true);
|
41
|
+
assert.strictEqual((0, typePrinter_1.printType)(ellipsisType, 0 /* None */, returnTypeCallback), '...');
|
42
|
+
const unknownType = types_1.UnknownType.create();
|
43
|
+
assert.strictEqual((0, typePrinter_1.printType)(unknownType, 0 /* None */, returnTypeCallback), 'Unknown');
|
44
|
+
assert.strictEqual((0, typePrinter_1.printType)(unknownType, 1 /* PrintUnknownWithAny */, returnTypeCallback), 'Any');
|
45
|
+
assert.strictEqual((0, typePrinter_1.printType)(unknownType, 256 /* PythonSyntax */, returnTypeCallback), 'Any');
|
46
|
+
const unboundType = types_1.UnboundType.create();
|
47
|
+
assert.strictEqual((0, typePrinter_1.printType)(unboundType, 0 /* None */, returnTypeCallback), 'Unbound');
|
48
|
+
assert.strictEqual((0, typePrinter_1.printType)(unboundType, 256 /* PythonSyntax */, returnTypeCallback), 'Any');
|
49
|
+
const noneInstanceType = types_1.NoneType.createInstance();
|
50
|
+
assert.strictEqual((0, typePrinter_1.printType)(noneInstanceType, 0 /* None */, returnTypeCallback), 'None');
|
51
|
+
const noneInstantiableType = types_1.NoneType.createType();
|
52
|
+
assert.strictEqual((0, typePrinter_1.printType)(noneInstantiableType, 0 /* None */, returnTypeCallback), 'Type[None]');
|
53
|
+
const moduleType = types_1.ModuleType.create('Test', '');
|
54
|
+
assert.strictEqual((0, typePrinter_1.printType)(moduleType, 0 /* None */, returnTypeCallback), 'Module("Test")');
|
55
|
+
assert.strictEqual((0, typePrinter_1.printType)(moduleType, 256 /* PythonSyntax */, returnTypeCallback), 'Any');
|
56
|
+
});
|
57
|
+
test('TypeVarTypes', () => {
|
58
|
+
const typeVarType = types_1.TypeVarType.createInstance('T');
|
59
|
+
assert.strictEqual((0, typePrinter_1.printType)(typeVarType, 0 /* None */, returnTypeCallback), 'T');
|
60
|
+
const paramSpecType = types_1.TypeVarType.createInstance('P');
|
61
|
+
paramSpecType.details.isParamSpec = true;
|
62
|
+
assert.strictEqual((0, typePrinter_1.printType)(paramSpecType, 0 /* None */, returnTypeCallback), 'P');
|
63
|
+
const typeVarTupleType = types_1.TypeVarType.createInstance('Ts');
|
64
|
+
paramSpecType.details.isVariadic = true;
|
65
|
+
assert.strictEqual((0, typePrinter_1.printType)(typeVarTupleType, 0 /* None */, returnTypeCallback), 'Ts');
|
66
|
+
});
|
67
|
+
test('ClassTypes', () => {
|
68
|
+
const classTypeA = types_1.ClassType.createInstantiable('A', '', '', '', 0 /* None */, 0,
|
69
|
+
/* declaredMetaclass*/ undefined,
|
70
|
+
/* effectiveMetaclass */ undefined);
|
71
|
+
const typeVarS = types_1.TypeVarType.createInstance('S');
|
72
|
+
const typeVarT = types_1.TypeVarType.createInstance('T');
|
73
|
+
classTypeA.details.typeParameters.push(typeVarS, typeVarT);
|
74
|
+
assert.strictEqual((0, typePrinter_1.printType)(classTypeA, 0 /* None */, returnTypeCallback), 'Type[A[S, T]]');
|
75
|
+
const instanceA = types_1.ClassType.cloneAsInstance(classTypeA);
|
76
|
+
assert.strictEqual((0, typePrinter_1.printType)(instanceA, 0 /* None */, returnTypeCallback), 'A[S, T]');
|
77
|
+
const classTypeInt = types_1.ClassType.createInstantiable('int', '', '', '', 0 /* None */, 0,
|
78
|
+
/* declaredMetaclass*/ undefined,
|
79
|
+
/* effectiveMetaclass */ undefined);
|
80
|
+
const instanceInt = types_1.ClassType.cloneAsInstance(classTypeInt);
|
81
|
+
const specializedA = types_1.ClassType.cloneForSpecialization(instanceA, [instanceInt, instanceInt],
|
82
|
+
/* isTypeArgumentExplicit */ true);
|
83
|
+
assert.strictEqual((0, typePrinter_1.printType)(specializedA, 0 /* None */, returnTypeCallback), 'A[int, int]');
|
84
|
+
const unionType = (0, types_1.combineTypes)([instanceInt, specializedA, typeVarS]);
|
85
|
+
assert.strictEqual((0, typePrinter_1.printType)(unionType, 0 /* None */, returnTypeCallback), 'Union[int, A[int, int], S]');
|
86
|
+
assert.strictEqual((0, typePrinter_1.printType)(unionType, 8 /* PEP604 */, returnTypeCallback), 'int | A[int, int] | S');
|
87
|
+
});
|
88
|
+
test('FunctionTypes', () => {
|
89
|
+
const funcTypeA = types_1.FunctionType.createInstance('A', '', '', 0 /* None */);
|
90
|
+
types_1.FunctionType.addParameter(funcTypeA, {
|
91
|
+
category: 0 /* Simple */,
|
92
|
+
hasDeclaredType: true,
|
93
|
+
type: types_1.NoneType.createInstance(),
|
94
|
+
name: 'a',
|
95
|
+
});
|
96
|
+
types_1.FunctionType.addParameter(funcTypeA, {
|
97
|
+
category: 0 /* Simple */,
|
98
|
+
hasDeclaredType: true,
|
99
|
+
type: types_1.AnyType.create(),
|
100
|
+
});
|
101
|
+
types_1.FunctionType.addParameter(funcTypeA, {
|
102
|
+
category: 1 /* VarArgList */,
|
103
|
+
hasDeclaredType: true,
|
104
|
+
type: types_1.AnyType.create(),
|
105
|
+
name: 'args',
|
106
|
+
});
|
107
|
+
types_1.FunctionType.addParameter(funcTypeA, {
|
108
|
+
category: 2 /* VarArgDictionary */,
|
109
|
+
hasDeclaredType: true,
|
110
|
+
type: types_1.AnyType.create(),
|
111
|
+
name: 'kwargs',
|
112
|
+
});
|
113
|
+
funcTypeA.details.declaredReturnType = types_1.NoneType.createInstance();
|
114
|
+
assert.strictEqual((0, typePrinter_1.printType)(funcTypeA, 0 /* None */, returnTypeCallback), '(a: None, /, *args: Any, **kwargs: Any) -> None');
|
115
|
+
assert.strictEqual((0, typePrinter_1.printType)(funcTypeA, 256 /* PythonSyntax */, returnTypeCallback), 'Callable[..., None]');
|
116
|
+
const funcTypeB = types_1.FunctionType.createInstance('B', '', '', 0 /* None */);
|
117
|
+
types_1.FunctionType.addParameter(funcTypeB, {
|
118
|
+
category: 0 /* Simple */,
|
119
|
+
hasDeclaredType: true,
|
120
|
+
type: types_1.NoneType.createInstance(),
|
121
|
+
name: 'a',
|
122
|
+
});
|
123
|
+
types_1.FunctionType.addParameter(funcTypeB, {
|
124
|
+
category: 0 /* Simple */,
|
125
|
+
hasDeclaredType: true,
|
126
|
+
type: types_1.NoneType.createInstance(),
|
127
|
+
});
|
128
|
+
const paramSpecP = types_1.TypeVarType.createInstance('P');
|
129
|
+
paramSpecP.details.isParamSpec = true;
|
130
|
+
funcTypeB.details.paramSpec = paramSpecP;
|
131
|
+
funcTypeB.details.declaredReturnType = types_1.NoneType.createInstance();
|
132
|
+
assert.strictEqual((0, typePrinter_1.printType)(funcTypeB, 0 /* None */, returnTypeCallback), '(a: None, /, **P) -> None');
|
133
|
+
assert.strictEqual((0, typePrinter_1.printType)(funcTypeB, 256 /* PythonSyntax */, returnTypeCallback), 'Callable[Concatenate[None, P], None]');
|
134
|
+
const funcTypeC = types_1.FunctionType.createInstance('C', '', '', 0 /* None */);
|
135
|
+
const typeVarTupleTs = types_1.TypeVarType.createInstance('Ts');
|
136
|
+
typeVarTupleTs.details.isVariadic = true;
|
137
|
+
const unpackedTs = types_1.TypeVarType.cloneForUnpacked(typeVarTupleTs);
|
138
|
+
types_1.FunctionType.addParameter(funcTypeC, {
|
139
|
+
category: 1 /* VarArgList */,
|
140
|
+
hasDeclaredType: true,
|
141
|
+
type: unpackedTs,
|
142
|
+
name: 'args',
|
143
|
+
});
|
144
|
+
assert.strictEqual((0, typePrinter_1.printType)(funcTypeC, 0 /* None */, returnTypeCallback), '(*args: *Ts) -> Unknown');
|
145
|
+
assert.strictEqual((0, typePrinter_1.printType)(funcTypeC, 512 /* UseTypingUnpack */, returnTypeCallback), '(*args: Unpack[Ts]) -> Unknown');
|
146
|
+
assert.strictEqual((0, typePrinter_1.printType)(funcTypeC, 256 /* PythonSyntax */, returnTypeCallback), 'Callable[..., Any]');
|
147
|
+
});
|
148
|
+
//# sourceMappingURL=typePrinter.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"typePrinter.test.js","sourceRoot":"","sources":["../../../src/tests/typePrinter.test.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,167 @@
|
|
1
|
+
"use strict";
|
2
|
+
/*
|
3
|
+
* workspaceEditUtils.test.ts
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
5
|
+
* Licensed under the MIT license.
|
6
|
+
*
|
7
|
+
* test workspaceEditUtils
|
8
|
+
*/
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
12
|
+
}) : (function(o, m, k, k2) {
|
13
|
+
if (k2 === undefined) k2 = k;
|
14
|
+
o[k2] = m[k];
|
15
|
+
}));
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
18
|
+
}) : function(o, v) {
|
19
|
+
o["default"] = v;
|
20
|
+
});
|
21
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
22
|
+
if (mod && mod.__esModule) return mod;
|
23
|
+
var result = {};
|
24
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
25
|
+
__setModuleDefault(result, mod);
|
26
|
+
return result;
|
27
|
+
};
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
+
const assert = __importStar(require("assert"));
|
30
|
+
const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
31
|
+
const pathUtils_1 = require("../common/pathUtils");
|
32
|
+
const workspaceEditUtils_1 = require("../common/workspaceEditUtils");
|
33
|
+
const analyzerServiceExecutor_1 = require("../languageService/analyzerServiceExecutor");
|
34
|
+
const testLanguageService_1 = require("./harness/fourslash/testLanguageService");
|
35
|
+
const testState_1 = require("./harness/fourslash/testState");
|
36
|
+
const workspaceEditTestUtils_1 = require("./harness/fourslash/workspaceEditTestUtils");
|
37
|
+
test('test applyWorkspaceEdits changes', async () => {
|
38
|
+
var _a;
|
39
|
+
const code = `
|
40
|
+
// @filename: test.py
|
41
|
+
//// [|/*marker*/|]
|
42
|
+
`;
|
43
|
+
const state = (0, testState_1.parseAndGetTestState)(code).state;
|
44
|
+
const cloned = await getClonedService(state);
|
45
|
+
const range = state.getRangeByMarkerName('marker');
|
46
|
+
const fileChanged = new Set();
|
47
|
+
(0, workspaceEditUtils_1.applyWorkspaceEdits)(cloned, {
|
48
|
+
changes: {
|
49
|
+
[(0, pathUtils_1.convertPathToUri)(cloned.fs, range.fileName)]: [
|
50
|
+
{
|
51
|
+
range: state.convertPositionRange(range),
|
52
|
+
newText: 'Text Changed',
|
53
|
+
},
|
54
|
+
],
|
55
|
+
},
|
56
|
+
}, fileChanged);
|
57
|
+
assert.strictEqual(fileChanged.size, 1);
|
58
|
+
assert.strictEqual((_a = cloned.test_program.getSourceFile(range.fileName)) === null || _a === void 0 ? void 0 : _a.getFileContent(), 'Text Changed');
|
59
|
+
});
|
60
|
+
test('test applyWorkspaceEdits documentChanges', async () => {
|
61
|
+
var _a;
|
62
|
+
const code = `
|
63
|
+
// @filename: test.py
|
64
|
+
//// [|/*marker*/|]
|
65
|
+
`;
|
66
|
+
const state = (0, testState_1.parseAndGetTestState)(code).state;
|
67
|
+
const cloned = await getClonedService(state);
|
68
|
+
const range = state.getRangeByMarkerName('marker');
|
69
|
+
const fileChanged = new Set();
|
70
|
+
(0, workspaceEditUtils_1.applyWorkspaceEdits)(cloned, {
|
71
|
+
documentChanges: [
|
72
|
+
vscode_languageserver_types_1.TextDocumentEdit.create({
|
73
|
+
uri: (0, pathUtils_1.convertPathToUri)(cloned.fs, range.fileName),
|
74
|
+
version: null,
|
75
|
+
}, [
|
76
|
+
{
|
77
|
+
range: state.convertPositionRange(range),
|
78
|
+
newText: 'Text Changed',
|
79
|
+
},
|
80
|
+
]),
|
81
|
+
],
|
82
|
+
}, fileChanged);
|
83
|
+
assert.strictEqual(fileChanged.size, 1);
|
84
|
+
assert.strictEqual((_a = cloned.test_program.getSourceFile(range.fileName)) === null || _a === void 0 ? void 0 : _a.getFileContent(), 'Text Changed');
|
85
|
+
});
|
86
|
+
test('test generateWorkspaceEdits', async () => {
|
87
|
+
const code = `
|
88
|
+
// @filename: test1.py
|
89
|
+
//// [|/*marker1*/|]
|
90
|
+
|
91
|
+
// @filename: test2.py
|
92
|
+
//// [|/*marker2*/|]
|
93
|
+
`;
|
94
|
+
const state = (0, testState_1.parseAndGetTestState)(code).state;
|
95
|
+
const cloned = await getClonedService(state);
|
96
|
+
const range1 = state.getRangeByMarkerName('marker1');
|
97
|
+
const fileChanged = new Set();
|
98
|
+
(0, workspaceEditUtils_1.applyWorkspaceEdits)(cloned, {
|
99
|
+
changes: {
|
100
|
+
[(0, pathUtils_1.convertPathToUri)(cloned.fs, range1.fileName)]: [
|
101
|
+
{
|
102
|
+
range: state.convertPositionRange(range1),
|
103
|
+
newText: 'Test1 Changed',
|
104
|
+
},
|
105
|
+
],
|
106
|
+
},
|
107
|
+
}, fileChanged);
|
108
|
+
(0, workspaceEditUtils_1.applyWorkspaceEdits)(cloned, {
|
109
|
+
documentChanges: [
|
110
|
+
vscode_languageserver_types_1.TextDocumentEdit.create({
|
111
|
+
uri: (0, pathUtils_1.convertPathToUri)(cloned.fs, range1.fileName),
|
112
|
+
version: null,
|
113
|
+
}, [
|
114
|
+
{
|
115
|
+
range: { start: { line: 0, character: 0 }, end: { line: 0, character: 5 } },
|
116
|
+
newText: 'NewTest1',
|
117
|
+
},
|
118
|
+
]),
|
119
|
+
],
|
120
|
+
}, fileChanged);
|
121
|
+
const range2 = state.getRangeByMarkerName('marker2');
|
122
|
+
(0, workspaceEditUtils_1.applyWorkspaceEdits)(cloned, {
|
123
|
+
documentChanges: [
|
124
|
+
vscode_languageserver_types_1.TextDocumentEdit.create({
|
125
|
+
uri: (0, pathUtils_1.convertPathToUri)(cloned.fs, range2.fileName),
|
126
|
+
version: null,
|
127
|
+
}, [
|
128
|
+
{
|
129
|
+
range: state.convertPositionRange(range2),
|
130
|
+
newText: 'Test2 Changed',
|
131
|
+
},
|
132
|
+
]),
|
133
|
+
],
|
134
|
+
}, fileChanged);
|
135
|
+
(0, workspaceEditUtils_1.applyWorkspaceEdits)(cloned, {
|
136
|
+
changes: {
|
137
|
+
[(0, pathUtils_1.convertPathToUri)(cloned.fs, range2.fileName)]: [
|
138
|
+
{
|
139
|
+
range: { start: { line: 0, character: 0 }, end: { line: 0, character: 5 } },
|
140
|
+
newText: 'NewTest2',
|
141
|
+
},
|
142
|
+
],
|
143
|
+
},
|
144
|
+
}, fileChanged);
|
145
|
+
assert.strictEqual(fileChanged.size, 2);
|
146
|
+
const actualEdits = (0, workspaceEditUtils_1.generateWorkspaceEdits)(state.workspace.serviceInstance, cloned, fileChanged);
|
147
|
+
(0, workspaceEditTestUtils_1.verifyWorkspaceEdit)({
|
148
|
+
changes: {
|
149
|
+
[(0, pathUtils_1.convertPathToUri)(cloned.fs, range1.fileName)]: [
|
150
|
+
{
|
151
|
+
range: state.convertPositionRange(range1),
|
152
|
+
newText: 'NewTest1 Changed',
|
153
|
+
},
|
154
|
+
],
|
155
|
+
[(0, pathUtils_1.convertPathToUri)(cloned.fs, range2.fileName)]: [
|
156
|
+
{
|
157
|
+
range: state.convertPositionRange(range1),
|
158
|
+
newText: 'NewTest2 Changed',
|
159
|
+
},
|
160
|
+
],
|
161
|
+
},
|
162
|
+
}, actualEdits);
|
163
|
+
});
|
164
|
+
async function getClonedService(state) {
|
165
|
+
return await analyzerServiceExecutor_1.AnalyzerServiceExecutor.cloneService(new testLanguageService_1.TestLanguageService(state.workspace, state.console, state.workspace.serviceInstance.fs), state.workspace, { useBackgroundAnalysis: false });
|
166
|
+
}
|
167
|
+
//# sourceMappingURL=workspaceEditUtils.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"workspaceEditUtils.test.js","sourceRoot":"","sources":["../../../src/tests/workspaceEditUtils.test.ts"],"names":[],"mappings":"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"}
|
package/dist/workspaceMap.d.ts
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
import { LanguageServerBase, WorkspaceServiceInstance } from './languageServerBase';
|
2
2
|
export declare class WorkspaceMap extends Map<string, WorkspaceServiceInstance> {
|
3
3
|
private _defaultWorkspacePath;
|
4
|
+
set(key: string, value: WorkspaceServiceInstance): this;
|
4
5
|
delete(key: string): boolean;
|
5
6
|
hasMultipleWorkspaces(kind?: string): boolean;
|
6
7
|
getNonDefaultWorkspaces(kind?: string): WorkspaceServiceInstance[];
|
7
|
-
getWorkspaceForFile(ls: LanguageServerBase, filePath: string): WorkspaceServiceInstance
|
8
|
+
getWorkspaceForFile(ls: LanguageServerBase, filePath: string): Promise<WorkspaceServiceInstance>;
|
9
|
+
getContainingWorkspace(filePath: string): WorkspaceServiceInstance | undefined;
|
10
|
+
private _getBestWorkspace;
|
8
11
|
}
|
package/dist/workspaceMap.js
CHANGED
@@ -6,18 +6,24 @@
|
|
6
6
|
*/
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
8
8
|
exports.WorkspaceMap = void 0;
|
9
|
-
const deferred_1 = require("./common/deferred");
|
10
9
|
const languageServerBase_1 = require("./languageServerBase");
|
11
10
|
class WorkspaceMap extends Map {
|
12
11
|
constructor() {
|
13
12
|
super(...arguments);
|
14
13
|
this._defaultWorkspacePath = '<default>';
|
15
14
|
}
|
15
|
+
set(key, value) {
|
16
|
+
// Make sure to delete existing workspace if there is one.
|
17
|
+
this.delete(key);
|
18
|
+
return super.set(key, value);
|
19
|
+
}
|
16
20
|
delete(key) {
|
17
21
|
const workspace = this.get(key);
|
18
22
|
if (!workspace) {
|
19
23
|
return false;
|
20
24
|
}
|
25
|
+
// Make sure to unblock if there is someone waiting this workspace.
|
26
|
+
workspace.isInitialized.resolve();
|
21
27
|
// Properly dispose of the service instance.
|
22
28
|
workspace.serviceInstance.dispose();
|
23
29
|
return super.delete(key);
|
@@ -50,19 +56,30 @@ class WorkspaceMap extends Map {
|
|
50
56
|
});
|
51
57
|
return workspaces;
|
52
58
|
}
|
53
|
-
getWorkspaceForFile(ls, filePath) {
|
59
|
+
async getWorkspaceForFile(ls, filePath) {
|
54
60
|
let bestRootPath;
|
55
61
|
let bestInstance;
|
62
|
+
// Wait for all workspaces to be initialized before attempting to find the best workspace. Otherwise
|
63
|
+
// the list of files won't be complete and the `contains` check might fail.
|
64
|
+
for (const workspace of this.values()) {
|
65
|
+
await workspace.isInitialized.promise;
|
66
|
+
}
|
67
|
+
// The order of how we find the best matching workspace for the given file is
|
68
|
+
// 1. The given file is the workspace itself (ex, a file being a virtual workspace itself).
|
69
|
+
// 2. The given file matches the fileSpec of the service under the workspace
|
70
|
+
// (the file is a user file the workspace provides LSP service for).
|
71
|
+
// 3. The given file doesn't match anything but we have only 1 regular workspace
|
72
|
+
// (ex, open a library file from the workspace).
|
73
|
+
// 4. The given file doesn't match anything and there are multiple workspaces but one of workspaces
|
74
|
+
// contains the file (ex, open a library file already imported by a workspace).
|
75
|
+
// 5. If none of the above works, then it matches the default workspace.
|
56
76
|
this.forEach((workspace) => {
|
57
77
|
if (workspace.path) {
|
58
|
-
|
59
|
-
if (!workspace.owns(filePath)) {
|
78
|
+
if (workspace.path !== filePath && !workspace.serviceInstance.isTracked(filePath)) {
|
60
79
|
return;
|
61
80
|
}
|
62
|
-
//
|
63
|
-
//
|
64
|
-
// to select the innermost folder, since that overrides the
|
65
|
-
// outer folders.
|
81
|
+
// Among workspaces that own the file, make sure we return the inner most one which
|
82
|
+
// we consider as the best workspace.
|
66
83
|
if (bestRootPath === undefined || workspace.path.startsWith(bestRootPath)) {
|
67
84
|
bestRootPath = workspace.path;
|
68
85
|
bestInstance = workspace;
|
@@ -72,13 +89,20 @@ class WorkspaceMap extends Map {
|
|
72
89
|
// If there were multiple workspaces or we couldn't find any,
|
73
90
|
// create a default one to use for this file.
|
74
91
|
if (bestInstance === undefined) {
|
92
|
+
const regularWorkspaces = this.getNonDefaultWorkspaces(languageServerBase_1.WellKnownWorkspaceKinds.Regular);
|
93
|
+
// If we have only 1 regular workspace, then use that.
|
94
|
+
if (regularWorkspaces.length === 1) {
|
95
|
+
return regularWorkspaces[0];
|
96
|
+
}
|
97
|
+
// If we have multiple workspaces, see whether we can at least find one that contains the file.
|
98
|
+
// the file might not be tracked (user file), but still belongs to a workspace as a library file or as an orphan file to the workspace.
|
99
|
+
const containingWorkspace = this._getBestWorkspace(regularWorkspaces.filter((w) => w.serviceInstance.contains(filePath)));
|
100
|
+
if (containingWorkspace) {
|
101
|
+
return containingWorkspace;
|
102
|
+
}
|
103
|
+
// If no workspace contains it, then it belongs to the default workspace.
|
75
104
|
let defaultWorkspace = this.get(this._defaultWorkspacePath);
|
76
105
|
if (!defaultWorkspace) {
|
77
|
-
// If there is only one workspace, use that one.
|
78
|
-
const workspaceNames = [...this.keys()];
|
79
|
-
if (workspaceNames.length === 1) {
|
80
|
-
return this.get(workspaceNames[0]);
|
81
|
-
}
|
82
106
|
// Create a default workspace for files that are outside
|
83
107
|
// of all workspaces.
|
84
108
|
defaultWorkspace = {
|
@@ -91,17 +115,41 @@ class WorkspaceMap extends Map {
|
|
91
115
|
disableLanguageServices: false,
|
92
116
|
disableOrganizeImports: false,
|
93
117
|
disableWorkspaceSymbol: false,
|
94
|
-
isInitialized: (0,
|
118
|
+
isInitialized: (0, languageServerBase_1.createInitStatus)(),
|
95
119
|
searchPathsToWatch: [],
|
96
|
-
owns: (f) => true,
|
97
120
|
};
|
98
121
|
this.set(this._defaultWorkspacePath, defaultWorkspace);
|
99
|
-
|
122
|
+
// Do not await this. let isInitialized.promise to await. Otherwise, ordering
|
123
|
+
// will get messed up. The very first call will run last.
|
124
|
+
ls.updateSettingsForWorkspace(defaultWorkspace, defaultWorkspace.isInitialized).ignoreErrors();
|
100
125
|
}
|
126
|
+
// Make sure the default workspace is initialized before using it.
|
127
|
+
await defaultWorkspace.isInitialized.promise;
|
101
128
|
return defaultWorkspace;
|
102
129
|
}
|
103
130
|
return bestInstance;
|
104
131
|
}
|
132
|
+
getContainingWorkspace(filePath) {
|
133
|
+
return this._getBestWorkspace(this.getNonDefaultWorkspaces(languageServerBase_1.WellKnownWorkspaceKinds.Regular).filter((w) => filePath.startsWith(w.path)));
|
134
|
+
}
|
135
|
+
_getBestWorkspace(workspaces) {
|
136
|
+
if (workspaces.length === 0) {
|
137
|
+
return undefined;
|
138
|
+
}
|
139
|
+
if (workspaces.length === 1) {
|
140
|
+
return workspaces[0];
|
141
|
+
}
|
142
|
+
// Best workspace is the inner most workspace.
|
143
|
+
return workspaces.reduce((previousWorkspace, currentWorkspace) => {
|
144
|
+
if (!previousWorkspace) {
|
145
|
+
return currentWorkspace;
|
146
|
+
}
|
147
|
+
if (currentWorkspace.path.startsWith(previousWorkspace.path)) {
|
148
|
+
return currentWorkspace;
|
149
|
+
}
|
150
|
+
return previousWorkspace;
|
151
|
+
}, workspaces[0]);
|
152
|
+
}
|
105
153
|
}
|
106
154
|
exports.WorkspaceMap = WorkspaceMap;
|
107
155
|
//# sourceMappingURL=workspaceMap.js.map
|
package/dist/workspaceMap.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"workspaceMap.js","sourceRoot":"","sources":["../../src/workspaceMap.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,
|
1
|
+
{"version":3,"file":"workspaceMap.js","sourceRoot":"","sources":["../../src/workspaceMap.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
"name": "@zzzen/pyright-internal",
|
3
3
|
"displayName": "pyright",
|
4
4
|
"description": "Type checker for the Python language",
|
5
|
-
"version": "1.2.0-dev.
|
5
|
+
"version": "1.2.0-dev.20221204",
|
6
6
|
"license": "MIT",
|
7
7
|
"private": false,
|
8
8
|
"files": [
|
@@ -16,7 +16,7 @@
|
|
16
16
|
},
|
17
17
|
"dependencies": {
|
18
18
|
"@iarna/toml": "2.2.5",
|
19
|
-
"@yarnpkg/fslib": "2.
|
19
|
+
"@yarnpkg/fslib": "2.9.0",
|
20
20
|
"@yarnpkg/libzip": "2.2.4",
|
21
21
|
"chalk": "^4.1.2",
|
22
22
|
"chokidar": "^3.5.3",
|
@@ -30,7 +30,7 @@
|
|
30
30
|
"vscode-languageserver": "8.1.0-next.1",
|
31
31
|
"vscode-languageserver-textdocument": "^1.0.7",
|
32
32
|
"vscode-languageserver-types": "3.17.2",
|
33
|
-
"vscode-uri": "^3.0.
|
33
|
+
"vscode-uri": "^3.0.6"
|
34
34
|
},
|
35
35
|
"devDependencies": {
|
36
36
|
"@types/command-line-args": "^5.2.0",
|
@@ -1,30 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
/// <reference path="fourslash.ts" />
|
3
|
-
// @filename: sig_paramspec.py
|
4
|
-
//// from typing import Callable, Concatenate, ParamSpec
|
5
|
-
////
|
6
|
-
////
|
7
|
-
//// P = ParamSpec("P")
|
8
|
-
//// def tester(c: Callable[Concatenate[int, str, P], None]) -> Callable[Concatenate[int, P], None]:
|
9
|
-
//// pass
|
10
|
-
////
|
11
|
-
//// @tester
|
12
|
-
//// def foo(a: int, b: str, c: str, d: str):
|
13
|
-
//// pass
|
14
|
-
////
|
15
|
-
//// foo(1,[|/*s1*/|])
|
16
|
-
{
|
17
|
-
const simpleSignatures = [
|
18
|
-
{
|
19
|
-
label: '(int, c: str, d: str) -> None',
|
20
|
-
parameters: ['int', 'c: str', 'd: str'],
|
21
|
-
},
|
22
|
-
];
|
23
|
-
helper.verifySignature('plaintext', {
|
24
|
-
s1: {
|
25
|
-
signatures: simpleSignatures,
|
26
|
-
activeParameters: [1],
|
27
|
-
},
|
28
|
-
});
|
29
|
-
}
|
30
|
-
//# sourceMappingURL=signature.paramspec.fourslash.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"signature.paramspec.fourslash.js","sourceRoot":"","sources":["../../../../src/tests/fourslash/signature.paramspec.fourslash.ts"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,8BAA8B;AAC9B,wDAAwD;AACxD,IAAI;AACJ,IAAI;AACJ,uBAAuB;AACvB,oGAAoG;AACpG,aAAa;AACb,IAAI;AACJ,YAAY;AACZ,6CAA6C;AAC7C,aAAa;AACb,IAAI;AACJ,sBAAsB;AAEtB;IACI,MAAM,gBAAgB,GAAG;QACrB;YACI,KAAK,EAAE,+BAA+B;YACtC,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;SAC1C;KACJ,CAAC;IAEF,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE;QAChC,EAAE,EAAE;YACA,UAAU,EAAE,gBAAgB;YAC5B,gBAAgB,EAAE,CAAC,CAAC,CAAC;SACxB;KACJ,CAAC,CAAC;CACN"}
|