@zzzen/pyright-internal 1.2.0-dev.20231112 → 1.2.0-dev.20231126
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/analysis.d.ts +1 -1
- package/dist/analyzer/analysis.js +5 -1
- package/dist/analyzer/analysis.js.map +1 -1
- package/dist/analyzer/analyzerFileInfo.d.ts +1 -1
- package/dist/analyzer/analyzerNodeInfo.d.ts +1 -1
- package/dist/analyzer/analyzerNodeInfo.js +1 -1
- package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.js +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.js +198 -194
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/cacheManager.js +1 -1
- package/dist/analyzer/cacheManager.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -0
- package/dist/analyzer/checker.js +286 -256
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +1 -1
- package/dist/analyzer/codeFlowEngine.js +26 -26
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowTypes.d.ts +1 -1
- package/dist/analyzer/codeFlowTypes.js +23 -23
- package/dist/analyzer/codeFlowTypes.js.map +1 -1
- package/dist/analyzer/codeFlowUtils.js +39 -37
- package/dist/analyzer/codeFlowUtils.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +48 -45
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +8 -8
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/constructors.js +33 -31
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +67 -63
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declaration.d.ts +2 -2
- package/dist/analyzer/declaration.js +10 -10
- package/dist/analyzer/declaration.js.map +1 -1
- package/dist/analyzer/declarationUtils.js +44 -41
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/decorators.js +51 -51
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/docStringConversion.js +1 -1
- package/dist/analyzer/docStringConversion.js.map +1 -1
- package/dist/analyzer/docStringUtils.js +1 -1
- package/dist/analyzer/enums.js +27 -27
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/functionTransform.js +4 -4
- package/dist/analyzer/functionTransform.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +1 -1
- package/dist/analyzer/importResolver.js +27 -18
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importResult.js +1 -1
- package/dist/analyzer/importResult.js.map +1 -1
- package/dist/analyzer/importStatementUtils.js +31 -27
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.js +36 -32
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.js +78 -78
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/packageTypeReport.d.ts +1 -1
- package/dist/analyzer/packageTypeReport.js +2 -2
- package/dist/analyzer/packageTypeReport.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +90 -90
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parameterUtils.js +14 -14
- package/dist/analyzer/parameterUtils.js.map +1 -1
- package/dist/analyzer/parentDirectoryCache.d.ts +2 -2
- package/dist/analyzer/parseTreeCleaner.js +5 -1
- package/dist/analyzer/parseTreeCleaner.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +1 -1
- package/dist/analyzer/parseTreeUtils.js +383 -379
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.js +161 -157
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/patternMatching.d.ts +1 -1
- package/dist/analyzer/patternMatching.js +71 -64
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +1 -1
- package/dist/analyzer/program.js +20 -17
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +53 -44
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +14 -14
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/pythonPathUtils.js +5 -1
- package/dist/analyzer/pythonPathUtils.js.map +1 -1
- package/dist/analyzer/regions.js +3 -3
- package/dist/analyzer/regions.js.map +1 -1
- package/dist/analyzer/scope.js +8 -8
- package/dist/analyzer/scope.js.map +1 -1
- package/dist/analyzer/scopeUtils.js +1 -1
- package/dist/analyzer/scopeUtils.js.map +1 -1
- package/dist/analyzer/service.js +5 -1
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.js +25 -21
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceMapper.d.ts +2 -2
- package/dist/analyzer/sourceMapper.js +15 -8
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/staticExpressions.js +40 -40
- package/dist/analyzer/staticExpressions.js.map +1 -1
- package/dist/analyzer/symbol.d.ts +1 -1
- package/dist/analyzer/symbol.js +26 -26
- package/dist/analyzer/symbol.js.map +1 -1
- package/dist/analyzer/symbolUtils.js +1 -1
- package/dist/analyzer/symbolUtils.js.map +1 -1
- package/dist/analyzer/testWalker.js +5 -5
- package/dist/analyzer/testWalker.js.map +1 -1
- package/dist/analyzer/tracePrinter.d.ts +1 -1
- package/dist/analyzer/tracePrinter.js +35 -31
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/typeCacheUtils.js +5 -1
- package/dist/analyzer/typeCacheUtils.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.js +13 -9
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +1272 -1176
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -1
- package/dist/analyzer/typeEvaluatorTypes.js +3 -1
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +1 -1
- package/dist/analyzer/typeGuards.js +95 -67
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.d.ts +1 -1
- package/dist/analyzer/typePrinter.js +80 -76
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeStubWriter.js +26 -22
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.js +163 -123
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.d.ts +1 -0
- package/dist/analyzer/typeVarContext.js +12 -9
- package/dist/analyzer/typeVarContext.js.map +1 -1
- package/dist/analyzer/typeWalker.js +10 -10
- package/dist/analyzer/typedDicts.js +74 -70
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +17 -12
- package/dist/analyzer/types.js +191 -181
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +2 -2
- package/dist/backgroundAnalysisBase.js +5 -1
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.js +5 -1
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/commands/commandController.js +7 -7
- package/dist/commands/commandController.js.map +1 -1
- package/dist/commands/commandResult.js +1 -1
- package/dist/commands/commandResult.js.map +1 -1
- package/dist/commands/commands.js +1 -1
- package/dist/commands/commands.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +196 -196
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/commands/quickActionCommand.js +1 -1
- package/dist/commands/quickActionCommand.js.map +1 -1
- package/dist/common/charCodes.js +1 -1
- package/dist/common/charCodes.js.map +1 -1
- package/dist/common/chokidarFileWatcherProvider.js +5 -1
- package/dist/common/chokidarFileWatcherProvider.js.map +1 -1
- package/dist/common/collectionUtils.d.ts +3 -3
- package/dist/common/collectionUtils.js +3 -3
- package/dist/common/collectionUtils.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +1 -1
- package/dist/common/commandLineOptions.js +5 -5
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/configOptions.d.ts +1 -1
- package/dist/common/configOptions.js +11 -7
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/console.js +7 -3
- package/dist/common/console.js.map +1 -1
- package/dist/common/core.d.ts +2 -2
- package/dist/common/core.js +6 -6
- package/dist/common/core.js.map +1 -1
- package/dist/common/diagnostic.js +6 -6
- package/dist/common/diagnostic.js.map +1 -1
- package/dist/common/diagnosticRules.js +1 -1
- package/dist/common/diagnosticRules.js.map +1 -1
- package/dist/common/diagnosticSink.js +12 -12
- package/dist/common/diagnosticSink.js.map +1 -1
- package/dist/common/editAction.d.ts +1 -1
- package/dist/common/editAction.js +2 -2
- package/dist/common/editAction.js.map +1 -1
- package/dist/common/envVarUtils.js +5 -1
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/common/extensibility.js +1 -1
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/fileBasedCancellationUtils.js +5 -1
- package/dist/common/fileBasedCancellationUtils.js.map +1 -1
- package/dist/common/fileSystem.d.ts +1 -0
- package/dist/common/fileSystem.js +2 -2
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/fileWatcher.d.ts +2 -2
- package/dist/common/fullAccessHost.js +10 -6
- package/dist/common/fullAccessHost.js.map +1 -1
- package/dist/common/host.d.ts +1 -1
- package/dist/common/host.js +2 -2
- package/dist/common/host.js.map +1 -1
- package/dist/common/lspUtils.js +7 -7
- package/dist/common/lspUtils.js.map +1 -1
- package/dist/common/memUtils.d.ts +1 -1
- package/dist/common/pathUtils.js +12 -8
- package/dist/common/pathUtils.js.map +1 -1
- package/dist/common/pythonVersion.js +1 -1
- package/dist/common/pythonVersion.js.map +1 -1
- package/dist/common/realFileSystem.js +5 -1
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/serviceProvider.d.ts +1 -1
- package/dist/common/serviceProvider.js +5 -1
- package/dist/common/serviceProvider.js.map +1 -1
- package/dist/common/serviceProviderExtensions.js +1 -1
- package/dist/common/serviceProviderExtensions.js.map +1 -1
- package/dist/common/stringUtils.js +5 -5
- package/dist/common/stringUtils.js.map +1 -1
- package/dist/common/textEditTracker.js +11 -7
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/common/textRange.js +3 -3
- package/dist/common/textRange.js.map +1 -1
- package/dist/languageServerBase.d.ts +3 -3
- package/dist/languageServerBase.js +19 -19
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/autoImporter.d.ts +3 -3
- package/dist/languageService/autoImporter.js +12 -8
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +27 -23
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/codeActionProvider.js +8 -8
- package/dist/languageService/codeActionProvider.js.map +1 -1
- package/dist/languageService/completionProvider.js +171 -173
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/completionProviderUtils.js +9 -9
- package/dist/languageService/completionProviderUtils.js.map +1 -1
- package/dist/languageService/definitionProvider.js +14 -10
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentHighlightProvider.js +7 -3
- package/dist/languageService/documentHighlightProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.d.ts +1 -1
- package/dist/languageService/documentSymbolCollector.js +21 -17
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/hoverProvider.js +30 -26
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importSorter.js +1 -1
- package/dist/languageService/importSorter.js.map +1 -1
- package/dist/languageService/quickActions.js +10 -6
- package/dist/languageService/quickActions.js.map +1 -1
- package/dist/languageService/referencesProvider.d.ts +1 -1
- package/dist/languageService/referencesProvider.js +24 -20
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +8 -4
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.js +8 -4
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +20 -16
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.js +5 -1
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +10 -12
- package/dist/localization/localize.js +8 -5
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +5 -8
- package/dist/localization/package.nls.de.json +5 -8
- package/dist/localization/package.nls.en-us.json +12 -9
- package/dist/localization/package.nls.es.json +5 -8
- package/dist/localization/package.nls.fr.json +5 -8
- package/dist/localization/package.nls.it.json +5 -8
- package/dist/localization/package.nls.ja.json +5 -8
- package/dist/localization/package.nls.ko.json +5 -8
- package/dist/localization/package.nls.pl.json +5 -8
- package/dist/localization/package.nls.pt-br.json +5 -8
- package/dist/localization/package.nls.qps-ploc.json +2 -5
- package/dist/localization/package.nls.ru.json +5 -8
- package/dist/localization/package.nls.tr.json +5 -8
- package/dist/localization/package.nls.zh-cn.json +5 -8
- package/dist/localization/package.nls.zh-tw.json +5 -8
- package/dist/parser/characterStream.js +3 -3
- package/dist/parser/characterStream.js.map +1 -1
- package/dist/parser/characters.js +13 -9
- package/dist/parser/characters.js.map +1 -1
- package/dist/parser/parseNodes.d.ts +12 -12
- package/dist/parser/parseNodes.js +193 -193
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.js +563 -559
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/stringTokenUtils.js +47 -47
- package/dist/parser/stringTokenUtils.js.map +1 -1
- package/dist/parser/tokenizer.js +288 -288
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/parser/tokenizerTypes.js +35 -35
- package/dist/parser/tokenizerTypes.js.map +1 -1
- package/dist/parser/unicode.d.ts +3 -3
- package/dist/pyright.js +38 -18
- package/dist/pyright.js.map +1 -1
- package/dist/pyrightFileSystem.d.ts +1 -0
- package/dist/pyrightFileSystem.js +1 -1
- package/dist/pyrightFileSystem.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.d.ts +1 -0
- package/dist/tests/chainedSourceFiles.test.js +5 -1
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/checker.test.js +5 -1
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/collectionUtils.test.js +5 -1
- package/dist/tests/collectionUtils.test.js.map +1 -1
- package/dist/tests/common.test.js +5 -1
- package/dist/tests/common.test.js.map +1 -1
- package/dist/tests/config.test.js +7 -5
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/debug.test.js +8 -4
- package/dist/tests/debug.test.js.map +1 -1
- package/dist/tests/deferred.test.js +5 -1
- package/dist/tests/deferred.test.js.map +1 -1
- package/dist/tests/diagnosticOverrides.test.js +5 -1
- package/dist/tests/diagnosticOverrides.test.js.map +1 -1
- package/dist/tests/docStringConversion.test.js +0 -22
- package/dist/tests/docStringConversion.test.js.map +1 -1
- package/dist/tests/docStringUtils.test.js +5 -1
- package/dist/tests/docStringUtils.test.js.map +1 -1
- package/dist/tests/filesystem.test.js +5 -1
- package/dist/tests/filesystem.test.js.map +1 -1
- package/dist/tests/fourSlashParser.test.js +5 -1
- package/dist/tests/fourSlashParser.test.js.map +1 -1
- package/dist/tests/fourSlashRunner.test.js +5 -1
- package/dist/tests/fourSlashRunner.test.js.map +1 -1
- package/dist/tests/fourslash/completions.params.fourslash.js +11 -0
- package/dist/tests/fourslash/completions.params.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.docstring.split.fourslash.js +10 -0
- package/dist/tests/fourslash/hover.docstring.split.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashParser.js +13 -13
- package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashTypes.js +11 -7
- package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
- package/dist/tests/harness/fourslash/runner.d.ts +1 -1
- package/dist/tests/harness/fourslash/runner.js +5 -1
- package/dist/tests/harness/fourslash/runner.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.js +5 -1
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.Consts.js +6 -2
- package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.js +17 -13
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/fourslash/testStateUtils.js +9 -5
- package/dist/tests/harness/fourslash/testStateUtils.js.map +1 -1
- package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +5 -1
- package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
- package/dist/tests/harness/testHost.js +5 -1
- package/dist/tests/harness/testHost.js.map +1 -1
- package/dist/tests/harness/utils.d.ts +13 -12
- package/dist/tests/harness/utils.js.map +1 -1
- package/dist/tests/harness/vfs/factory.js +6 -2
- package/dist/tests/harness/vfs/factory.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +4 -3
- package/dist/tests/harness/vfs/filesystem.js +11 -7
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/harness/vfs/pathValidation.js +30 -26
- package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +25 -25
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/ipythonMode.test.js +6 -6
- package/dist/tests/ipythonMode.test.js.map +1 -1
- package/dist/tests/localizer.test.js +5 -1
- package/dist/tests/localizer.test.js.map +1 -1
- package/dist/tests/logger.test.js +5 -1
- package/dist/tests/logger.test.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +10 -10
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/parser.test.js +13 -9
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/pathUtils.test.js +5 -1
- package/dist/tests/pathUtils.test.js.map +1 -1
- package/dist/tests/sourceFile.test.js +5 -1
- package/dist/tests/sourceFile.test.js.map +1 -1
- package/dist/tests/sourceMapperUtils.test.js +5 -1
- package/dist/tests/sourceMapperUtils.test.js.map +1 -1
- package/dist/tests/stringUtils.test.js +10 -6
- package/dist/tests/stringUtils.test.js.map +1 -1
- package/dist/tests/symbolNameUtils.test.js +5 -1
- package/dist/tests/symbolNameUtils.test.js.map +1 -1
- package/dist/tests/testState.test.js +5 -1
- package/dist/tests/testState.test.js.map +1 -1
- package/dist/tests/testUtils.js +11 -7
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/textRange.test.js +5 -1
- package/dist/tests/textRange.test.js.map +1 -1
- package/dist/tests/tokenizer.test.js +463 -459
- package/dist/tests/tokenizer.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +18 -2
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +19 -3
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +11 -3
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +11 -3
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +5 -1
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/typePrinter.test.js +44 -40
- package/dist/tests/typePrinter.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +5 -1
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/dist/tests/zipfs.test.js +5 -1
- package/dist/tests/zipfs.test.js.map +1 -1
- package/dist/workspaceFactory.js +2 -2
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +2 -2
@@ -42,6 +42,7 @@ export declare const enum EvaluatorFlags {
|
|
42
42
|
AllowUnpackedTypedDict = 8388608,
|
43
43
|
DisallowPep695TypeAlias = 16777216,
|
44
44
|
SkipConvertParamSpecToRuntimeObject = 33554432,
|
45
|
+
DisallowNonTypeSpecialForms = 67108864,
|
45
46
|
CallBaseDefaults = 16777218,
|
46
47
|
IndexBaseDefaults = 2,
|
47
48
|
MemberAccessBaseDefaults = 16777218
|
@@ -113,7 +114,7 @@ export interface FunctionArgumentWithType extends FunctionArgumentBase {
|
|
113
114
|
export interface FunctionArgumentWithExpression extends FunctionArgumentBase {
|
114
115
|
valueExpression: ExpressionNode;
|
115
116
|
}
|
116
|
-
export
|
117
|
+
export type FunctionArgument = FunctionArgumentWithType | FunctionArgumentWithExpression;
|
117
118
|
export interface EffectiveTypeResult {
|
118
119
|
type: Type;
|
119
120
|
isIncomplete: boolean;
|
@@ -155,6 +156,7 @@ export interface ExpectedTypeOptions {
|
|
155
156
|
allowForwardReference?: boolean;
|
156
157
|
allowTypeVarsWithoutScopeId?: boolean;
|
157
158
|
enforceTypeAnnotationRules?: boolean;
|
159
|
+
disallowProtocolAndTypedDict?: boolean;
|
158
160
|
}
|
159
161
|
export interface ExpectedTypeResult {
|
160
162
|
type: Type;
|
@@ -81,11 +81,13 @@ var EvaluatorFlags;
|
|
81
81
|
// If evaluation is a TypeVarType that is a ParamSpec, do
|
82
82
|
// not convert it to its corresponding ParamSpec runtime object.
|
83
83
|
EvaluatorFlags[EvaluatorFlags["SkipConvertParamSpecToRuntimeObject"] = 33554432] = "SkipConvertParamSpecToRuntimeObject";
|
84
|
+
// Protocol and TypedDict are not allowed in this context.
|
85
|
+
EvaluatorFlags[EvaluatorFlags["DisallowNonTypeSpecialForms"] = 67108864] = "DisallowNonTypeSpecialForms";
|
84
86
|
// Defaults used for evaluating the LHS of a call expression.
|
85
87
|
EvaluatorFlags[EvaluatorFlags["CallBaseDefaults"] = 16777218] = "CallBaseDefaults";
|
86
88
|
// Defaults used for evaluating the LHS of a member access expression.
|
87
89
|
EvaluatorFlags[EvaluatorFlags["IndexBaseDefaults"] = 2] = "IndexBaseDefaults";
|
88
90
|
// Defaults used for evaluating the LHS of a member access expression.
|
89
91
|
EvaluatorFlags[EvaluatorFlags["MemberAccessBaseDefaults"] = 16777218] = "MemberAccessBaseDefaults";
|
90
|
-
})(EvaluatorFlags
|
92
|
+
})(EvaluatorFlags || (exports.EvaluatorFlags = EvaluatorFlags = {}));
|
91
93
|
//# sourceMappingURL=typeEvaluatorTypes.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA8CH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,
|
1
|
+
{"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA8CH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,cAyGjB;AAzGD,WAAkB,cAAc;IAC5B,mDAAQ,CAAA;IAER,uDAAuD;IACvD,mFAA6B,CAAA;IAE7B,0DAA0D;IAC1D,gEAAgE;IAChE,SAAS;IACT,yEAAwB,CAAA;IAExB,yDAAyD;IACzD,uFAA+B,CAAA;IAE/B,kCAAkC;IAClC,iGAAoC,CAAA;IAEpC,0CAA0C;IAC1C,sEAAsB,CAAA;IAEtB,6CAA6C;IAC7C,8EAA0B,CAAA;IAE1B,gDAAgD;IAChD,oFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,4BAA4B;IAC5B,+FAAkC,CAAA;IAElC,gEAAgE;IAChE,6DAA6D;IAC7D,qBAAqB;IACrB,2FAAgC,CAAA;IAEhC,qEAAqE;IACrE,qFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,gDAAgD;IAChD,wFAA+B,CAAA;IAE/B,8DAA8D;IAC9D,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,oEAAoE;IACpE,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,yDAAyD;IACzD,2DAA2D;IAC3D,mCAAmC;IACnC,gHAA2C,CAAA;IAE3C,yDAAyD;IACzD,6DAA6D;IAC7D,uDAAuD;IACvD,iHAA2C,CAAA;IAE3C,mDAAmD;IACnD,2FAAgC,CAAA;IAEhC,6CAA6C;IAC7C,gFAA0B,CAAA;IAE1B,mEAAmE;IACnE,wFAA8B,CAAA;IAE9B,iEAAiE;IACjE,iCAAiC;IACjC,4FAAgC,CAAA;IAEhC,wDAAwD;IACxD,2EAAuB,CAAA;IAEvB,uDAAuD;IACvD,iHAA0C,CAAA;IAE1C,6DAA6D;IAC7D,2DAA2D;IAC3D,oDAAoD;IACpD,6GAAwC,CAAA;IAExC,yCAAyC;IACzC,6FAAgC,CAAA;IAEhC,yDAAyD;IACzD,gGAAiC,CAAA;IAEjC,yDAAyD;IACzD,gEAAgE;IAChE,wHAA6C,CAAA;IAE7C,0DAA0D;IAC1D,wGAAqC,CAAA;IAErC,6DAA6D;IAC7D,kFAA4D,CAAA;IAE5D,sEAAsE;IACtE,6EAAmC,CAAA;IAEnC,sEAAsE;IACtE,kGAAoE,CAAA;AACxE,CAAC,EAzGiB,cAAc,8BAAd,cAAc,QAyG/B"}
|
@@ -5,7 +5,7 @@ export interface TypeNarrowingResult {
|
|
5
5
|
type: Type;
|
6
6
|
isIncomplete: boolean;
|
7
7
|
}
|
8
|
-
export
|
8
|
+
export type TypeNarrowingCallback = (type: Type) => TypeNarrowingResult | undefined;
|
9
9
|
export declare function getTypeNarrowingCallback(evaluator: TypeEvaluator, reference: ExpressionNode, testExpression: ExpressionNode, isPositiveTest: boolean, recursionCount?: number): TypeNarrowingCallback | undefined;
|
10
10
|
export declare function isIsinstanceFilterSuperclass(evaluator: TypeEvaluator, varType: Type, concreteVarType: ClassType, filterType: Type, concreteFilterType: ClassType, isInstanceCheck: boolean): boolean;
|
11
11
|
export declare function isIsinstanceFilterSubclass(evaluator: TypeEvaluator, varType: ClassType, concreteFilterType: ClassType, isInstanceCheck: boolean): boolean;
|
@@ -11,7 +11,11 @@
|
|
11
11
|
*/
|
12
12
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
13
13
|
if (k2 === undefined) k2 = k;
|
14
|
-
Object.
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
17
|
+
}
|
18
|
+
Object.defineProperty(o, k2, desc);
|
15
19
|
}) : (function(o, m, k, k2) {
|
16
20
|
if (k2 === undefined) k2 = k;
|
17
21
|
o[k2] = m[k];
|
@@ -50,25 +54,25 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
50
54
|
return undefined;
|
51
55
|
}
|
52
56
|
recursionCount++;
|
53
|
-
if (testExpression.nodeType === 4 /* AssignmentExpression */) {
|
57
|
+
if (testExpression.nodeType === 4 /* ParseNodeType.AssignmentExpression */) {
|
54
58
|
return getTypeNarrowingCallbackForAssignmentExpression(evaluator, reference, testExpression, isPositiveTest, recursionCount);
|
55
59
|
}
|
56
|
-
if (testExpression.nodeType === 7 /* BinaryOperation */) {
|
57
|
-
const isOrIsNotOperator = testExpression.operator === 39 /* Is */ || testExpression.operator === 40 /* IsNot */;
|
58
|
-
const equalsOrNotEqualsOperator = testExpression.operator === 12 /* Equals */ || testExpression.operator === 28 /* NotEquals */;
|
60
|
+
if (testExpression.nodeType === 7 /* ParseNodeType.BinaryOperation */) {
|
61
|
+
const isOrIsNotOperator = testExpression.operator === 39 /* OperatorType.Is */ || testExpression.operator === 40 /* OperatorType.IsNot */;
|
62
|
+
const equalsOrNotEqualsOperator = testExpression.operator === 12 /* OperatorType.Equals */ || testExpression.operator === 28 /* OperatorType.NotEquals */;
|
59
63
|
if (isOrIsNotOperator || equalsOrNotEqualsOperator) {
|
60
64
|
// Invert the "isPositiveTest" value if this is an "is not" operation.
|
61
|
-
const adjIsPositiveTest = testExpression.operator === 39 /* Is */ || testExpression.operator === 12 /* Equals */
|
65
|
+
const adjIsPositiveTest = testExpression.operator === 39 /* OperatorType.Is */ || testExpression.operator === 12 /* OperatorType.Equals */
|
62
66
|
? isPositiveTest
|
63
67
|
: !isPositiveTest;
|
64
68
|
// Look for "X is None", "X is not None", "X == None", and "X != None".
|
65
69
|
// These are commonly-used patterns used in control flow.
|
66
|
-
if (testExpression.rightExpression.nodeType === 11 /* Constant */ &&
|
67
|
-
testExpression.rightExpression.constType === 26 /* None */) {
|
70
|
+
if (testExpression.rightExpression.nodeType === 11 /* ParseNodeType.Constant */ &&
|
71
|
+
testExpression.rightExpression.constType === 26 /* KeywordType.None */) {
|
68
72
|
// Allow the LHS to be either a simple expression or an assignment
|
69
73
|
// expression that assigns to a simple name.
|
70
74
|
let leftExpression = testExpression.leftExpression;
|
71
|
-
if (leftExpression.nodeType === 4 /* AssignmentExpression */) {
|
75
|
+
if (leftExpression.nodeType === 4 /* ParseNodeType.AssignmentExpression */) {
|
72
76
|
leftExpression = leftExpression.name;
|
73
77
|
}
|
74
78
|
if (ParseTreeUtils.isMatchingExpression(reference, leftExpression)) {
|
@@ -76,13 +80,13 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
76
80
|
return { type: narrowTypeForIsNone(evaluator, type, adjIsPositiveTest), isIncomplete: false };
|
77
81
|
};
|
78
82
|
}
|
79
|
-
if (leftExpression.nodeType === 24 /* Index */ &&
|
83
|
+
if (leftExpression.nodeType === 24 /* ParseNodeType.Index */ &&
|
80
84
|
ParseTreeUtils.isMatchingExpression(reference, leftExpression.baseExpression) &&
|
81
85
|
leftExpression.items.length === 1 &&
|
82
86
|
!leftExpression.trailingComma &&
|
83
|
-
leftExpression.items[0].argumentCategory === 0 /* Simple */ &&
|
87
|
+
leftExpression.items[0].argumentCategory === 0 /* ArgumentCategory.Simple */ &&
|
84
88
|
!leftExpression.items[0].name &&
|
85
|
-
leftExpression.items[0].valueExpression.nodeType === 40 /* Number */ &&
|
89
|
+
leftExpression.items[0].valueExpression.nodeType === 40 /* ParseNodeType.Number */ &&
|
86
90
|
leftExpression.items[0].valueExpression.isInteger &&
|
87
91
|
!leftExpression.items[0].valueExpression.isImaginary) {
|
88
92
|
const indexValue = leftExpression.items[0].valueExpression.value;
|
@@ -97,11 +101,11 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
97
101
|
}
|
98
102
|
}
|
99
103
|
// Look for "X is ...", "X is not ...", "X == ...", and "X != ...".
|
100
|
-
if (testExpression.rightExpression.nodeType === 18 /* Ellipsis */) {
|
104
|
+
if (testExpression.rightExpression.nodeType === 18 /* ParseNodeType.Ellipsis */) {
|
101
105
|
// Allow the LHS to be either a simple expression or an assignment
|
102
106
|
// expression that assigns to a simple name.
|
103
107
|
let leftExpression = testExpression.leftExpression;
|
104
|
-
if (leftExpression.nodeType === 4 /* AssignmentExpression */) {
|
108
|
+
if (leftExpression.nodeType === 4 /* ParseNodeType.AssignmentExpression */) {
|
105
109
|
leftExpression = leftExpression.name;
|
106
110
|
}
|
107
111
|
if (ParseTreeUtils.isMatchingExpression(reference, leftExpression)) {
|
@@ -114,12 +118,12 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
114
118
|
}
|
115
119
|
}
|
116
120
|
// Look for "type(X) is Y", "type(X) is not Y", "type(X) == Y" or "type(X) != Y".
|
117
|
-
if (testExpression.leftExpression.nodeType === 9 /* Call */) {
|
121
|
+
if (testExpression.leftExpression.nodeType === 9 /* ParseNodeType.Call */) {
|
118
122
|
if (testExpression.leftExpression.arguments.length === 1 &&
|
119
|
-
testExpression.leftExpression.arguments[0].argumentCategory === 0 /* Simple */) {
|
123
|
+
testExpression.leftExpression.arguments[0].argumentCategory === 0 /* ArgumentCategory.Simple */) {
|
120
124
|
const arg0Expr = testExpression.leftExpression.arguments[0].valueExpression;
|
121
125
|
if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
|
122
|
-
const callType = evaluator.getTypeOfExpression(testExpression.leftExpression.leftExpression, 16777218 /* CallBaseDefaults */).type;
|
126
|
+
const callType = evaluator.getTypeOfExpression(testExpression.leftExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */).type;
|
123
127
|
if ((0, types_1.isInstantiableClass)(callType) && types_1.ClassType.isBuiltIn(callType, 'type')) {
|
124
128
|
const classTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
|
125
129
|
const classType = evaluator.makeTopLevelTypeVarsConcrete(classTypeResult.type);
|
@@ -162,10 +166,10 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
162
166
|
}
|
163
167
|
}
|
164
168
|
// Look for X[<literal>] is <literal> or X[<literal>] is not <literal>.
|
165
|
-
if (testExpression.leftExpression.nodeType === 24 /* Index */ &&
|
169
|
+
if (testExpression.leftExpression.nodeType === 24 /* ParseNodeType.Index */ &&
|
166
170
|
testExpression.leftExpression.items.length === 1 &&
|
167
171
|
!testExpression.leftExpression.trailingComma &&
|
168
|
-
testExpression.leftExpression.items[0].argumentCategory === 0 /* Simple */ &&
|
172
|
+
testExpression.leftExpression.items[0].argumentCategory === 0 /* ArgumentCategory.Simple */ &&
|
169
173
|
ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.baseExpression)) {
|
170
174
|
const indexTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression.items[0].valueExpression);
|
171
175
|
const indexType = indexTypeResult.type;
|
@@ -208,7 +212,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
208
212
|
}
|
209
213
|
if (equalsOrNotEqualsOperator) {
|
210
214
|
// Look for X == <literal> or X != <literal>
|
211
|
-
const adjIsPositiveTest = testExpression.operator === 12 /* Equals */ ? isPositiveTest : !isPositiveTest;
|
215
|
+
const adjIsPositiveTest = testExpression.operator === 12 /* OperatorType.Equals */ ? isPositiveTest : !isPositiveTest;
|
212
216
|
if (ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression)) {
|
213
217
|
const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
|
214
218
|
const rightType = rightTypeResult.type;
|
@@ -223,10 +227,10 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
223
227
|
}
|
224
228
|
}
|
225
229
|
// Look for X[<literal>] == <literal> or X[<literal>] != <literal>
|
226
|
-
if (testExpression.leftExpression.nodeType === 24 /* Index */ &&
|
230
|
+
if (testExpression.leftExpression.nodeType === 24 /* ParseNodeType.Index */ &&
|
227
231
|
testExpression.leftExpression.items.length === 1 &&
|
228
232
|
!testExpression.leftExpression.trailingComma &&
|
229
|
-
testExpression.leftExpression.items[0].argumentCategory === 0 /* Simple */ &&
|
233
|
+
testExpression.leftExpression.items[0].argumentCategory === 0 /* ArgumentCategory.Simple */ &&
|
230
234
|
ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.baseExpression)) {
|
231
235
|
const indexTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression.items[0].valueExpression);
|
232
236
|
const indexType = indexTypeResult.type;
|
@@ -255,11 +259,11 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
255
259
|
}
|
256
260
|
// Look for len(x) == <literal> or len(x) != <literal>
|
257
261
|
if (equalsOrNotEqualsOperator &&
|
258
|
-
testExpression.leftExpression.nodeType === 9 /* Call */ &&
|
262
|
+
testExpression.leftExpression.nodeType === 9 /* ParseNodeType.Call */ &&
|
259
263
|
testExpression.leftExpression.arguments.length === 1) {
|
260
264
|
const arg0Expr = testExpression.leftExpression.arguments[0].valueExpression;
|
261
265
|
if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
|
262
|
-
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression.leftExpression, 16777218 /* CallBaseDefaults */);
|
266
|
+
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
|
263
267
|
const callType = callTypeResult.type;
|
264
268
|
if ((0, types_1.isFunction)(callType) && callType.details.fullName === 'builtins.len') {
|
265
269
|
const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
|
@@ -280,7 +284,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
280
284
|
}
|
281
285
|
// Look for X.Y == <literal> or X.Y != <literal>
|
282
286
|
if (equalsOrNotEqualsOperator &&
|
283
|
-
testExpression.leftExpression.nodeType === 35 /* MemberAccess */ &&
|
287
|
+
testExpression.leftExpression.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
|
284
288
|
ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.leftExpression)) {
|
285
289
|
const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
|
286
290
|
const rightType = rightTypeResult.type;
|
@@ -296,7 +300,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
296
300
|
}
|
297
301
|
// Look for X.Y is <literal> or X.Y is not <literal> where <literal> is
|
298
302
|
// an enum or bool literal
|
299
|
-
if (testExpression.leftExpression.nodeType === 35 /* MemberAccess */ &&
|
303
|
+
if (testExpression.leftExpression.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
|
300
304
|
ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.leftExpression)) {
|
301
305
|
const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
|
302
306
|
const rightType = rightTypeResult.type;
|
@@ -314,10 +318,10 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
314
318
|
}
|
315
319
|
// Look for X.Y is None or X.Y is not None
|
316
320
|
// These are commonly-used patterns used in control flow.
|
317
|
-
if (testExpression.leftExpression.nodeType === 35 /* MemberAccess */ &&
|
321
|
+
if (testExpression.leftExpression.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
|
318
322
|
ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.leftExpression) &&
|
319
|
-
testExpression.rightExpression.nodeType === 11 /* Constant */ &&
|
320
|
-
testExpression.rightExpression.constType === 26 /* None */) {
|
323
|
+
testExpression.rightExpression.nodeType === 11 /* ParseNodeType.Constant */ &&
|
324
|
+
testExpression.rightExpression.constType === 26 /* KeywordType.None */) {
|
321
325
|
const memberName = testExpression.leftExpression.memberName;
|
322
326
|
return (type) => {
|
323
327
|
return {
|
@@ -327,12 +331,12 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
327
331
|
};
|
328
332
|
}
|
329
333
|
}
|
330
|
-
if (testExpression.operator === 41 /* In */ || testExpression.operator === 42 /* NotIn */) {
|
334
|
+
if (testExpression.operator === 41 /* OperatorType.In */ || testExpression.operator === 42 /* OperatorType.NotIn */) {
|
331
335
|
// Look for "x in y" or "x not in y" where y is one of several built-in types.
|
332
336
|
if (ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression)) {
|
333
337
|
const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
|
334
338
|
const rightType = rightTypeResult.type;
|
335
|
-
const adjIsPositiveTest = testExpression.operator === 41 /* In */ ? isPositiveTest : !isPositiveTest;
|
339
|
+
const adjIsPositiveTest = testExpression.operator === 41 /* OperatorType.In */ ? isPositiveTest : !isPositiveTest;
|
336
340
|
return (type) => {
|
337
341
|
return {
|
338
342
|
type: narrowTypeForContainerType(evaluator, type, rightType, adjIsPositiveTest),
|
@@ -346,7 +350,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
346
350
|
const leftTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression);
|
347
351
|
const leftType = leftTypeResult.type;
|
348
352
|
if ((0, types_1.isClassInstance)(leftType) && types_1.ClassType.isBuiltIn(leftType, 'str') && (0, typeUtils_1.isLiteralType)(leftType)) {
|
349
|
-
const adjIsPositiveTest = testExpression.operator === 41 /* In */ ? isPositiveTest : !isPositiveTest;
|
353
|
+
const adjIsPositiveTest = testExpression.operator === 41 /* OperatorType.In */ ? isPositiveTest : !isPositiveTest;
|
350
354
|
return (type) => {
|
351
355
|
return {
|
352
356
|
type: narrowTypeForTypedDictKey(evaluator, type, types_1.ClassType.cloneAsInstantiable(leftType), adjIsPositiveTest),
|
@@ -357,7 +361,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
357
361
|
}
|
358
362
|
}
|
359
363
|
}
|
360
|
-
if (testExpression.nodeType === 9 /* Call */) {
|
364
|
+
if (testExpression.nodeType === 9 /* ParseNodeType.Call */) {
|
361
365
|
// Look for "isinstance(X, Y)" or "issubclass(X, Y)".
|
362
366
|
if (testExpression.arguments.length === 2) {
|
363
367
|
// Make sure the first parameter is a supported expression type
|
@@ -366,15 +370,15 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
366
370
|
const arg0Expr = testExpression.arguments[0].valueExpression;
|
367
371
|
const arg1Expr = testExpression.arguments[1].valueExpression;
|
368
372
|
if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
|
369
|
-
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* CallBaseDefaults */);
|
373
|
+
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
|
370
374
|
const callType = callTypeResult.type;
|
371
375
|
if ((0, types_1.isFunction)(callType) &&
|
372
376
|
(callType.details.builtInName === 'isinstance' || callType.details.builtInName === 'issubclass')) {
|
373
377
|
const isInstanceCheck = callType.details.builtInName === 'isinstance';
|
374
|
-
const arg1TypeResult = evaluator.getTypeOfExpression(arg1Expr, 512 /* AllowMissingTypeArgs */ |
|
375
|
-
8 /* EvaluateStringLiteralAsType */ |
|
376
|
-
32 /* DisallowParamSpec */ |
|
377
|
-
64 /* DisallowTypeVarTuple */);
|
378
|
+
const arg1TypeResult = evaluator.getTypeOfExpression(arg1Expr, 512 /* EvaluatorFlags.AllowMissingTypeArgs */ |
|
379
|
+
8 /* EvaluatorFlags.EvaluateStringLiteralAsType */ |
|
380
|
+
32 /* EvaluatorFlags.DisallowParamSpec */ |
|
381
|
+
64 /* EvaluatorFlags.DisallowTypeVarTuple */);
|
378
382
|
const arg1Type = arg1TypeResult.type;
|
379
383
|
const classTypeList = getIsInstanceClassTypes(arg1Type);
|
380
384
|
const isIncomplete = !!callTypeResult.isIncomplete || !!arg1TypeResult.isIncomplete;
|
@@ -413,7 +417,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
413
417
|
if (testExpression.arguments.length === 1) {
|
414
418
|
const arg0Expr = testExpression.arguments[0].valueExpression;
|
415
419
|
if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
|
416
|
-
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* CallBaseDefaults */);
|
420
|
+
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
|
417
421
|
const callType = callTypeResult.type;
|
418
422
|
if ((0, types_1.isFunction)(callType) && callType.details.builtInName === 'callable') {
|
419
423
|
return (type) => {
|
@@ -432,7 +436,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
432
436
|
// Look for "bool(X)"
|
433
437
|
if (testExpression.arguments.length === 1 && !testExpression.arguments[0].name) {
|
434
438
|
if (ParseTreeUtils.isMatchingExpression(reference, testExpression.arguments[0].valueExpression)) {
|
435
|
-
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* CallBaseDefaults */);
|
439
|
+
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
|
436
440
|
const callType = callTypeResult.type;
|
437
441
|
if ((0, types_1.isInstantiableClass)(callType) && types_1.ClassType.isBuiltIn(callType, 'bool')) {
|
438
442
|
return (type) => {
|
@@ -455,7 +459,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
455
459
|
(0, types_1.isClassInstance)(type.details.declaredReturnType) &&
|
456
460
|
types_1.ClassType.isBuiltIn(type.details.declaredReturnType, 'TypeGuard'));
|
457
461
|
};
|
458
|
-
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* CallBaseDefaults */);
|
462
|
+
const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
|
459
463
|
const callType = callTypeResult.type;
|
460
464
|
if ((0, types_1.isFunction)(callType) && isFunctionReturnTypeGuard(callType)) {
|
461
465
|
isPossiblyTypeGuard = true;
|
@@ -505,8 +509,8 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
505
509
|
// We normally won't find a "not" operator here because they are stripped out
|
506
510
|
// by the binder when it creates condition flow nodes, but we can find this
|
507
511
|
// in the case of local variables type narrowing.
|
508
|
-
if (reference.nodeType === 38 /* Name */) {
|
509
|
-
if (testExpression.nodeType === 55 /* UnaryOperation */ && testExpression.operator === 38 /* Not */) {
|
512
|
+
if (reference.nodeType === 38 /* ParseNodeType.Name */) {
|
513
|
+
if (testExpression.nodeType === 55 /* ParseNodeType.UnaryOperation */ && testExpression.operator === 38 /* OperatorType.Not */) {
|
510
514
|
return getTypeNarrowingCallback(evaluator, reference, testExpression.expression, !isPositiveTest, recursionCount);
|
511
515
|
}
|
512
516
|
}
|
@@ -514,8 +518,8 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
|
|
514
518
|
}
|
515
519
|
exports.getTypeNarrowingCallback = getTypeNarrowingCallback;
|
516
520
|
function getTypeNarrowingCallbackForAliasedCondition(evaluator, reference, testExpression, isPositiveTest, recursionCount) {
|
517
|
-
if (testExpression.nodeType !== 38 /* Name */ ||
|
518
|
-
reference.nodeType !== 38 /* Name */ ||
|
521
|
+
if (testExpression.nodeType !== 38 /* ParseNodeType.Name */ ||
|
522
|
+
reference.nodeType !== 38 /* ParseNodeType.Name */ ||
|
519
523
|
testExpression === reference) {
|
520
524
|
return undefined;
|
521
525
|
}
|
@@ -524,7 +528,7 @@ function getTypeNarrowingCallbackForAliasedCondition(evaluator, reference, testE
|
|
524
528
|
// we need to validate that it is not modified between the test expression
|
525
529
|
// evaluation and the conditional check.
|
526
530
|
const testExprDecl = getDeclsForLocalVar(evaluator, testExpression, testExpression);
|
527
|
-
if (!testExprDecl || testExprDecl.length !== 1 || testExprDecl[0].type !== 1 /* Variable */) {
|
531
|
+
if (!testExprDecl || testExprDecl.length !== 1 || testExprDecl[0].type !== 1 /* DeclarationType.Variable */) {
|
528
532
|
return undefined;
|
529
533
|
}
|
530
534
|
const referenceDecls = getDeclsForLocalVar(evaluator, reference, testExpression);
|
@@ -565,7 +569,7 @@ function getTypeNarrowingCallbackForAliasedCondition(evaluator, reference, testE
|
|
565
569
|
// the current scope.
|
566
570
|
function getDeclsForLocalVar(evaluator, name, reachableFrom) {
|
567
571
|
const scope = (0, scopeUtils_1.getScopeForNode)(name);
|
568
|
-
if ((scope === null || scope === void 0 ? void 0 : scope.type) !== 1 /* Function */ && (scope === null || scope === void 0 ? void 0 : scope.type) !== 3 /* Module */) {
|
572
|
+
if ((scope === null || scope === void 0 ? void 0 : scope.type) !== 1 /* ScopeType.Function */ && (scope === null || scope === void 0 ? void 0 : scope.type) !== 3 /* ScopeType.Module */) {
|
569
573
|
return undefined;
|
570
574
|
}
|
571
575
|
const symbol = scope.lookUpSymbol(name.value);
|
@@ -574,14 +578,14 @@ function getDeclsForLocalVar(evaluator, name, reachableFrom) {
|
|
574
578
|
}
|
575
579
|
const decls = symbol.getDeclarations();
|
576
580
|
if (decls.length === 0 ||
|
577
|
-
decls.some((decl) => decl.type !== 1 /* Variable */ && decl.type !== 2 /* Parameter */)) {
|
581
|
+
decls.some((decl) => decl.type !== 1 /* DeclarationType.Variable */ && decl.type !== 2 /* DeclarationType.Parameter */)) {
|
578
582
|
return undefined;
|
579
583
|
}
|
580
584
|
// If there are any assignments within different scopes (e.g. via a "global" or
|
581
585
|
// "nonlocal" reference), don't consider it a local variable.
|
582
586
|
let prevDeclScope;
|
583
587
|
if (decls.some((decl) => {
|
584
|
-
const nodeToConsider = decl.type === 2 /* Parameter */ ? decl.node.name : decl.node;
|
588
|
+
const nodeToConsider = decl.type === 2 /* DeclarationType.Parameter */ ? decl.node.name : decl.node;
|
585
589
|
const declScopeNode = ParseTreeUtils.getExecutionScopeNode(nodeToConsider);
|
586
590
|
if (prevDeclScope && declScopeNode !== prevDeclScope) {
|
587
591
|
return true;
|
@@ -830,8 +834,8 @@ function getIsInstanceClassTypes(argType) {
|
|
830
834
|
}
|
831
835
|
else if ((0, types_1.isFunction)(subtype) &&
|
832
836
|
subtype.details.parameters.length === 2 &&
|
833
|
-
subtype.details.parameters[0].category === 1 /* ArgsList */ &&
|
834
|
-
subtype.details.parameters[1].category === 2 /* KwargsDict */) {
|
837
|
+
subtype.details.parameters[0].category === 1 /* ParameterCategory.ArgsList */ &&
|
838
|
+
subtype.details.parameters[1].category === 2 /* ParameterCategory.KwargsDict */) {
|
835
839
|
classTypeList.push(subtype);
|
836
840
|
}
|
837
841
|
else {
|
@@ -908,7 +912,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
908
912
|
let expandedTypes = (0, typeUtils_1.mapSubtypes)(type, (subtype) => {
|
909
913
|
return (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(subtype);
|
910
914
|
});
|
911
|
-
expandedTypes = evaluator.expandPromotionTypes(errorNode,
|
915
|
+
expandedTypes = evaluator.expandPromotionTypes(errorNode, expandedTypes);
|
912
916
|
// Filters the varType by the parameters of the isinstance
|
913
917
|
// and returns the list of types the varType could be after
|
914
918
|
// applying the filter.
|
@@ -946,13 +950,19 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
946
950
|
if (filterIsSuperclass) {
|
947
951
|
// If the variable type is a subclass of the isinstance filter,
|
948
952
|
// we haven't learned anything new about the variable type.
|
949
|
-
|
953
|
+
// If the varType is a Self or type[Self], retain the unnarrowedType.
|
954
|
+
if ((0, types_1.isTypeVar)(varType) && varType.details.isSynthesizedSelf) {
|
955
|
+
filteredTypes.push((0, typeUtils_1.addConditionToType)(varType, conditions));
|
956
|
+
}
|
957
|
+
else {
|
958
|
+
filteredTypes.push((0, typeUtils_1.addConditionToType)(concreteVarType, conditions));
|
959
|
+
}
|
950
960
|
}
|
951
961
|
else if (filterIsSubclass) {
|
952
962
|
if (evaluator.assignType(concreteVarType, concreteFilterType,
|
953
963
|
/* diag */ undefined,
|
954
964
|
/* destTypeVarContext */ undefined,
|
955
|
-
/* srcTypeVarContext */ undefined, 512 /* IgnoreTypeVarScope */ | 4096 /* IgnoreProtocolAssignmentCheck */)) {
|
965
|
+
/* srcTypeVarContext */ undefined, 512 /* AssignTypeFlags.IgnoreTypeVarScope */ | 4096 /* AssignTypeFlags.IgnoreProtocolAssignmentCheck */)) {
|
956
966
|
// If the variable type is a superclass of the isinstance
|
957
967
|
// filter, we can narrow the type to the subclass.
|
958
968
|
let specializedFilterType = filterType;
|
@@ -993,7 +1003,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
993
1003
|
effectiveMetaclass = concreteFilterType.details.effectiveMetaclass;
|
994
1004
|
}
|
995
1005
|
}
|
996
|
-
let newClassType = types_1.ClassType.createInstantiable(className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), fileInfo.moduleName, fileInfo.filePath, 0 /* None */, ParseTreeUtils.getTypeSourceId(errorNode),
|
1006
|
+
let newClassType = types_1.ClassType.createInstantiable(className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), fileInfo.moduleName, fileInfo.filePath, 0 /* ClassTypeFlags.None */, ParseTreeUtils.getTypeSourceId(errorNode),
|
997
1007
|
/* declaredMetaclass */ undefined, effectiveMetaclass, concreteVarType.details.docString);
|
998
1008
|
newClassType.details.baseClasses = [
|
999
1009
|
types_1.ClassType.cloneAsInstantiable(concreteVarType),
|
@@ -1075,7 +1085,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
1075
1085
|
isCallable = true;
|
1076
1086
|
}
|
1077
1087
|
else {
|
1078
|
-
isCallable = !!(0, typeUtils_1.lookUpClassMember)(concreteVarType, '__call__', 16 /* SkipInstanceMembers */);
|
1088
|
+
isCallable = !!(0, typeUtils_1.lookUpClassMember)(concreteVarType, '__call__', 16 /* MemberAccessFlags.SkipInstanceMembers */);
|
1079
1089
|
}
|
1080
1090
|
}
|
1081
1091
|
if (isCallable) {
|
@@ -1124,7 +1134,16 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
1124
1134
|
if ((0, types_1.isInstantiableClass)(concreteFilterType)) {
|
1125
1135
|
const filterMetaclass = concreteFilterType.details.effectiveMetaclass;
|
1126
1136
|
if (filterMetaclass && (0, types_1.isInstantiableClass)(filterMetaclass)) {
|
1127
|
-
|
1137
|
+
let isMetaclassOverlap = evaluator.assignType(metaclassType, types_1.ClassType.cloneAsInstance(filterMetaclass));
|
1138
|
+
// Handle the special case where the metaclass for the filter is type.
|
1139
|
+
// This will normally be treated as type[Any], which is compatible with
|
1140
|
+
// any metaclass, but we specifically want to treat type as the class
|
1141
|
+
// type[object] in this case.
|
1142
|
+
if (types_1.ClassType.isBuiltIn(filterMetaclass, 'type') && !filterMetaclass.isTypeArgumentExplicit) {
|
1143
|
+
if (!types_1.ClassType.isBuiltIn(metaclassType, 'type')) {
|
1144
|
+
isMetaclassOverlap = false;
|
1145
|
+
}
|
1146
|
+
}
|
1128
1147
|
if (isMetaclassOverlap) {
|
1129
1148
|
if (isPositiveTest) {
|
1130
1149
|
filteredTypes.push(filterType);
|
@@ -1167,7 +1186,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
|
|
1167
1186
|
if (evaluator.assignType(varType, (0, typeUtils_1.convertToInstance)(concreteFilterType),
|
1168
1187
|
/* diag */ undefined,
|
1169
1188
|
/* destTypeVarContext */ undefined,
|
1170
|
-
/* srcTypeVarContext */ undefined, 512 /* IgnoreTypeVarScope */)) {
|
1189
|
+
/* srcTypeVarContext */ undefined, 512 /* AssignTypeFlags.IgnoreTypeVarScope */)) {
|
1171
1190
|
// If the filter type is a Callable, use the original type. If the
|
1172
1191
|
// filter type is a callback protocol, use the filter type.
|
1173
1192
|
if ((0, types_1.isFunction)(filterType)) {
|
@@ -1445,6 +1464,14 @@ function narrowTypeForContainerElementType(evaluator, referenceType, elementType
|
|
1445
1464
|
canNarrow = false;
|
1446
1465
|
return referenceType;
|
1447
1466
|
}
|
1467
|
+
// Handle the special case where the reference type is a dict or Mapping and
|
1468
|
+
// the element type is a TypedDict. In this case, we can't say whether there
|
1469
|
+
// is a type overlap, so don't apply narrowing.
|
1470
|
+
if ((0, types_1.isClassInstance)(referenceType) && types_1.ClassType.isBuiltIn(referenceType, ['dict', 'Mapping'])) {
|
1471
|
+
if ((0, types_1.isClassInstance)(concreteElementType) && types_1.ClassType.isTypedDictClass(concreteElementType)) {
|
1472
|
+
return concreteElementType;
|
1473
|
+
}
|
1474
|
+
}
|
1448
1475
|
if (evaluator.assignType(referenceType, concreteElementType)) {
|
1449
1476
|
return concreteElementType;
|
1450
1477
|
}
|
@@ -1558,6 +1585,7 @@ exports.narrowTypeForDiscriminatedTupleComparison = narrowTypeForDiscriminatedTu
|
|
1558
1585
|
// literal value.
|
1559
1586
|
function narrowTypeForDiscriminatedLiteralFieldComparison(evaluator, referenceType, memberName, literalType, isPositiveTest) {
|
1560
1587
|
const narrowedType = (0, typeUtils_1.mapSubtypes)(referenceType, (subtype) => {
|
1588
|
+
var _a;
|
1561
1589
|
let memberInfo;
|
1562
1590
|
if ((0, types_1.isClassInstance)(subtype)) {
|
1563
1591
|
memberInfo = (0, typeUtils_1.lookUpObjectMember)(subtype, memberName);
|
@@ -1570,7 +1598,7 @@ function narrowTypeForDiscriminatedLiteralFieldComparison(evaluator, referenceTy
|
|
1570
1598
|
// Handle the case where the field is a property
|
1571
1599
|
// that has a declared literal return type for its getter.
|
1572
1600
|
if ((0, types_1.isClassInstance)(subtype) && (0, types_1.isClassInstance)(memberType) && (0, typeUtils_1.isProperty)(memberType)) {
|
1573
|
-
const getterType = memberType.
|
1601
|
+
const getterType = (_a = memberType.fgetInfo) === null || _a === void 0 ? void 0 : _a.methodType;
|
1574
1602
|
if (getterType && getterType.details.declaredReturnType) {
|
1575
1603
|
const getterReturnType = types_1.FunctionType.getSpecializedReturnType(getterType);
|
1576
1604
|
if (getterReturnType) {
|
@@ -1773,14 +1801,14 @@ exports.enumerateLiteralsForType = enumerateLiteralsForType;
|
|
1773
1801
|
function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allowIntersections) {
|
1774
1802
|
return evaluator.mapSubtypesExpandTypeVars(type, /* conditionFilter */ undefined, (subtype) => {
|
1775
1803
|
switch (subtype.category) {
|
1776
|
-
case 4 /* Function */:
|
1777
|
-
case 5 /* OverloadedFunction */: {
|
1804
|
+
case 4 /* TypeCategory.Function */:
|
1805
|
+
case 5 /* TypeCategory.OverloadedFunction */: {
|
1778
1806
|
return isPositiveTest ? subtype : undefined;
|
1779
1807
|
}
|
1780
|
-
case 7 /* Module */: {
|
1808
|
+
case 7 /* TypeCategory.Module */: {
|
1781
1809
|
return isPositiveTest ? undefined : subtype;
|
1782
1810
|
}
|
1783
|
-
case 6 /* Class */: {
|
1811
|
+
case 6 /* TypeCategory.Class */: {
|
1784
1812
|
if ((0, typeUtils_1.isNoneInstance)(subtype)) {
|
1785
1813
|
return isPositiveTest ? undefined : subtype;
|
1786
1814
|
}
|
@@ -1788,7 +1816,7 @@ function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allow
|
|
1788
1816
|
return isPositiveTest ? subtype : undefined;
|
1789
1817
|
}
|
1790
1818
|
// See if the object is callable.
|
1791
|
-
const callMemberType = (0, typeUtils_1.lookUpClassMember)(subtype, '__call__', 16 /* SkipInstanceMembers */);
|
1819
|
+
const callMemberType = (0, typeUtils_1.lookUpClassMember)(subtype, '__call__', 16 /* MemberAccessFlags.SkipInstanceMembers */);
|
1792
1820
|
if (!callMemberType) {
|
1793
1821
|
if (!isPositiveTest) {
|
1794
1822
|
return subtype;
|
@@ -1799,7 +1827,7 @@ function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allow
|
|
1799
1827
|
// new intersection type.
|
1800
1828
|
const className = `<callable subtype of ${subtype.details.name}>`;
|
1801
1829
|
const fileInfo = (0, analyzerNodeInfo_1.getFileInfo)(errorNode);
|
1802
|
-
let newClassType = types_1.ClassType.createInstantiable(className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), fileInfo.moduleName, fileInfo.filePath, 0 /* None */, ParseTreeUtils.getTypeSourceId(errorNode),
|
1830
|
+
let newClassType = types_1.ClassType.createInstantiable(className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), fileInfo.moduleName, fileInfo.filePath, 0 /* ClassTypeFlags.None */, ParseTreeUtils.getTypeSourceId(errorNode),
|
1803
1831
|
/* declaredMetaclass */ undefined, subtype.details.effectiveMetaclass, subtype.details.docString);
|
1804
1832
|
newClassType.details.baseClasses = [types_1.ClassType.cloneAsInstantiable(subtype)];
|
1805
1833
|
(0, typeUtils_1.computeMroLinearization)(newClassType);
|
@@ -1807,7 +1835,7 @@ function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allow
|
|
1807
1835
|
// Add a __call__ method to the new class.
|
1808
1836
|
const callMethod = types_1.FunctionType.createSynthesizedInstance('__call__');
|
1809
1837
|
const selfParam = {
|
1810
|
-
category: 0 /* Simple */,
|
1838
|
+
category: 0 /* ParameterCategory.Simple */,
|
1811
1839
|
name: 'self',
|
1812
1840
|
type: types_1.ClassType.cloneAsInstance(newClassType),
|
1813
1841
|
hasDeclaredType: true,
|
@@ -1815,7 +1843,7 @@ function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allow
|
|
1815
1843
|
types_1.FunctionType.addParameter(callMethod, selfParam);
|
1816
1844
|
types_1.FunctionType.addDefaultParameters(callMethod);
|
1817
1845
|
callMethod.details.declaredReturnType = types_1.UnknownType.create();
|
1818
|
-
newClassType.details.fields.set('__call__', symbol_1.Symbol.createWithType(4 /* ClassMember */, callMethod));
|
1846
|
+
newClassType.details.fields.set('__call__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, callMethod));
|
1819
1847
|
return types_1.ClassType.cloneAsInstance(newClassType);
|
1820
1848
|
}
|
1821
1849
|
return undefined;
|