@zzzen/pyright-internal 1.1.255 → 1.2.0-dev.20220703
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/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/analyzer/aliasDeclarationUtils.js +2 -2
- package/dist/analyzer/analyzerFileInfo.d.ts +1 -1
- package/dist/analyzer/analyzerNodeInfo.d.ts +4 -1
- package/dist/analyzer/analyzerNodeInfo.js +12 -1
- package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
- package/dist/analyzer/backgroundAnalysisProgram.js +3 -0
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.d.ts +6 -1
- package/dist/analyzer/binder.js +142 -32
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +4 -1
- package/dist/analyzer/checker.js +144 -73
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowUtils.js +33 -0
- package/dist/analyzer/codeFlowUtils.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +6 -3
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/dataClasses.js +6 -4
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declaration.d.ts +18 -6
- package/dist/analyzer/declaration.js +25 -5
- package/dist/analyzer/declaration.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +1 -1
- package/dist/analyzer/declarationUtils.js +19 -16
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/importResult.js +7 -0
- package/dist/analyzer/importResult.js.map +1 -1
- package/dist/analyzer/importStatementUtils.js +10 -1
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.js +1 -1
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/packageTypeReport.js +10 -1
- package/dist/analyzer/packageTypeReport.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +6 -6
- package/dist/analyzer/parseTreeUtils.d.ts +3 -3
- package/dist/analyzer/parseTreeUtils.js +27 -13
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.d.ts +4 -1
- package/dist/analyzer/parseTreeWalker.js +19 -1
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/program.d.ts +2 -1
- package/dist/analyzer/program.js +27 -23
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +2 -0
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.d.ts +0 -1
- package/dist/analyzer/protocols.js +4 -64
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/scope.js +22 -1
- package/dist/analyzer/scope.js.map +1 -1
- package/dist/analyzer/service.d.ts +20 -8
- package/dist/analyzer/service.js +39 -19
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.js +1 -1
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -0
- package/dist/analyzer/sourceFileInfoUtils.js +15 -0
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -0
- package/dist/analyzer/symbol.d.ts +3 -1
- package/dist/analyzer/symbol.js +39 -1
- package/dist/analyzer/symbol.js.map +1 -1
- package/dist/analyzer/tracePrinter.js +8 -4
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.js +11 -3
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +610 -208
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -1
- package/dist/analyzer/typeEvaluatorTypes.js +65 -1
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeEvaluatorWithTracker.js +2 -0
- package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +2 -0
- package/dist/analyzer/typeGuards.js +113 -69
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.js +27 -2
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeStubWriter.d.ts +4 -1
- package/dist/analyzer/typeStubWriter.js +36 -0
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.js +129 -33
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +2 -1
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +12 -4
- package/dist/analyzer/types.js +215 -6
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +1 -1
- package/dist/commands/commands.js +9 -0
- package/dist/commands/commands.js.map +1 -1
- package/dist/common/commandLineOptions.js +8 -1
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/core.js +7 -1
- package/dist/common/core.js.map +1 -1
- package/dist/common/diagnostic.js +9 -1
- package/dist/common/diagnostic.js.map +1 -1
- package/dist/common/host.js +7 -1
- package/dist/common/host.js.map +1 -1
- package/dist/common/pathUtils.d.ts +1 -0
- package/dist/common/pathUtils.js +34 -1
- package/dist/common/pathUtils.js.map +1 -1
- package/dist/common/stringUtils.d.ts +1 -0
- package/dist/common/stringUtils.js +8 -1
- package/dist/common/stringUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +10 -3
- package/dist/languageServerBase.js +40 -14
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +3 -0
- 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/callHierarchyProvider.js +9 -9
- package/dist/languageService/completionProvider.d.ts +2 -2
- package/dist/languageService/completionProvider.js +22 -18
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.js +3 -3
- package/dist/languageService/documentSymbolCollector.js +1 -1
- package/dist/languageService/documentSymbolProvider.js +10 -7
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.js +19 -5
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/referencesProvider.js +8 -5
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +1 -1
- package/dist/localization/localize.d.ts +27 -0
- package/dist/localization/localize.js +16 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +18 -2
- package/dist/parser/parseNodes.d.ts +44 -5
- package/dist/parser/parseNodes.js +191 -4
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.d.ts +3 -1
- package/dist/parser/parser.js +155 -24
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/stringTokenUtils.js +8 -1
- package/dist/parser/stringTokenUtils.js.map +1 -1
- package/dist/parser/tokenizer.js +4 -3
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/parser/tokenizerTypes.d.ts +5 -3
- package/dist/parser/tokenizerTypes.js +157 -1
- package/dist/parser/tokenizerTypes.js.map +1 -1
- package/dist/pyright.js +6 -1
- package/dist/pyright.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +12 -9
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/checker.test.js +4 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/config.test.js +14 -13
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/debug.test.js +6 -0
- package/dist/tests/debug.test.js.map +1 -1
- package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js +53 -0
- package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js.map +1 -0
- package/dist/tests/fourslash/fourslash.d.ts +16 -0
- package/dist/tests/fourslash/hover.class.docString.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.class.docString.fourslash.js +24 -0
- package/dist/tests/fourslash/hover.class.docString.fourslash.js.map +1 -0
- package/dist/tests/harness/fourslash/fourSlashParser.js +6 -0
- package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashTypes.js +19 -1
- package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.js +9 -1
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.Consts.d.ts +1 -0
- package/dist/tests/harness/fourslash/testState.Consts.js +1 -0
- package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +4 -3
- package/dist/tests/harness/fourslash/testState.js +27 -11
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/vfs/pathValidation.js +25 -1
- package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
- package/dist/tests/pathUtils.test.js +17 -0
- package/dist/tests/pathUtils.test.js.map +1 -1
- package/dist/tests/testUtils.js +1 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +9 -1
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +9 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +4 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.d.ts +1 -0
- package/dist/tests/typeEvaluator5.test.js +112 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -0
- package/dist/workspaceMap.d.ts +2 -1
- package/dist/workspaceMap.js +25 -3
- package/dist/workspaceMap.js.map +1 -1
- package/package.json +45 -45
- package/src/analyzer/aliasDeclarationUtils.ts +0 -169
- package/src/analyzer/analysis.ts +0 -92
- package/src/analyzer/analyzerFileInfo.ts +0 -56
- package/src/analyzer/analyzerNodeInfo.ts +0 -198
- package/src/analyzer/backgroundAnalysisProgram.ts +0 -311
- package/src/analyzer/binder.ts +0 -4081
- package/src/analyzer/checker.ts +0 -5507
- package/src/analyzer/circularDependency.ts +0 -52
- package/src/analyzer/codeFlowEngine.ts +0 -1548
- package/src/analyzer/codeFlowTypes.ts +0 -266
- package/src/analyzer/codeFlowUtils.ts +0 -436
- package/src/analyzer/commentUtils.ts +0 -174
- package/src/analyzer/constraintSolver.ts +0 -926
- package/src/analyzer/constructorTransform.ts +0 -317
- package/src/analyzer/dataClasses.ts +0 -999
- package/src/analyzer/declaration.ts +0 -252
- package/src/analyzer/declarationUtils.ts +0 -238
- package/src/analyzer/docStringConversion.ts +0 -850
- package/src/analyzer/docStringUtils.ts +0 -112
- package/src/analyzer/functionTransform.ts +0 -137
- package/src/analyzer/importResolver.ts +0 -2308
- package/src/analyzer/importResult.ts +0 -98
- package/src/analyzer/importStatementUtils.ts +0 -834
- package/src/analyzer/namedTuples.ts +0 -422
- package/src/analyzer/packageTypeReport.ts +0 -108
- package/src/analyzer/packageTypeVerifier.ts +0 -1466
- package/src/analyzer/parentDirectoryCache.ts +0 -88
- package/src/analyzer/parseTreeCleaner.ts +0 -35
- package/src/analyzer/parseTreeUtils.ts +0 -2165
- package/src/analyzer/parseTreeWalker.ts +0 -663
- package/src/analyzer/patternMatching.ts +0 -1356
- package/src/analyzer/program.ts +0 -2778
- package/src/analyzer/properties.ts +0 -534
- package/src/analyzer/protocols.ts +0 -660
- package/src/analyzer/pyTypedUtils.ts +0 -52
- package/src/analyzer/pythonPathUtils.ts +0 -201
- package/src/analyzer/scope.ts +0 -202
- package/src/analyzer/scopeUtils.ts +0 -81
- package/src/analyzer/service.ts +0 -1679
- package/src/analyzer/sourceFile.ts +0 -1401
- package/src/analyzer/sourceMapper.ts +0 -717
- package/src/analyzer/staticExpressions.ts +0 -308
- package/src/analyzer/symbol.ts +0 -249
- package/src/analyzer/symbolNameUtils.ts +0 -50
- package/src/analyzer/symbolUtils.ts +0 -49
- package/src/analyzer/testWalker.ts +0 -101
- package/src/analyzer/tracePrinter.ts +0 -264
- package/src/analyzer/typeCache.ts +0 -181
- package/src/analyzer/typeDocStringUtils.ts +0 -371
- package/src/analyzer/typeEvaluator.ts +0 -23395
- package/src/analyzer/typeEvaluatorTypes.ts +0 -452
- package/src/analyzer/typeEvaluatorWithTracker.ts +0 -161
- package/src/analyzer/typeGuards.ts +0 -1828
- package/src/analyzer/typePrinter.ts +0 -807
- package/src/analyzer/typeStubWriter.ts +0 -727
- package/src/analyzer/typeUtils.ts +0 -3126
- package/src/analyzer/typeVarContext.ts +0 -330
- package/src/analyzer/typedDicts.ts +0 -950
- package/src/analyzer/types.ts +0 -2857
- package/src/backgroundAnalysis.ts +0 -49
- package/src/backgroundAnalysisBase.ts +0 -606
- package/src/backgroundThreadBase.ts +0 -143
- package/src/commands/commandController.ts +0 -62
- package/src/commands/commandResult.ts +0 -21
- package/src/commands/commands.ts +0 -16
- package/src/commands/createTypeStub.ts +0 -56
- package/src/commands/quickActionCommand.ts +0 -40
- package/src/commands/restartServer.ts +0 -20
- package/src/common/cancellationUtils.ts +0 -71
- package/src/common/chokidarFileWatcherProvider.ts +0 -74
- package/src/common/collectionUtils.ts +0 -379
- package/src/common/commandLineOptions.ts +0 -132
- package/src/common/configOptions.ts +0 -1291
- package/src/common/console.ts +0 -201
- package/src/common/core.ts +0 -152
- package/src/common/crypto.ts +0 -60
- package/src/common/debug.ts +0 -144
- package/src/common/deferred.ts +0 -78
- package/src/common/diagnostic.ts +0 -191
- package/src/common/diagnosticRules.ts +0 -80
- package/src/common/diagnosticSink.ts +0 -150
- package/src/common/editAction.ts +0 -46
- package/src/common/extensibility.ts +0 -35
- package/src/common/extensions.ts +0 -21
- package/src/common/fileBasedCancellationUtils.ts +0 -274
- package/src/common/fileSystem.ts +0 -152
- package/src/common/fullAccessHost.ts +0 -203
- package/src/common/host.ts +0 -49
- package/src/common/logTracker.ts +0 -157
- package/src/common/lspUtils.ts +0 -18
- package/src/common/memUtils.ts +0 -36
- package/src/common/pathConsts.ts +0 -16
- package/src/common/pathUtils.ts +0 -987
- package/src/common/positionUtils.ts +0 -78
- package/src/common/progressReporter.ts +0 -53
- package/src/common/pythonVersion.ts +0 -74
- package/src/common/realFileSystem.ts +0 -433
- package/src/common/stringUtils.ts +0 -161
- package/src/common/textEditUtils.ts +0 -31
- package/src/common/textRange.ts +0 -225
- package/src/common/textRangeCollection.ts +0 -122
- package/src/common/timing.ts +0 -105
- package/src/common/uriParser.ts +0 -26
- package/src/common/workspaceEditUtils.ts +0 -100
- package/src/languageServerBase.ts +0 -1556
- package/src/languageService/analyzerServiceExecutor.ts +0 -144
- package/src/languageService/autoImporter.ts +0 -926
- package/src/languageService/callHierarchyProvider.ts +0 -476
- package/src/languageService/codeActionProvider.ts +0 -85
- package/src/languageService/completionProvider.ts +0 -3103
- package/src/languageService/definitionProvider.ts +0 -235
- package/src/languageService/documentHighlightProvider.ts +0 -61
- package/src/languageService/documentSymbolCollector.ts +0 -466
- package/src/languageService/documentSymbolProvider.ts +0 -466
- package/src/languageService/hoverProvider.ts +0 -499
- package/src/languageService/importAdder.ts +0 -437
- package/src/languageService/importSorter.ts +0 -196
- package/src/languageService/indentationUtils.ts +0 -813
- package/src/languageService/quickActions.ts +0 -113
- package/src/languageService/referencesProvider.ts +0 -316
- package/src/languageService/renameModuleProvider.ts +0 -1400
- package/src/languageService/signatureHelpProvider.ts +0 -227
- package/src/languageService/tooltipUtils.ts +0 -147
- package/src/localization/localize.ts +0 -1272
- package/src/localization/package.nls.de.json +0 -3
- package/src/localization/package.nls.en-us.json +0 -636
- package/src/localization/package.nls.es.json +0 -3
- package/src/localization/package.nls.fr.json +0 -3
- package/src/localization/package.nls.ja.json +0 -3
- package/src/localization/package.nls.ru.json +0 -3
- package/src/localization/package.nls.zh-cn.json +0 -3
- package/src/localization/package.nls.zh-tw.json +0 -3
- package/src/nodeMain.ts +0 -21
- package/src/nodeServer.ts +0 -30
- package/src/parser/characterStream.ts +0 -145
- package/src/parser/characters.ts +0 -285
- package/src/parser/parseNodes.ts +0 -2338
- package/src/parser/parser.ts +0 -4859
- package/src/parser/stringTokenUtils.ts +0 -564
- package/src/parser/tokenizer.ts +0 -1379
- package/src/parser/tokenizerTypes.ts +0 -420
- package/src/parser/unicode.ts +0 -2917
- package/src/pyright.ts +0 -824
- package/src/pyrightFileSystem.ts +0 -237
- package/src/readonlyAugmentedFileSystem.ts +0 -204
- package/src/server.ts +0 -298
- package/src/tests/chainedSourceFiles.test.ts +0 -183
- package/src/tests/checker.test.ts +0 -445
- package/src/tests/collectionUtils.test.ts +0 -178
- package/src/tests/common.test.ts +0 -117
- package/src/tests/config.test.ts +0 -291
- package/src/tests/debug.test.ts +0 -120
- package/src/tests/deferred.test.ts +0 -54
- package/src/tests/diagnosticOverrides.test.ts +0 -104
- package/src/tests/docStringConversion.test.ts +0 -823
- package/src/tests/docStringUtils.test.ts +0 -57
- package/src/tests/documentSymbolCollector.test.ts +0 -735
- package/src/tests/filesystem.test.ts +0 -215
- package/src/tests/fourSlashParser.test.ts +0 -330
- package/src/tests/fourSlashRunner.test.ts +0 -36
- package/src/tests/fourslash/completions.autoimport.Lib.Found.Type.fourslash.ts +0 -33
- package/src/tests/fourslash/completions.autoimport.Lib.Found.duplication.fourslash.ts +0 -47
- package/src/tests/fourslash/completions.autoimport.Lib.NotFound.fourslash.ts +0 -14
- package/src/tests/fourslash/completions.autoimport.disabled.fourslash.ts +0 -25
- package/src/tests/fourslash/completions.autoimport.duplicates.fourslash.ts +0 -36
- package/src/tests/fourslash/completions.autoimport.fourslash.ts +0 -29
- package/src/tests/fourslash/completions.autoimport.fromImport.fourslash.ts +0 -130
- package/src/tests/fourslash/completions.autoimport.plainText.fourslash.ts +0 -29
- package/src/tests/fourslash/completions.autoimport.shadow.fourslash.ts +0 -48
- package/src/tests/fourslash/completions.autoimport.submodule.fourslash.ts +0 -31
- package/src/tests/fourslash/completions.autoimport.topLevel.fourslash.ts +0 -57
- package/src/tests/fourslash/completions.builtinDocstrings.fourslash.ts +0 -117
- package/src/tests/fourslash/completions.builtinOverride.fourslash.ts +0 -22
- package/src/tests/fourslash/completions.call.stringLiteral.fourslash.ts +0 -55
- package/src/tests/fourslash/completions.call.typedDict.fourslash.ts +0 -247
- package/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts +0 -163
- package/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts +0 -135
- package/src/tests/fourslash/completions.classVariable.fourslash.ts +0 -37
- package/src/tests/fourslash/completions.comment.fourslash.ts +0 -28
- package/src/tests/fourslash/completions.declNames.class.fourslash.ts +0 -35
- package/src/tests/fourslash/completions.declNames.exception.fourslash.ts +0 -18
- package/src/tests/fourslash/completions.declNames.for.fourslash.ts +0 -30
- package/src/tests/fourslash/completions.declNames.importAlias.fourslash.ts +0 -15
- package/src/tests/fourslash/completions.declNames.lambda.fourslash.ts +0 -45
- package/src/tests/fourslash/completions.declNames.method.fourslash.ts +0 -71
- package/src/tests/fourslash/completions.declNames.overload.fourslash.ts +0 -156
- package/src/tests/fourslash/completions.declNames.topLevelOverload.fourslash.ts +0 -141
- package/src/tests/fourslash/completions.dictionary.keys.complex.fourslash.ts +0 -76
- package/src/tests/fourslash/completions.dictionary.keys.expression.fourslash.ts +0 -63
- package/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts +0 -161
- package/src/tests/fourslash/completions.dictionary.keys.simple.fourslash.ts +0 -151
- package/src/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.ts +0 -116
- package/src/tests/fourslash/completions.dictionary.keys.symbols.fourslash.ts +0 -53
- package/src/tests/fourslash/completions.enums.members.fourslash.ts +0 -44
- package/src/tests/fourslash/completions.excluded.fourslash.ts +0 -12
- package/src/tests/fourslash/completions.fourslash.ts +0 -51
- package/src/tests/fourslash/completions.fstring.fourslash.ts +0 -33
- package/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts +0 -96
- package/src/tests/fourslash/completions.fuzzyMatching.fourslash.ts +0 -30
- package/src/tests/fourslash/completions.importDunderNames.fourslash.ts +0 -31
- package/src/tests/fourslash/completions.importSubmodule.fourslash.ts +0 -26
- package/src/tests/fourslash/completions.importsDuplicates.fourslash.ts +0 -23
- package/src/tests/fourslash/completions.inList.fourslash.ts +0 -33
- package/src/tests/fourslash/completions.included.fourslash.ts +0 -12
- package/src/tests/fourslash/completions.indexer.keys.getitem.fourslash.ts +0 -57
- package/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts +0 -28
- package/src/tests/fourslash/completions.inherited.overload.docFromScrWithStub.fourslash.ts +0 -52
- package/src/tests/fourslash/completions.inherited.overload.docFromStub.fourslash.ts +0 -53
- package/src/tests/fourslash/completions.inherited.property.docFromSrc.fourslash.ts +0 -104
- package/src/tests/fourslash/completions.inherited.property.docFromStub.fourslash.ts +0 -108
- package/src/tests/fourslash/completions.keywords.pythonVersion.fourslash.ts +0 -72
- package/src/tests/fourslash/completions.libCodeAndStub.fourslash.ts +0 -79
- package/src/tests/fourslash/completions.libCodeNoStub.fourslash.ts +0 -69
- package/src/tests/fourslash/completions.libStub.fourslash.ts +0 -69
- package/src/tests/fourslash/completions.literals.fourslash.ts +0 -33
- package/src/tests/fourslash/completions.localCode.fourslash.ts +0 -74
- package/src/tests/fourslash/completions.moduleContext.UnknownMemberOnInstance.fourslash.ts +0 -17
- package/src/tests/fourslash/completions.moduleContext.UnknownStaticFunctionOnClass.fourslash.ts +0 -57
- package/src/tests/fourslash/completions.moduleContext.libCodeNoStub.fourslash.ts +0 -30
- package/src/tests/fourslash/completions.overloads.fourslash.ts +0 -40
- package/src/tests/fourslash/completions.override.default.fourslash.ts +0 -47
- package/src/tests/fourslash/completions.override.default.importStub.ts +0 -50
- package/src/tests/fourslash/completions.override.default.imported.fourslash.ts +0 -61
- package/src/tests/fourslash/completions.override.default.stub.fourslash.ts +0 -47
- package/src/tests/fourslash/completions.override.fourslash.ts +0 -47
- package/src/tests/fourslash/completions.override.property.fourslash.ts +0 -31
- package/src/tests/fourslash/completions.override.property.stub.fourslash.ts +0 -31
- package/src/tests/fourslash/completions.override.staticAndClassmethod.fourslash.ts +0 -64
- package/src/tests/fourslash/completions.override.stub.fourslash.ts +0 -47
- package/src/tests/fourslash/completions.override2.fourslash.ts +0 -71
- package/src/tests/fourslash/completions.parameters.fourslash.ts +0 -23
- package/src/tests/fourslash/completions.params.fourslash.ts +0 -24
- package/src/tests/fourslash/completions.parentFolder.fourslash.ts +0 -17
- package/src/tests/fourslash/completions.parentFolders.fourslash.ts +0 -77
- package/src/tests/fourslash/completions.plainText.fourslash.ts +0 -34
- package/src/tests/fourslash/completions.private.fourslash.ts +0 -64
- package/src/tests/fourslash/completions.property.fourslash.ts +0 -28
- package/src/tests/fourslash/completions.propertyDocStrings.fourslash.ts +0 -64
- package/src/tests/fourslash/completions.self.fourslash.ts +0 -43
- package/src/tests/fourslash/completions.stringLiteral.escape.fourslash.ts +0 -71
- package/src/tests/fourslash/completions.stringLiteral.fourslash.ts +0 -79
- package/src/tests/fourslash/completions.typeAlias.fourslash.ts +0 -29
- package/src/tests/fourslash/completions.typeshed.fourslash.ts +0 -9
- package/src/tests/fourslash/completions.vardecls.fourslash.ts +0 -40
- package/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +0 -69
- package/src/tests/fourslash/completions.wildcardimports.fourslash.ts +0 -116
- package/src/tests/fourslash/completions.with.fourslash.ts +0 -26
- package/src/tests/fourslash/diagnostics.missingModuleSource.fourslash.ts +0 -69
- package/src/tests/fourslash/findDefinitions.builtinClass.fourslash.ts +0 -29
- package/src/tests/fourslash/findDefinitions.classes.fourslash.ts +0 -101
- package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.fourslash.ts +0 -29
- package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.onlyStubs.ts +0 -24
- package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.fourslash.ts +0 -29
- package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.onlySource.fourslash.ts +0 -25
- package/src/tests/fourslash/findDefinitions.fields.fourslash.ts +0 -131
- package/src/tests/fourslash/findDefinitions.functions.fourslash.ts +0 -87
- package/src/tests/fourslash/findDefinitions.methods.fourslash.ts +0 -162
- package/src/tests/fourslash/findDefinitions.modules.fourslash.ts +0 -50
- package/src/tests/fourslash/findDefinitions.namespaceImport.fourslash.ts +0 -40
- package/src/tests/fourslash/findDefinitions.overloads.fourslash.ts +0 -223
- package/src/tests/fourslash/findDefinitions.parameters.fourslash.ts +0 -162
- package/src/tests/fourslash/findDefinitions.sourceAndStub.function.fourslash.ts +0 -26
- package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClass.fourslash.ts +0 -32
- package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClassMethod.fourslash.ts +0 -33
- package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClass.fourslash.ts +0 -28
- package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassMethod.fourslash.ts +0 -29
- package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadOnly.fourslash.ts +0 -31
- package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadWrite.fourslash.ts +0 -36
- package/src/tests/fourslash/findDefinitions.sourceOnly.class.fourslash.ts +0 -29
- package/src/tests/fourslash/findDefinitions.sourceOnly.function1.fourslash.ts +0 -28
- package/src/tests/fourslash/findDefinitions.sourceOnly.function2.fourslash.ts +0 -28
- package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport1.fourslash.ts +0 -22
- package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport2.fourslash.ts +0 -22
- package/src/tests/fourslash/findDefinitions.stubOnly.fourslash.ts +0 -61
- package/src/tests/fourslash/findDefinitions.stubPackages.fourslash.ts +0 -71
- package/src/tests/fourslash/findDefinitions.typedDict.keys.fourslash.ts +0 -99
- package/src/tests/fourslash/findDefinitions.variables.fourslash.ts +0 -88
- package/src/tests/fourslash/findDefinitions.wildcardimports.fourslash.ts +0 -117
- package/src/tests/fourslash/findTypeDefinitions.builtinClass.fourslash.ts +0 -26
- package/src/tests/fourslash/findTypeDefinitions.classes.fourslash.ts +0 -72
- package/src/tests/fourslash/findTypeDefinitions.unions.fourslash.ts +0 -26
- package/src/tests/fourslash/findallreferences.classPropertyReadWrite.ts +0 -39
- package/src/tests/fourslash/findallreferences.fourslash.ts +0 -34
- package/src/tests/fourslash/findallreferences.importalias.fourslash.ts +0 -34
- package/src/tests/fourslash/findallreferences.invokedFromLibrary.fourslash.ts +0 -52
- package/src/tests/fourslash/findallreferences.module.nested.fourslash.ts +0 -67
- package/src/tests/fourslash/findallreferences.modules.duplicated.fourslash.ts +0 -59
- package/src/tests/fourslash/findallreferences.modules.fourslash.ts +0 -46
- package/src/tests/fourslash/findallreferences.modules.shadow.fourslash.ts +0 -95
- package/src/tests/fourslash/findallreferences.openFiles.fourslash.ts +0 -37
- package/src/tests/fourslash/findallreferences.parameter.fourslash.ts +0 -24
- package/src/tests/fourslash/findallreferences.sourceAndStub.class.fourslash.ts +0 -33
- package/src/tests/fourslash/findallreferences.sourceAndStub.classMethod.fourslash.ts +0 -37
- package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadOnly.fourslash.ts +0 -40
- package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadWrite.fourslash.skip.ts +0 -48
- package/src/tests/fourslash/findallreferences.sourceAndStub.function.fourslash.ts +0 -35
- package/src/tests/fourslash/findallreferences.variable.fourslash.ts +0 -24
- package/src/tests/fourslash/fourslash.ts +0 -411
- package/src/tests/fourslash/highlightreferences.attributes.fourslash.ts +0 -31
- package/src/tests/fourslash/hover.builtinDocstrings.fourslash.ts +0 -64
- package/src/tests/fourslash/hover.classNoInit.fourslash.ts +0 -14
- package/src/tests/fourslash/hover.docFromScr.stringFormat.fourslash.ts +0 -52
- package/src/tests/fourslash/hover.docFromSrc.fourslash.ts +0 -83
- package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.ts +0 -26
- package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.ts +0 -26
- package/src/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.ts +0 -23
- package/src/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.ts +0 -22
- package/src/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.ts +0 -46
- package/src/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.ts +0 -29
- package/src/tests/fourslash/hover.docFromSrc.typeshed.fourslash.ts +0 -20
- package/src/tests/fourslash/hover.docstring.links.fourslash.ts +0 -12
- package/src/tests/fourslash/hover.docstring.overloads.fourslash.ts +0 -41
- package/src/tests/fourslash/hover.docstring.split.fourslash.ts +0 -24
- package/src/tests/fourslash/hover.fourslash.ts +0 -20
- package/src/tests/fourslash/hover.import.django.view.fourslash.ts +0 -27
- package/src/tests/fourslash/hover.import.fourslash.ts +0 -11
- package/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts +0 -63
- package/src/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.ts +0 -54
- package/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts +0 -42
- package/src/tests/fourslash/hover.inherited.overload.docFromSrcWithStub.fourslash.ts +0 -46
- package/src/tests/fourslash/hover.inherited.overload.docFromStub.fourslash.ts +0 -47
- package/src/tests/fourslash/hover.inherited.property.docFromSrcWithStub.fourslash.ts +0 -87
- package/src/tests/fourslash/hover.inherited.property.docFromStub.fourslash.ts +0 -91
- package/src/tests/fourslash/hover.init.fourslash.ts +0 -39
- package/src/tests/fourslash/hover.libCodeAndStub.fourslash.ts +0 -52
- package/src/tests/fourslash/hover.libCodeNoStub.fourslash.ts +0 -41
- package/src/tests/fourslash/hover.libStub.fourslash.ts +0 -41
- package/src/tests/fourslash/hover.optionalAliasParameter.fourslash.ts +0 -14
- package/src/tests/fourslash/hover.plainText.fourslash.ts +0 -21
- package/src/tests/fourslash/hover.typedDict.key.fourslash.ts +0 -51
- package/src/tests/fourslash/hover.variable.docString.fourslash.ts +0 -41
- package/src/tests/fourslash/hover.wildcardimports.fourslash.ts +0 -80
- package/src/tests/fourslash/import.publicSymbols.fourslash.ts +0 -65
- package/src/tests/fourslash/import.pytyped.dunderAll.fourslash.ts +0 -77
- package/src/tests/fourslash/import.pytyped.privateSymbols.fourslash.ts +0 -65
- package/src/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.ts +0 -38
- package/src/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.ts +0 -38
- package/src/tests/fourslash/import.wildcard.fourslash.ts +0 -27
- package/src/tests/fourslash/importnotresolved.fourslash.ts +0 -13
- package/src/tests/fourslash/missingModuleSource.disablingInStrictMode.fourslash.ts +0 -20
- package/src/tests/fourslash/missingModuleSource.fourslash.ts +0 -14
- package/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts +0 -33
- package/src/tests/fourslash/missingTypeStub.command.multipart.fourslash.ts +0 -48
- package/src/tests/fourslash/missingTypeStub.command.singlefile.fourslash.ts +0 -38
- package/src/tests/fourslash/missingTypeStub.command.singlepart.fourslash.ts +0 -38
- package/src/tests/fourslash/missingTypeStub.fourslash.ts +0 -20
- package/src/tests/fourslash/missingTypeStub.invokeCodeAction.fourslash.ts +0 -36
- package/src/tests/fourslash/noerrors.fourslash.ts +0 -9
- package/src/tests/fourslash/orderImports1.command.fourslash.ts +0 -20
- package/src/tests/fourslash/orderImports2.command.fourslash.ts +0 -24
- package/src/tests/fourslash/rename.externallyHidden.fourslash.ts +0 -24
- package/src/tests/fourslash/rename.externallyHidden.params.fourslash.ts +0 -24
- package/src/tests/fourslash/rename.fourslash.ts +0 -29
- package/src/tests/fourslash/rename.library.fourslash.ts +0 -29
- package/src/tests/fourslash/rename.library.sourceAndStub.fourslash.ts +0 -33
- package/src/tests/fourslash/rename.multipleDecl.fourslash.ts +0 -21
- package/src/tests/fourslash/rename.sourceAndStub.fourslash.ts +0 -37
- package/src/tests/fourslash/rename.string.excluded.fourslash.ts +0 -43
- package/src/tests/fourslash/rename.string.fourslash.ts +0 -26
- package/src/tests/fourslash/signature.builtinDocstrings.fourslash.ts +0 -63
- package/src/tests/fourslash/signature.complicated.fourslash.ts +0 -100
- package/src/tests/fourslash/signature.cornercases.fourslash.ts +0 -23
- package/src/tests/fourslash/signature.docstrings.fourslash.ts +0 -43
- package/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts +0 -50
- package/src/tests/fourslash/signature.docstrings.wildcardimports.fourslash.ts +0 -122
- package/src/tests/fourslash/signature.overload.fourslash.ts +0 -64
- package/src/tests/fourslash/signature.simple.fourslash.ts +0 -104
- package/src/tests/harness/fourslash/fourSlashParser.ts +0 -441
- package/src/tests/harness/fourslash/fourSlashTypes.ts +0 -134
- package/src/tests/harness/fourslash/runner.ts +0 -99
- package/src/tests/harness/fourslash/testLanguageService.ts +0 -142
- package/src/tests/harness/fourslash/testState.Consts.ts +0 -29
- package/src/tests/harness/fourslash/testState.ts +0 -1993
- package/src/tests/harness/testAccessHost.ts +0 -23
- package/src/tests/harness/testHost.ts +0 -177
- package/src/tests/harness/utils.ts +0 -355
- package/src/tests/harness/vfs/factory.ts +0 -199
- package/src/tests/harness/vfs/filesystem.ts +0 -1893
- package/src/tests/harness/vfs/pathValidation.ts +0 -154
- package/src/tests/importAdder.test.ts +0 -1361
- package/src/tests/importResolver.test.ts +0 -534
- package/src/tests/importStatementUtils.test.ts +0 -526
- package/src/tests/indentationUtils.ptvs.test.ts +0 -388
- package/src/tests/indentationUtils.reindent.test.ts +0 -403
- package/src/tests/indentationUtils.test.ts +0 -455
- package/src/tests/ipythonMode.test.ts +0 -365
- package/src/tests/localizer.test.ts +0 -47
- package/src/tests/parseTreeUtils.test.ts +0 -281
- package/src/tests/parser.test.ts +0 -99
- package/src/tests/pathUtils.test.ts +0 -321
- package/src/tests/pyrightFileSystem.test.ts +0 -183
- package/src/tests/renameModule.folder.test.ts +0 -261
- package/src/tests/renameModule.fromImports.test.ts +0 -952
- package/src/tests/renameModule.imports.test.ts +0 -450
- package/src/tests/renameModule.misc.test.ts +0 -765
- package/src/tests/renameModule.relativePath.test.ts +0 -277
- package/src/tests/renameModuleTestUtils.ts +0 -210
- package/src/tests/samples/abstractClass1.py +0 -51
- package/src/tests/samples/abstractClass2.py +0 -25
- package/src/tests/samples/abstractClass3.py +0 -30
- package/src/tests/samples/abstractClass4.py +0 -30
- package/src/tests/samples/abstractClass5.py +0 -42
- package/src/tests/samples/abstractClass6.py +0 -25
- package/src/tests/samples/abstractClass7.py +0 -22
- package/src/tests/samples/abstractClass8.py +0 -27
- package/src/tests/samples/annotated1.py +0 -72
- package/src/tests/samples/annotatedVar1.py +0 -22
- package/src/tests/samples/annotatedVar2.py +0 -28
- package/src/tests/samples/annotatedVar3.py +0 -54
- package/src/tests/samples/annotatedVar4.py +0 -24
- package/src/tests/samples/annotatedVar5.py +0 -37
- package/src/tests/samples/annotatedVar6.py +0 -22
- package/src/tests/samples/annotatedVar7.py +0 -13
- package/src/tests/samples/annotatedVar8.py +0 -29
- package/src/tests/samples/annotations1.py +0 -98
- package/src/tests/samples/annotations2.py +0 -33
- package/src/tests/samples/annotations3.py +0 -43
- package/src/tests/samples/annotations4.py +0 -54
- package/src/tests/samples/annotations5.py +0 -9
- package/src/tests/samples/annotations6.py +0 -29
- package/src/tests/samples/assert1.py +0 -22
- package/src/tests/samples/assertType1.py +0 -46
- package/src/tests/samples/assignment1.py +0 -58
- package/src/tests/samples/assignment10.py +0 -14
- package/src/tests/samples/assignment2.py +0 -40
- package/src/tests/samples/assignment3.py +0 -46
- package/src/tests/samples/assignment4.py +0 -20
- package/src/tests/samples/assignment5.py +0 -16
- package/src/tests/samples/assignment6.py +0 -25
- package/src/tests/samples/assignment7.py +0 -13
- package/src/tests/samples/assignment8.py +0 -40
- package/src/tests/samples/assignment9.py +0 -25
- package/src/tests/samples/assignmentExpr1.py +0 -23
- package/src/tests/samples/assignmentExpr2.py +0 -49
- package/src/tests/samples/assignmentExpr3.py +0 -27
- package/src/tests/samples/assignmentExpr4.py +0 -49
- package/src/tests/samples/assignmentExpr5.py +0 -15
- package/src/tests/samples/assignmentExpr6.py +0 -10
- package/src/tests/samples/assignmentExpr7.py +0 -13
- package/src/tests/samples/assignmentExpr8.py +0 -11
- package/src/tests/samples/assignmentExpr9.py +0 -28
- package/src/tests/samples/async1.py +0 -49
- package/src/tests/samples/augmentedAssignment1.py +0 -62
- package/src/tests/samples/augmentedAssignment2.py +0 -23
- package/src/tests/samples/augmentedAssignment3.py +0 -8
- package/src/tests/samples/await1.py +0 -23
- package/src/tests/samples/await2.py +0 -25
- package/src/tests/samples/badToken1.py +0 -6
- package/src/tests/samples/builtins1.py +0 -2
- package/src/tests/samples/call1.py +0 -93
- package/src/tests/samples/call2.py +0 -118
- package/src/tests/samples/call3.py +0 -168
- package/src/tests/samples/call4.py +0 -13
- package/src/tests/samples/call5.py +0 -95
- package/src/tests/samples/call6.py +0 -35
- package/src/tests/samples/call7.py +0 -57
- package/src/tests/samples/callSite1.py +0 -6
- package/src/tests/samples/callSite2.py +0 -12
- package/src/tests/samples/callable1.py +0 -53
- package/src/tests/samples/callable2.py +0 -58
- package/src/tests/samples/callable3.py +0 -28
- package/src/tests/samples/callable4.py +0 -32
- package/src/tests/samples/callable5.py +0 -40
- package/src/tests/samples/callable6.py +0 -83
- package/src/tests/samples/callbackProtocol1.py +0 -119
- package/src/tests/samples/callbackProtocol2.py +0 -29
- package/src/tests/samples/callbackProtocol3.py +0 -23
- package/src/tests/samples/callbackProtocol4.py +0 -73
- package/src/tests/samples/callbackProtocol5.py +0 -66
- package/src/tests/samples/callbackProtocol6.py +0 -66
- package/src/tests/samples/callbackProtocol7.py +0 -16
- package/src/tests/samples/callbackProtocol8.py +0 -16
- package/src/tests/samples/capturedVariable1.py +0 -106
- package/src/tests/samples/circular1.py +0 -16
- package/src/tests/samples/circular2.py +0 -38
- package/src/tests/samples/circularBaseClass.py +0 -17
- package/src/tests/samples/classGetItem1.py +0 -30
- package/src/tests/samples/classVar1.py +0 -41
- package/src/tests/samples/classVar2.py +0 -29
- package/src/tests/samples/classVar3.py +0 -46
- package/src/tests/samples/classVar4.py +0 -36
- package/src/tests/samples/classes1.py +0 -50
- package/src/tests/samples/classes3.py +0 -48
- package/src/tests/samples/classes4.py +0 -15
- package/src/tests/samples/classes5.py +0 -260
- package/src/tests/samples/classes6.py +0 -16
- package/src/tests/samples/classes7.py +0 -18
- package/src/tests/samples/classes8.py +0 -47
- package/src/tests/samples/codeFlow1.py +0 -65
- package/src/tests/samples/codeFlow2.py +0 -26
- package/src/tests/samples/codeFlow3.py +0 -8
- package/src/tests/samples/codeFlow4.py +0 -133
- package/src/tests/samples/codeFlow5.py +0 -10
- package/src/tests/samples/codeFlow6.py +0 -35
- package/src/tests/samples/codeFlow7.py +0 -35
- package/src/tests/samples/comparison1.py +0 -77
- package/src/tests/samples/comparison2.py +0 -37
- package/src/tests/samples/complex1.py +0 -17
- package/src/tests/samples/constant1.py +0 -40
- package/src/tests/samples/constants1.py +0 -64
- package/src/tests/samples/constructor1.py +0 -30
- package/src/tests/samples/constructor10.py +0 -19
- package/src/tests/samples/constructor11.py +0 -32
- package/src/tests/samples/constructor12.py +0 -20
- package/src/tests/samples/constructor13.py +0 -15
- package/src/tests/samples/constructor2.py +0 -180
- package/src/tests/samples/constructor3.py +0 -18
- package/src/tests/samples/constructor4.py +0 -25
- package/src/tests/samples/constructor5.py +0 -25
- package/src/tests/samples/constructor6.py +0 -70
- package/src/tests/samples/constructor7.py +0 -11
- package/src/tests/samples/constructor8.py +0 -99
- package/src/tests/samples/constructor9.py +0 -19
- package/src/tests/samples/coroutines1.py +0 -60
- package/src/tests/samples/coroutines2.py +0 -20
- package/src/tests/samples/coroutines3.py +0 -37
- package/src/tests/samples/dataclass1.py +0 -44
- package/src/tests/samples/dataclass10.py +0 -45
- package/src/tests/samples/dataclass11.py +0 -53
- package/src/tests/samples/dataclass12.py +0 -32
- package/src/tests/samples/dataclass13.py +0 -42
- package/src/tests/samples/dataclass14.py +0 -38
- package/src/tests/samples/dataclass15.py +0 -58
- package/src/tests/samples/dataclass16.py +0 -21
- package/src/tests/samples/dataclass17.py +0 -46
- package/src/tests/samples/dataclass18.py +0 -57
- package/src/tests/samples/dataclass19.py +0 -44
- package/src/tests/samples/dataclass2.py +0 -30
- package/src/tests/samples/dataclass20.py +0 -71
- package/src/tests/samples/dataclass21.py +0 -13
- package/src/tests/samples/dataclass3.py +0 -18
- package/src/tests/samples/dataclass4.py +0 -64
- package/src/tests/samples/dataclass5.py +0 -81
- package/src/tests/samples/dataclass6.py +0 -29
- package/src/tests/samples/dataclass7.py +0 -93
- package/src/tests/samples/dataclass8.py +0 -22
- package/src/tests/samples/dataclass9.py +0 -24
- package/src/tests/samples/dataclassPostInit1.py +0 -61
- package/src/tests/samples/dataclassTransform1.py +0 -71
- package/src/tests/samples/dataclassTransform2.py +0 -78
- package/src/tests/samples/dataclassTransform3.py +0 -83
- package/src/tests/samples/dataclassTransform4.py +0 -87
- package/src/tests/samples/decorator1.py +0 -20
- package/src/tests/samples/decorator2.py +0 -31
- package/src/tests/samples/decorator3.py +0 -27
- package/src/tests/samples/decorator4.py +0 -37
- package/src/tests/samples/decorator5.py +0 -29
- package/src/tests/samples/decorator6.py +0 -34
- package/src/tests/samples/defaultInitializer1.py +0 -26
- package/src/tests/samples/deprecated1.py +0 -37
- package/src/tests/samples/descriptor1.py +0 -134
- package/src/tests/samples/descriptor2.py +0 -29
- package/src/tests/samples/dictionary1.py +0 -42
- package/src/tests/samples/dictionary2.py +0 -14
- package/src/tests/samples/dictionary3.py +0 -30
- package/src/tests/samples/dictionary4.py +0 -106
- package/src/tests/samples/dunderAll1.py +0 -32
- package/src/tests/samples/dunderAll2.py +0 -16
- package/src/tests/samples/dunderAll3.pyi +0 -16
- package/src/tests/samples/duplicateDeclaration1.py +0 -115
- package/src/tests/samples/duplicateDeclaration2.py +0 -45
- package/src/tests/samples/duplicateImports1.py +0 -13
- package/src/tests/samples/ellipsis1.pyi +0 -48
- package/src/tests/samples/emptyContainers1.py +0 -89
- package/src/tests/samples/enums1.py +0 -52
- package/src/tests/samples/enums2.py +0 -15
- package/src/tests/samples/enums3.py +0 -24
- package/src/tests/samples/enums4.py +0 -23
- package/src/tests/samples/enums5.py +0 -16
- package/src/tests/samples/enums6.py +0 -33
- package/src/tests/samples/enums7.py +0 -54
- package/src/tests/samples/enums8.py +0 -14
- package/src/tests/samples/expressions1.py +0 -54
- package/src/tests/samples/expressions2.py +0 -29
- package/src/tests/samples/expressions3.py +0 -26
- package/src/tests/samples/expressions4.py +0 -23
- package/src/tests/samples/expressions5.py +0 -70
- package/src/tests/samples/expressions6.py +0 -14
- package/src/tests/samples/expressions7.py +0 -40
- package/src/tests/samples/expressions8.py +0 -26
- package/src/tests/samples/expressions9.py +0 -14
- package/src/tests/samples/final1.py +0 -14
- package/src/tests/samples/final2.py +0 -86
- package/src/tests/samples/final3.py +0 -179
- package/src/tests/samples/final4.pyi +0 -21
- package/src/tests/samples/final5.py +0 -18
- package/src/tests/samples/forLoop1.py +0 -88
- package/src/tests/samples/forLoop2.py +0 -48
- package/src/tests/samples/fstring1.py +0 -66
- package/src/tests/samples/fstring2.py +0 -12
- package/src/tests/samples/fstring3.py +0 -35
- package/src/tests/samples/fstring4.py +0 -17
- package/src/tests/samples/fstring5.py +0 -17
- package/src/tests/samples/fstring6.py +0 -14
- package/src/tests/samples/function1.py +0 -12
- package/src/tests/samples/function10.py +0 -20
- package/src/tests/samples/function11.py +0 -36
- package/src/tests/samples/function2.py +0 -7
- package/src/tests/samples/function3.py +0 -82
- package/src/tests/samples/function4.py +0 -13
- package/src/tests/samples/function6.py +0 -24
- package/src/tests/samples/function7.py +0 -13
- package/src/tests/samples/function8.py +0 -38
- package/src/tests/samples/function9.py +0 -75
- package/src/tests/samples/functionAnnotation1.py +0 -61
- package/src/tests/samples/functionAnnotation2.py +0 -26
- package/src/tests/samples/functionAnnotation3.py +0 -37
- package/src/tests/samples/functionAnnotation4.py +0 -22
- package/src/tests/samples/functionMember1.py +0 -18
- package/src/tests/samples/functionMember2.py +0 -45
- package/src/tests/samples/generators1.py +0 -122
- package/src/tests/samples/generators10.py +0 -18
- package/src/tests/samples/generators11.py +0 -27
- package/src/tests/samples/generators12.py +0 -25
- package/src/tests/samples/generators13.py +0 -65
- package/src/tests/samples/generators14.py +0 -19
- package/src/tests/samples/generators15.py +0 -26
- package/src/tests/samples/generators2.py +0 -31
- package/src/tests/samples/generators3.py +0 -42
- package/src/tests/samples/generators4.py +0 -33
- package/src/tests/samples/generators5.py +0 -24
- package/src/tests/samples/generators6.py +0 -14
- package/src/tests/samples/generators7.py +0 -18
- package/src/tests/samples/generators8.py +0 -12
- package/src/tests/samples/generators9.py +0 -19
- package/src/tests/samples/generic1.py +0 -41
- package/src/tests/samples/genericTypes1.py +0 -12
- package/src/tests/samples/genericTypes10.py +0 -38
- package/src/tests/samples/genericTypes11.py +0 -26
- package/src/tests/samples/genericTypes12.py +0 -14
- package/src/tests/samples/genericTypes13.py +0 -27
- package/src/tests/samples/genericTypes14.py +0 -22
- package/src/tests/samples/genericTypes15.py +0 -13
- package/src/tests/samples/genericTypes16.py +0 -15
- package/src/tests/samples/genericTypes17.py +0 -24
- package/src/tests/samples/genericTypes18.py +0 -135
- package/src/tests/samples/genericTypes19.py +0 -32
- package/src/tests/samples/genericTypes2.py +0 -40
- package/src/tests/samples/genericTypes20.py +0 -44
- package/src/tests/samples/genericTypes21.py +0 -29
- package/src/tests/samples/genericTypes22.py +0 -23
- package/src/tests/samples/genericTypes23.py +0 -27
- package/src/tests/samples/genericTypes24.py +0 -32
- package/src/tests/samples/genericTypes25.py +0 -37
- package/src/tests/samples/genericTypes26.py +0 -31
- package/src/tests/samples/genericTypes27.py +0 -14
- package/src/tests/samples/genericTypes28.py +0 -51
- package/src/tests/samples/genericTypes29.py +0 -24
- package/src/tests/samples/genericTypes3.py +0 -13
- package/src/tests/samples/genericTypes30.py +0 -32
- package/src/tests/samples/genericTypes31.py +0 -30
- package/src/tests/samples/genericTypes32.py +0 -25
- package/src/tests/samples/genericTypes33.py +0 -46
- package/src/tests/samples/genericTypes34.py +0 -54
- package/src/tests/samples/genericTypes35.py +0 -45
- package/src/tests/samples/genericTypes36.py +0 -35
- package/src/tests/samples/genericTypes37.py +0 -26
- package/src/tests/samples/genericTypes38.py +0 -15
- package/src/tests/samples/genericTypes39.py +0 -82
- package/src/tests/samples/genericTypes4.py +0 -37
- package/src/tests/samples/genericTypes40.py +0 -38
- package/src/tests/samples/genericTypes41.py +0 -16
- package/src/tests/samples/genericTypes42.py +0 -32
- package/src/tests/samples/genericTypes43.py +0 -24
- package/src/tests/samples/genericTypes44.py +0 -33
- package/src/tests/samples/genericTypes45.py +0 -43
- package/src/tests/samples/genericTypes46.py +0 -66
- package/src/tests/samples/genericTypes47.py +0 -39
- package/src/tests/samples/genericTypes48.py +0 -18
- package/src/tests/samples/genericTypes49.py +0 -41
- package/src/tests/samples/genericTypes5.py +0 -42
- package/src/tests/samples/genericTypes50.py +0 -62
- package/src/tests/samples/genericTypes51.py +0 -55
- package/src/tests/samples/genericTypes52.py +0 -34
- package/src/tests/samples/genericTypes53.py +0 -42
- package/src/tests/samples/genericTypes54.py +0 -31
- package/src/tests/samples/genericTypes55.py +0 -61
- package/src/tests/samples/genericTypes56.py +0 -19
- package/src/tests/samples/genericTypes57.py +0 -30
- package/src/tests/samples/genericTypes58.py +0 -52
- package/src/tests/samples/genericTypes59.py +0 -71
- package/src/tests/samples/genericTypes6.py +0 -49
- package/src/tests/samples/genericTypes60.py +0 -27
- package/src/tests/samples/genericTypes61.py +0 -34
- package/src/tests/samples/genericTypes62.py +0 -26
- package/src/tests/samples/genericTypes63.py +0 -32
- package/src/tests/samples/genericTypes64.py +0 -16
- package/src/tests/samples/genericTypes65.py +0 -15
- package/src/tests/samples/genericTypes66.py +0 -30
- package/src/tests/samples/genericTypes67.py +0 -57
- package/src/tests/samples/genericTypes68.py +0 -14
- package/src/tests/samples/genericTypes69.py +0 -45
- package/src/tests/samples/genericTypes7.py +0 -24
- package/src/tests/samples/genericTypes70.py +0 -31
- package/src/tests/samples/genericTypes71.py +0 -72
- package/src/tests/samples/genericTypes72.py +0 -24
- package/src/tests/samples/genericTypes73.py +0 -14
- package/src/tests/samples/genericTypes74.py +0 -23
- package/src/tests/samples/genericTypes75.py +0 -45
- package/src/tests/samples/genericTypes76.py +0 -107
- package/src/tests/samples/genericTypes77.py +0 -26
- package/src/tests/samples/genericTypes78.py +0 -23
- package/src/tests/samples/genericTypes79.py +0 -37
- package/src/tests/samples/genericTypes8.py +0 -26
- package/src/tests/samples/genericTypes80.py +0 -10
- package/src/tests/samples/genericTypes81.py +0 -32
- package/src/tests/samples/genericTypes82.py +0 -19
- package/src/tests/samples/genericTypes83.py +0 -28
- package/src/tests/samples/genericTypes84.py +0 -11
- package/src/tests/samples/genericTypes85.py +0 -20
- package/src/tests/samples/genericTypes86.py +0 -15
- package/src/tests/samples/genericTypes87.py +0 -21
- package/src/tests/samples/genericTypes88.py +0 -25
- package/src/tests/samples/genericTypes89.py +0 -17
- package/src/tests/samples/genericTypes9.py +0 -109
- package/src/tests/samples/genericTypes90.py +0 -12
- package/src/tests/samples/genericTypes91.py +0 -20
- package/src/tests/samples/import1.py +0 -7
- package/src/tests/samples/import10.py +0 -11
- package/src/tests/samples/import11.py +0 -11
- package/src/tests/samples/import12.py +0 -5
- package/src/tests/samples/import13.py +0 -6
- package/src/tests/samples/import14.py +0 -10
- package/src/tests/samples/import2.py +0 -27
- package/src/tests/samples/import3.py +0 -8
- package/src/tests/samples/import4.py +0 -15
- package/src/tests/samples/import5.py +0 -6
- package/src/tests/samples/import6.py +0 -17
- package/src/tests/samples/import7.py +0 -14
- package/src/tests/samples/import8.py +0 -7
- package/src/tests/samples/import9.py +0 -7
- package/src/tests/samples/inconsistentConstructor1.py +0 -23
- package/src/tests/samples/inconsistentSpaceTab1.py +0 -9
- package/src/tests/samples/inconsistentSpaceTab2.py +0 -10
- package/src/tests/samples/index1.py +0 -97
- package/src/tests/samples/inferredTypes1.py +0 -25
- package/src/tests/samples/initVar1.py +0 -23
- package/src/tests/samples/initsubclass1.py +0 -46
- package/src/tests/samples/initsubclass2.py +0 -16
- package/src/tests/samples/isinstance1.py +0 -57
- package/src/tests/samples/isinstance10.py +0 -15
- package/src/tests/samples/isinstance2.py +0 -28
- package/src/tests/samples/isinstance3.py +0 -59
- package/src/tests/samples/isinstance4.py +0 -57
- package/src/tests/samples/isinstance5.py +0 -8
- package/src/tests/samples/isinstance6.py +0 -19
- package/src/tests/samples/isinstance7.py +0 -42
- package/src/tests/samples/isinstance9.py +0 -26
- package/src/tests/samples/kwargsUnpack1.py +0 -116
- package/src/tests/samples/lambda1.py +0 -77
- package/src/tests/samples/lambda2.py +0 -26
- package/src/tests/samples/lambda3.py +0 -34
- package/src/tests/samples/lambda4.py +0 -70
- package/src/tests/samples/lambda5.py +0 -23
- package/src/tests/samples/lambda6.py +0 -15
- package/src/tests/samples/lines1.py +0 -14
- package/src/tests/samples/list1.py +0 -90
- package/src/tests/samples/listComprehension1.py +0 -45
- package/src/tests/samples/listComprehension2.py +0 -17
- package/src/tests/samples/listComprehension3.py +0 -12
- package/src/tests/samples/listComprehension4.py +0 -15
- package/src/tests/samples/listComprehension5.py +0 -20
- package/src/tests/samples/listComprehension6.py +0 -14
- package/src/tests/samples/listComprehension7.py +0 -15
- package/src/tests/samples/listComprehension8.py +0 -15
- package/src/tests/samples/literalString1.py +0 -43
- package/src/tests/samples/literals1.py +0 -48
- package/src/tests/samples/literals2.py +0 -30
- package/src/tests/samples/literals3.py +0 -40
- package/src/tests/samples/literals4.py +0 -10
- package/src/tests/samples/literals5.py +0 -28
- package/src/tests/samples/literals6.py +0 -90
- package/src/tests/samples/literals7.py +0 -38
- package/src/tests/samples/loops1.py +0 -45
- package/src/tests/samples/loops10.py +0 -11
- package/src/tests/samples/loops11.py +0 -22
- package/src/tests/samples/loops12.py +0 -18
- package/src/tests/samples/loops13.py +0 -13
- package/src/tests/samples/loops14.py +0 -22
- package/src/tests/samples/loops15.py +0 -22
- package/src/tests/samples/loops16.py +0 -322
- package/src/tests/samples/loops17.py +0 -9
- package/src/tests/samples/loops18.py +0 -23
- package/src/tests/samples/loops19.py +0 -14
- package/src/tests/samples/loops2.py +0 -25
- package/src/tests/samples/loops20.py +0 -41
- package/src/tests/samples/loops21.py +0 -18
- package/src/tests/samples/loops22.py +0 -21
- package/src/tests/samples/loops23.py +0 -16
- package/src/tests/samples/loops24.py +0 -12
- package/src/tests/samples/loops25.py +0 -45
- package/src/tests/samples/loops26.py +0 -12
- package/src/tests/samples/loops3.py +0 -11
- package/src/tests/samples/loops4.py +0 -17
- package/src/tests/samples/loops5.py +0 -14
- package/src/tests/samples/loops6.py +0 -25
- package/src/tests/samples/loops7.py +0 -14
- package/src/tests/samples/loops8.py +0 -17
- package/src/tests/samples/loops9.py +0 -25
- package/src/tests/samples/match1.py +0 -190
- package/src/tests/samples/match10.py +0 -67
- package/src/tests/samples/match2.py +0 -340
- package/src/tests/samples/match3.py +0 -364
- package/src/tests/samples/match4.py +0 -100
- package/src/tests/samples/match5.py +0 -70
- package/src/tests/samples/match6.py +0 -64
- package/src/tests/samples/match7.py +0 -65
- package/src/tests/samples/match8.py +0 -19
- package/src/tests/samples/match9.py +0 -53
- package/src/tests/samples/maxParseDepth1.py +0 -499
- package/src/tests/samples/maxParseDepth2.py +0 -16
- package/src/tests/samples/memberAccess1.py +0 -70
- package/src/tests/samples/memberAccess10.py +0 -65
- package/src/tests/samples/memberAccess11.py +0 -37
- package/src/tests/samples/memberAccess12.py +0 -36
- package/src/tests/samples/memberAccess13.py +0 -17
- package/src/tests/samples/memberAccess14.py +0 -63
- package/src/tests/samples/memberAccess15.py +0 -20
- package/src/tests/samples/memberAccess16.py +0 -12
- package/src/tests/samples/memberAccess17.py +0 -31
- package/src/tests/samples/memberAccess18.py +0 -31
- package/src/tests/samples/memberAccess2.py +0 -45
- package/src/tests/samples/memberAccess3.py +0 -64
- package/src/tests/samples/memberAccess4.py +0 -91
- package/src/tests/samples/memberAccess5.py +0 -26
- package/src/tests/samples/memberAccess6.py +0 -52
- package/src/tests/samples/memberAccess7.py +0 -36
- package/src/tests/samples/memberAccess8.py +0 -75
- package/src/tests/samples/memberAccess9.py +0 -11
- package/src/tests/samples/metaclass1.py +0 -7
- package/src/tests/samples/metaclass2.py +0 -35
- package/src/tests/samples/metaclass3.py +0 -43
- package/src/tests/samples/metaclass4.py +0 -26
- package/src/tests/samples/metaclass5.py +0 -33
- package/src/tests/samples/metaclass6.py +0 -15
- package/src/tests/samples/metaclass7.py +0 -38
- package/src/tests/samples/metaclass8.py +0 -20
- package/src/tests/samples/metaclass9.py +0 -77
- package/src/tests/samples/methodOverride1.py +0 -507
- package/src/tests/samples/methodOverride2.py +0 -74
- package/src/tests/samples/methodOverride3.py +0 -111
- package/src/tests/samples/methodOverride4.py +0 -36
- package/src/tests/samples/missingSuper1.py +0 -73
- package/src/tests/samples/module1.py +0 -13
- package/src/tests/samples/module2.py +0 -7
- package/src/tests/samples/mro1.py +0 -16
- package/src/tests/samples/mro2.py +0 -45
- package/src/tests/samples/mro3.py +0 -30
- package/src/tests/samples/mro4.py +0 -30
- package/src/tests/samples/nameBindings1.py +0 -48
- package/src/tests/samples/nameBindings2.py +0 -9
- package/src/tests/samples/nameBindings3.py +0 -36
- package/src/tests/samples/nameBindings4.py +0 -10
- package/src/tests/samples/nameBindings5.py +0 -53
- package/src/tests/samples/namedTuples1.py +0 -103
- package/src/tests/samples/namedTuples2.py +0 -56
- package/src/tests/samples/namedTuples3.py +0 -15
- package/src/tests/samples/namedTuples4.py +0 -24
- package/src/tests/samples/namedTuples5.py +0 -15
- package/src/tests/samples/namedTuples6.py +0 -31
- package/src/tests/samples/namedTuples7.py +0 -27
- package/src/tests/samples/never1.py +0 -12
- package/src/tests/samples/never2.py +0 -43
- package/src/tests/samples/newType1.py +0 -34
- package/src/tests/samples/newType2.py +0 -25
- package/src/tests/samples/newType3.py +0 -34
- package/src/tests/samples/newType4.py +0 -8
- package/src/tests/samples/none1.py +0 -29
- package/src/tests/samples/none2.py +0 -22
- package/src/tests/samples/noreturn1.py +0 -78
- package/src/tests/samples/noreturn2.py +0 -37
- package/src/tests/samples/noreturn3.py +0 -16
- package/src/tests/samples/noreturn4.py +0 -29
- package/src/tests/samples/operators1.py +0 -101
- package/src/tests/samples/operators2.py +0 -30
- package/src/tests/samples/operators3.py +0 -8
- package/src/tests/samples/operators4.py +0 -22
- package/src/tests/samples/operators5.py +0 -5
- package/src/tests/samples/operators6.py +0 -10
- package/src/tests/samples/operators7.py +0 -24
- package/src/tests/samples/operators8.py +0 -125
- package/src/tests/samples/optional1.py +0 -77
- package/src/tests/samples/optional2.py +0 -23
- package/src/tests/samples/overload1.py +0 -50
- package/src/tests/samples/overload10.py +0 -48
- package/src/tests/samples/overload2.py +0 -37
- package/src/tests/samples/overload3.py +0 -29
- package/src/tests/samples/overload4.py +0 -46
- package/src/tests/samples/overload5.py +0 -333
- package/src/tests/samples/overload6.py +0 -64
- package/src/tests/samples/overload7.py +0 -376
- package/src/tests/samples/overload8.py +0 -89
- package/src/tests/samples/overload9.py +0 -19
- package/src/tests/samples/package1/__init__.py +0 -3
- package/src/tests/samples/package1/psyche/pysche.py +0 -4
- package/src/tests/samples/package1/psyche.py +0 -4
- package/src/tests/samples/package1/sub/__init__.py +0 -5
- package/src/tests/samples/package1/sub.py +0 -4
- package/src/tests/samples/package1/sub.pyi +0 -2
- package/src/tests/samples/paramInference1.py +0 -27
- package/src/tests/samples/paramNames1.py +0 -39
- package/src/tests/samples/paramSpec1.py +0 -64
- package/src/tests/samples/paramSpec10.py +0 -57
- package/src/tests/samples/paramSpec11.py +0 -36
- package/src/tests/samples/paramSpec12.py +0 -88
- package/src/tests/samples/paramSpec13.py +0 -112
- package/src/tests/samples/paramSpec14.py +0 -30
- package/src/tests/samples/paramSpec15.py +0 -28
- package/src/tests/samples/paramSpec16.py +0 -28
- package/src/tests/samples/paramSpec17.py +0 -34
- package/src/tests/samples/paramSpec18.py +0 -43
- package/src/tests/samples/paramSpec19.py +0 -93
- package/src/tests/samples/paramSpec2.py +0 -29
- package/src/tests/samples/paramSpec20.py +0 -87
- package/src/tests/samples/paramSpec21.py +0 -58
- package/src/tests/samples/paramSpec22.py +0 -26
- package/src/tests/samples/paramSpec23.py +0 -21
- package/src/tests/samples/paramSpec24.py +0 -67
- package/src/tests/samples/paramSpec25.py +0 -36
- package/src/tests/samples/paramSpec26.py +0 -25
- package/src/tests/samples/paramSpec27.py +0 -57
- package/src/tests/samples/paramSpec28.py +0 -39
- package/src/tests/samples/paramSpec29.py +0 -37
- package/src/tests/samples/paramSpec3.py +0 -71
- package/src/tests/samples/paramSpec30.py +0 -49
- package/src/tests/samples/paramSpec31.py +0 -16
- package/src/tests/samples/paramSpec32.py +0 -57
- package/src/tests/samples/paramSpec33.py +0 -29
- package/src/tests/samples/paramSpec34.py +0 -29
- package/src/tests/samples/paramSpec35.py +0 -24
- package/src/tests/samples/paramSpec36.py +0 -43
- package/src/tests/samples/paramSpec37.py +0 -25
- package/src/tests/samples/paramSpec4.py +0 -109
- package/src/tests/samples/paramSpec5.py +0 -29
- package/src/tests/samples/paramSpec6.py +0 -17
- package/src/tests/samples/paramSpec7.py +0 -22
- package/src/tests/samples/paramSpec8.py +0 -45
- package/src/tests/samples/paramSpec9.py +0 -57
- package/src/tests/samples/paramType1.py +0 -71
- package/src/tests/samples/parameters1.py +0 -16
- package/src/tests/samples/partial1.py +0 -163
- package/src/tests/samples/partial2.py +0 -31
- package/src/tests/samples/private1.py +0 -55
- package/src/tests/samples/private2.py +0 -11
- package/src/tests/samples/project1/pyrightconfig.json +0 -5
- package/src/tests/samples/project1/sample1.py +0 -0
- package/src/tests/samples/project1/subfolder1/sample2.py +0 -0
- package/src/tests/samples/project1/subfolder1/subfolder1-1/sample3.py +0 -0
- package/src/tests/samples/project2/pyrightconfig.json +0 -3
- package/src/tests/samples/project3/pyrightconfig.json +0 -7
- package/src/tests/samples/project4/presentfile.py +0 -0
- package/src/tests/samples/project4/pyrightconfig.json +0 -11
- package/src/tests/samples/project4/subfolder/presentfile2.py +0 -0
- package/src/tests/samples/project4/subfolder/presentfile3.py +0 -0
- package/src/tests/samples/project5/pyrightconfig.json +0 -4
- package/src/tests/samples/project6/app1.py +0 -0
- package/src/tests/samples/project6/app2.py +0 -0
- package/src/tests/samples/project6/projectA/foo/__init__.py +0 -0
- package/src/tests/samples/project6/projectA/foo/bar/__init__.py +0 -0
- package/src/tests/samples/project6/projectB/foo/__init__.py +0 -0
- package/src/tests/samples/project6/projectB/foo/baz/__init__.py +0 -0
- package/src/tests/samples/project_src/src/module1.py +0 -0
- package/src/tests/samples/project_src_is_pkg/src/__init__.py +0 -0
- package/src/tests/samples/project_src_is_pkg/src/module1.py +0 -0
- package/src/tests/samples/project_src_with_config_extra_paths/pyrightconfig.json +0 -3
- package/src/tests/samples/project_src_with_config_extra_paths/src/module1.py +0 -0
- package/src/tests/samples/project_src_with_config_no_extra_paths/pyrightconfig.json +0 -2
- package/src/tests/samples/project_src_with_config_no_extra_paths/src/module1.py +0 -0
- package/src/tests/samples/project_src_with_extra_paths/src/_vendored/vendored1.py +0 -1
- package/src/tests/samples/project_src_with_extra_paths/src/module1.py +0 -2
- package/src/tests/samples/project_with_pyproject_toml/pyproject.toml +0 -7
- package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/Lib/site-packages/library1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/pyvenv.cfg +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/pyrightconfig.json +0 -2
- package/src/tests/samples/project_with_venv_auto_detect_exclude/sample1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/sample2.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/subfolder1-1/sample3.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/excluded/excluded1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/Lib/site-packages/library1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/pyvenv.cfg +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/pyrightconfig.json +0 -3
- package/src/tests/samples/project_with_venv_auto_detect_include/sample1.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/sample2.py +0 -0
- package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/subfolder1-1/sample3.py +0 -0
- package/src/tests/samples/properties1.py +0 -64
- package/src/tests/samples/properties10.py +0 -19
- package/src/tests/samples/properties11.py +0 -45
- package/src/tests/samples/properties12.py +0 -23
- package/src/tests/samples/properties13.py +0 -15
- package/src/tests/samples/properties2.py +0 -34
- package/src/tests/samples/properties3.py +0 -93
- package/src/tests/samples/properties4.py +0 -17
- package/src/tests/samples/properties5.py +0 -29
- package/src/tests/samples/properties6.py +0 -35
- package/src/tests/samples/properties7.py +0 -30
- package/src/tests/samples/properties8.py +0 -26
- package/src/tests/samples/properties9.py +0 -24
- package/src/tests/samples/protocol1.py +0 -132
- package/src/tests/samples/protocol10.py +0 -36
- package/src/tests/samples/protocol11.py +0 -32
- package/src/tests/samples/protocol12.py +0 -12
- package/src/tests/samples/protocol13.py +0 -26
- package/src/tests/samples/protocol14.py +0 -27
- package/src/tests/samples/protocol15.py +0 -27
- package/src/tests/samples/protocol16.py +0 -22
- package/src/tests/samples/protocol17.py +0 -94
- package/src/tests/samples/protocol18.py +0 -27
- package/src/tests/samples/protocol19.py +0 -39
- package/src/tests/samples/protocol2.py +0 -38
- package/src/tests/samples/protocol20.py +0 -22
- package/src/tests/samples/protocol21.py +0 -26
- package/src/tests/samples/protocol22.py +0 -43
- package/src/tests/samples/protocol23.py +0 -41
- package/src/tests/samples/protocol24.py +0 -74
- package/src/tests/samples/protocol25.py +0 -31
- package/src/tests/samples/protocol26.py +0 -40
- package/src/tests/samples/protocol27.py +0 -76
- package/src/tests/samples/protocol28.py +0 -32
- package/src/tests/samples/protocol29.py +0 -26
- package/src/tests/samples/protocol3.py +0 -110
- package/src/tests/samples/protocol30.py +0 -30
- package/src/tests/samples/protocol31.py +0 -22
- package/src/tests/samples/protocol32.py +0 -67
- package/src/tests/samples/protocol33.py +0 -39
- package/src/tests/samples/protocol34.py +0 -21
- package/src/tests/samples/protocol4.py +0 -22
- package/src/tests/samples/protocol5.py +0 -25
- package/src/tests/samples/protocol6.py +0 -65
- package/src/tests/samples/protocol7.py +0 -24
- package/src/tests/samples/protocol8.py +0 -34
- package/src/tests/samples/protocol9.py +0 -35
- package/src/tests/samples/protocolModule1.py +0 -15
- package/src/tests/samples/protocolModule2.py +0 -83
- package/src/tests/samples/protocolModule3.py +0 -14
- package/src/tests/samples/protocolModule4.py +0 -26
- package/src/tests/samples/pseudoGeneric1.py +0 -20
- package/src/tests/samples/pyrightIgnore1.py +0 -11
- package/src/tests/samples/pyrightIgnore2.py +0 -24
- package/src/tests/samples/python2.py +0 -31
- package/src/tests/samples/recursiveTypeAlias1.py +0 -79
- package/src/tests/samples/recursiveTypeAlias2.py +0 -32
- package/src/tests/samples/recursiveTypeAlias3.py +0 -26
- package/src/tests/samples/recursiveTypeAlias4.py +0 -55
- package/src/tests/samples/recursiveTypeAlias5.pyi +0 -10
- package/src/tests/samples/recursiveTypeAlias6.py +0 -25
- package/src/tests/samples/recursiveTypeAlias7.py +0 -15
- package/src/tests/samples/recursiveTypeAlias8.py +0 -38
- package/src/tests/samples/recursiveTypeAlias9.py +0 -22
- package/src/tests/samples/required1.py +0 -47
- package/src/tests/samples/required2.py +0 -56
- package/src/tests/samples/required3.py +0 -22
- package/src/tests/samples/returnTypes1.py +0 -26
- package/src/tests/samples/revealedType1.py +0 -30
- package/src/tests/samples/sample1.py +0 -6
- package/src/tests/samples/self1.py +0 -93
- package/src/tests/samples/self2.py +0 -195
- package/src/tests/samples/self3.py +0 -9
- package/src/tests/samples/self4.py +0 -18
- package/src/tests/samples/self5.py +0 -26
- package/src/tests/samples/setComprehension1.py +0 -34
- package/src/tests/samples/slots1.py +0 -63
- package/src/tests/samples/slots2.py +0 -38
- package/src/tests/samples/slots3.py +0 -35
- package/src/tests/samples/specialization1.py +0 -78
- package/src/tests/samples/specialization2.py +0 -51
- package/src/tests/samples/staticExpressions1.py +0 -52
- package/src/tests/samples/strings1.py +0 -22
- package/src/tests/samples/subscript1.py +0 -74
- package/src/tests/samples/subscript2.py +0 -55
- package/src/tests/samples/subscript3.py +0 -135
- package/src/tests/samples/suiteExpectedColon1.py +0 -4
- package/src/tests/samples/suiteExpectedColon2.py +0 -2
- package/src/tests/samples/suiteExpectedColon3.py +0 -2
- package/src/tests/samples/super1.py +0 -57
- package/src/tests/samples/super2.py +0 -29
- package/src/tests/samples/super3.py +0 -10
- package/src/tests/samples/super4.py +0 -24
- package/src/tests/samples/super5.py +0 -28
- package/src/tests/samples/super6.py +0 -17
- package/src/tests/samples/super7.py +0 -52
- package/src/tests/samples/super8.py +0 -7
- package/src/tests/samples/super9.py +0 -36
- package/src/tests/samples/test_file1.py +0 -0
- package/src/tests/samples/threePartVersion1.py +0 -33
- package/src/tests/samples/totalOrdering1.py +0 -52
- package/src/tests/samples/tryExcept1.py +0 -39
- package/src/tests/samples/tryExcept10.py +0 -12
- package/src/tests/samples/tryExcept2.py +0 -16
- package/src/tests/samples/tryExcept3.py +0 -12
- package/src/tests/samples/tryExcept4.py +0 -28
- package/src/tests/samples/tryExcept5.py +0 -30
- package/src/tests/samples/tryExcept6.py +0 -27
- package/src/tests/samples/tryExcept7.py +0 -17
- package/src/tests/samples/tryExcept8.py +0 -69
- package/src/tests/samples/tryExcept9.py +0 -42
- package/src/tests/samples/tupleUnpack1.py +0 -63
- package/src/tests/samples/tupleUnpack2.py +0 -56
- package/src/tests/samples/tupleUnpack3.py +0 -28
- package/src/tests/samples/tuples1.py +0 -185
- package/src/tests/samples/tuples10.py +0 -30
- package/src/tests/samples/tuples11.py +0 -21
- package/src/tests/samples/tuples12.py +0 -31
- package/src/tests/samples/tuples13.py +0 -26
- package/src/tests/samples/tuples15.py +0 -16
- package/src/tests/samples/tuples16.py +0 -14
- package/src/tests/samples/tuples2.py +0 -23
- package/src/tests/samples/tuples3.py +0 -15
- package/src/tests/samples/tuples4.py +0 -21
- package/src/tests/samples/tuples5.py +0 -16
- package/src/tests/samples/tuples6.py +0 -56
- package/src/tests/samples/tuples7.py +0 -61
- package/src/tests/samples/tuples8.py +0 -98
- package/src/tests/samples/tuples9.py +0 -17
- package/src/tests/samples/typeAlias1.py +0 -37
- package/src/tests/samples/typeAlias10.py +0 -45
- package/src/tests/samples/typeAlias11.py +0 -37
- package/src/tests/samples/typeAlias12.py +0 -20
- package/src/tests/samples/typeAlias13.py +0 -53
- package/src/tests/samples/typeAlias14.py +0 -29
- package/src/tests/samples/typeAlias15.py +0 -24
- package/src/tests/samples/typeAlias16.py +0 -24
- package/src/tests/samples/typeAlias2.py +0 -26
- package/src/tests/samples/typeAlias3.py +0 -35
- package/src/tests/samples/typeAlias4.py +0 -68
- package/src/tests/samples/typeAlias5.py +0 -56
- package/src/tests/samples/typeAlias6.py +0 -51
- package/src/tests/samples/typeAlias7.py +0 -50
- package/src/tests/samples/typeAlias8.py +0 -24
- package/src/tests/samples/typeAlias9.py +0 -35
- package/src/tests/samples/typeGuard1.py +0 -68
- package/src/tests/samples/typeGuard2.py +0 -58
- package/src/tests/samples/typeGuard3.py +0 -98
- package/src/tests/samples/typeIgnore1.py +0 -10
- package/src/tests/samples/typeIgnore2.py +0 -20
- package/src/tests/samples/typeIgnore3.py +0 -22
- package/src/tests/samples/typeIgnore4.py +0 -10
- package/src/tests/samples/typeIgnore5.py +0 -7
- package/src/tests/samples/typeNarrowing1.py +0 -56
- package/src/tests/samples/typeNarrowing2.py +0 -14
- package/src/tests/samples/typeNarrowing3.py +0 -47
- package/src/tests/samples/typeNarrowing4.py +0 -24
- package/src/tests/samples/typeNarrowing5.py +0 -19
- package/src/tests/samples/typeNarrowing6.py +0 -27
- package/src/tests/samples/typeNarrowing7.py +0 -71
- package/src/tests/samples/typeNarrowingAssert1.py +0 -24
- package/src/tests/samples/typeNarrowingCallable1.py +0 -78
- package/src/tests/samples/typeNarrowingEnum1.py +0 -58
- package/src/tests/samples/typeNarrowingEnum2.py +0 -71
- package/src/tests/samples/typeNarrowingFalsy1.py +0 -50
- package/src/tests/samples/typeNarrowingIn1.py +0 -97
- package/src/tests/samples/typeNarrowingIsNone1.py +0 -56
- package/src/tests/samples/typeNarrowingIsNone2.py +0 -8
- package/src/tests/samples/typeNarrowingIsNoneTuple1.py +0 -42
- package/src/tests/samples/typeNarrowingIsNoneTuple2.py +0 -35
- package/src/tests/samples/typeNarrowingIsinstance1.py +0 -162
- package/src/tests/samples/typeNarrowingIsinstance2.py +0 -14
- package/src/tests/samples/typeNarrowingIsinstance3.py +0 -78
- package/src/tests/samples/typeNarrowingIsinstance4.py +0 -50
- package/src/tests/samples/typeNarrowingIsinstance5.py +0 -39
- package/src/tests/samples/typeNarrowingIsinstance6.py +0 -77
- package/src/tests/samples/typeNarrowingIsinstance7.py +0 -19
- package/src/tests/samples/typeNarrowingIsinstance8.py +0 -19
- package/src/tests/samples/typeNarrowingLiteral1.py +0 -35
- package/src/tests/samples/typeNarrowingLiteral2.py +0 -63
- package/src/tests/samples/typeNarrowingLiteralMember1.py +0 -140
- package/src/tests/samples/typeNarrowingLocalConst1.py +0 -136
- package/src/tests/samples/typeNarrowingNoneMember1.py +0 -102
- package/src/tests/samples/typeNarrowingTuple1.py +0 -23
- package/src/tests/samples/typeNarrowingTupleLength1.py +0 -47
- package/src/tests/samples/typeNarrowingTypeIs1.py +0 -95
- package/src/tests/samples/typeNarrowingTypedDict1.py +0 -99
- package/src/tests/samples/typeNarrowingTypedDict2.py +0 -35
- package/src/tests/samples/typeNarrowingTypedDict3.py +0 -45
- package/src/tests/samples/typePromotions1.py +0 -30
- package/src/tests/samples/typeVar1.py +0 -23
- package/src/tests/samples/typeVar10.py +0 -21
- package/src/tests/samples/typeVar11.py +0 -12
- package/src/tests/samples/typeVar2.py +0 -26
- package/src/tests/samples/typeVar3.py +0 -73
- package/src/tests/samples/typeVar4.py +0 -45
- package/src/tests/samples/typeVar5.py +0 -75
- package/src/tests/samples/typeVar6.py +0 -115
- package/src/tests/samples/typeVar7.py +0 -171
- package/src/tests/samples/typeVar8.py +0 -30
- package/src/tests/samples/typeVar9.py +0 -118
- package/src/tests/samples/typedDict1.py +0 -63
- package/src/tests/samples/typedDict10.py +0 -34
- package/src/tests/samples/typedDict11.py +0 -12
- package/src/tests/samples/typedDict12.py +0 -103
- package/src/tests/samples/typedDict13.py +0 -14
- package/src/tests/samples/typedDict14.py +0 -25
- package/src/tests/samples/typedDict15.py +0 -53
- package/src/tests/samples/typedDict16.py +0 -103
- package/src/tests/samples/typedDict17.py +0 -24
- package/src/tests/samples/typedDict18.py +0 -43
- package/src/tests/samples/typedDict2.py +0 -56
- package/src/tests/samples/typedDict3.py +0 -40
- package/src/tests/samples/typedDict4.py +0 -68
- package/src/tests/samples/typedDict5.py +0 -50
- package/src/tests/samples/typedDict6.py +0 -77
- package/src/tests/samples/typedDict7.py +0 -22
- package/src/tests/samples/typedDict8.py +0 -19
- package/src/tests/samples/typedDict9.py +0 -22
- package/src/tests/samples/unbound1.py +0 -18
- package/src/tests/samples/unbound2.py +0 -12
- package/src/tests/samples/unbound3.py +0 -13
- package/src/tests/samples/unbound4.py +0 -25
- package/src/tests/samples/unicode1.py +0 -39
- package/src/tests/samples/uninitializedVariable1.py +0 -27
- package/src/tests/samples/unions1.py +0 -79
- package/src/tests/samples/unions2.py +0 -15
- package/src/tests/samples/unions3.py +0 -48
- package/src/tests/samples/unions4.py +0 -20
- package/src/tests/samples/unions5.py +0 -43
- package/src/tests/samples/unnecessaryCast1.py +0 -13
- package/src/tests/samples/unnecessaryIsInstance1.py +0 -91
- package/src/tests/samples/unnecessaryIsSubclass1.py +0 -22
- package/src/tests/samples/unpack1.py +0 -56
- package/src/tests/samples/unpack2.py +0 -27
- package/src/tests/samples/unpack3.py +0 -16
- package/src/tests/samples/unpack4.py +0 -15
- package/src/tests/samples/unreachable1.py +0 -112
- package/src/tests/samples/unusedCallResult1.py +0 -67
- package/src/tests/samples/unusedCoroutine1.py +0 -23
- package/src/tests/samples/unusedExpression1.py +0 -34
- package/src/tests/samples/unusedVariable1.py +0 -21
- package/src/tests/samples/variadicTypeVar1.py +0 -51
- package/src/tests/samples/variadicTypeVar10.py +0 -65
- package/src/tests/samples/variadicTypeVar11.py +0 -72
- package/src/tests/samples/variadicTypeVar12.py +0 -26
- package/src/tests/samples/variadicTypeVar13.py +0 -35
- package/src/tests/samples/variadicTypeVar14.py +0 -72
- package/src/tests/samples/variadicTypeVar2.py +0 -63
- package/src/tests/samples/variadicTypeVar3.py +0 -86
- package/src/tests/samples/variadicTypeVar4.py +0 -71
- package/src/tests/samples/variadicTypeVar5.py +0 -131
- package/src/tests/samples/variadicTypeVar6.py +0 -78
- package/src/tests/samples/variadicTypeVar7.py +0 -59
- package/src/tests/samples/variadicTypeVar8.py +0 -116
- package/src/tests/samples/variadicTypeVar9.py +0 -38
- package/src/tests/samples/with1.py +0 -117
- package/src/tests/samples/with2.py +0 -63
- package/src/tests/samples/with3.py +0 -66
- package/src/tests/samples/with4.py +0 -24
- package/src/tests/samples/with5.py +0 -33
- package/src/tests/samples/zipfs/bad.egg +0 -1
- package/src/tests/samples/zipfs/bad.zip +0 -1
- package/src/tests/samples/zipfs/basic.egg +0 -0
- package/src/tests/samples/zipfs/basic.zip +0 -0
- package/src/tests/samples/zipfs/corrupt.egg +0 -0
- package/src/tests/samples/zipfs/corrupt.zip +0 -0
- package/src/tests/sourceFile.test.ts +0 -25
- package/src/tests/stringUtils.test.ts +0 -63
- package/src/tests/symbolNameUtils.test.ts +0 -77
- package/src/tests/testState.test.ts +0 -579
- package/src/tests/testUtils.ts +0 -251
- package/src/tests/tokenizer.test.ts +0 -1534
- package/src/tests/typeEvaluator1.test.ts +0 -1372
- package/src/tests/typeEvaluator2.test.ts +0 -1253
- package/src/tests/typeEvaluator3.test.ts +0 -1279
- package/src/tests/typeEvaluator4.test.ts +0 -1178
- package/src/tests/updateSymbolReference.test.ts +0 -1107
- package/src/tests/zipfs.test.ts +0 -116
- package/src/workspaceMap.ts +0 -76
@@ -73,6 +73,38 @@ const TypePrinter = __importStar(require("./typePrinter"));
|
|
73
73
|
const types_1 = require("./types");
|
74
74
|
const typeUtils_1 = require("./typeUtils");
|
75
75
|
const typeVarContext_1 = require("./typeVarContext");
|
76
|
+
var MemberAccessFlags;
|
77
|
+
(function (MemberAccessFlags) {
|
78
|
+
MemberAccessFlags[MemberAccessFlags["None"] = 0] = "None";
|
79
|
+
// By default, member accesses are assumed to access the attributes
|
80
|
+
// of a class instance. By setting this flag, only attributes of
|
81
|
+
// the class are considered.
|
82
|
+
MemberAccessFlags[MemberAccessFlags["AccessClassMembersOnly"] = 1] = "AccessClassMembersOnly";
|
83
|
+
// By default, members of base classes are also searched.
|
84
|
+
// Set this flag to consider only the specified class' members.
|
85
|
+
MemberAccessFlags[MemberAccessFlags["SkipBaseClasses"] = 2] = "SkipBaseClasses";
|
86
|
+
// Do not include the "object" base class in the search.
|
87
|
+
MemberAccessFlags[MemberAccessFlags["SkipObjectBaseClass"] = 4] = "SkipObjectBaseClass";
|
88
|
+
// Consider writes to symbols flagged as ClassVars as an error.
|
89
|
+
MemberAccessFlags[MemberAccessFlags["DisallowClassVarWrites"] = 8] = "DisallowClassVarWrites";
|
90
|
+
// Normally __new__ is treated as a static method, but when
|
91
|
+
// it is invoked implicitly through a constructor call, it
|
92
|
+
// acts like a class method instead.
|
93
|
+
MemberAccessFlags[MemberAccessFlags["TreatConstructorAsClassMethod"] = 16] = "TreatConstructorAsClassMethod";
|
94
|
+
// By default, class member lookups start with the class itself
|
95
|
+
// and fall back on the metaclass if it's not found. This option
|
96
|
+
// skips the first check.
|
97
|
+
MemberAccessFlags[MemberAccessFlags["ConsiderMetaclassOnly"] = 32] = "ConsiderMetaclassOnly";
|
98
|
+
// If an attribute cannot be found when looking for instance
|
99
|
+
// members, normally an attribute access override method
|
100
|
+
// (__getattr__, etc.) may provide the missing attribute type.
|
101
|
+
// This disables this check.
|
102
|
+
MemberAccessFlags[MemberAccessFlags["SkipAttributeAccessOverride"] = 64] = "SkipAttributeAccessOverride";
|
103
|
+
// Do not include the class itself, only base classes.
|
104
|
+
MemberAccessFlags[MemberAccessFlags["SkipOriginalClass"] = 128] = "SkipOriginalClass";
|
105
|
+
// Do not include the "type" base class in the search.
|
106
|
+
MemberAccessFlags[MemberAccessFlags["SkipTypeBaseClass"] = 256] = "SkipTypeBaseClass";
|
107
|
+
})(MemberAccessFlags || (MemberAccessFlags = {}));
|
76
108
|
// Maps binary operators to the magic methods that implement them.
|
77
109
|
// The boolean indicates whether the operators "chain" together.
|
78
110
|
const binaryOperatorMap = {
|
@@ -628,15 +660,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
628
660
|
typeResult.type.details.illegalRecursionDetected = true;
|
629
661
|
}
|
630
662
|
}
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
writeTypeCache(node, typeResult.type, flags, !!typeResult.isIncomplete, expectedType,
|
636
|
-
/* allowSpeculativeCaching */ true);
|
637
|
-
if (expectedType && !(0, types_1.isAnyOrUnknown)(expectedType) && !(0, types_1.isNever)(expectedType)) {
|
638
|
-
expectedTypeCache.set(node.id, expectedType);
|
639
|
-
}
|
663
|
+
writeTypeCache(node, typeResult.type, flags, !!typeResult.isIncomplete, expectedType,
|
664
|
+
/* allowSpeculativeCaching */ true);
|
665
|
+
if (expectedType && !(0, types_1.isAnyOrUnknown)(expectedType) && !(0, types_1.isNever)(expectedType)) {
|
666
|
+
expectedTypeCache.set(node.id, expectedType);
|
640
667
|
}
|
641
668
|
if (printExpressionTypes) {
|
642
669
|
printExpressionSpaceCount--;
|
@@ -1336,7 +1363,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
1336
1363
|
// Handle the case where the symbol is a class-level variable
|
1337
1364
|
// where the type isn't declared in this class but is in
|
1338
1365
|
// a parent class.
|
1339
|
-
if (getDeclaredTypeOfSymbol(symbol) === undefined &&
|
1366
|
+
if (getDeclaredTypeOfSymbol(symbol, expression) === undefined &&
|
1340
1367
|
symbolWithScope.scope.type === 2 /* Class */) {
|
1341
1368
|
const enclosingClass = ParseTreeUtils.getEnclosingClassOrFunction(expression);
|
1342
1369
|
if (enclosingClass && enclosingClass.nodeType === 10 /* Class */) {
|
@@ -1354,7 +1381,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
1354
1381
|
break;
|
1355
1382
|
}
|
1356
1383
|
case 54 /* TypeAnnotation */: {
|
1357
|
-
return getDeclaredTypeForExpression(expression.valueExpression);
|
1384
|
+
return getDeclaredTypeForExpression(expression.valueExpression, usage);
|
1358
1385
|
}
|
1359
1386
|
case 35 /* MemberAccess */: {
|
1360
1387
|
const baseType = makeTopLevelTypeVarsConcrete(getTypeOfExpression(expression.leftExpression, 2 /* DoNotSpecialize */).type);
|
@@ -2468,7 +2495,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
2468
2495
|
}
|
2469
2496
|
function setSymbolAccessed(fileInfo, symbol, node) {
|
2470
2497
|
if (!speculativeTypeTracker.isSpeculative(node)) {
|
2471
|
-
fileInfo.
|
2498
|
+
fileInfo.accessedSymbolSet.add(symbol.id);
|
2472
2499
|
}
|
2473
2500
|
}
|
2474
2501
|
function getReturnTypeFromGenerator(type) {
|
@@ -2508,9 +2535,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
2508
2535
|
return undefined;
|
2509
2536
|
}
|
2510
2537
|
function getTypeOfName(node, flags) {
|
2511
|
-
var _a;
|
2538
|
+
var _a, _b;
|
2512
2539
|
const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
|
2513
2540
|
const name = node.value;
|
2541
|
+
let symbol;
|
2514
2542
|
let type;
|
2515
2543
|
let isIncomplete = false;
|
2516
2544
|
const allowForwardReferences = (flags & 4 /* AllowForwardReferences */) !== 0 || fileInfo.isStubFile;
|
@@ -2524,96 +2552,104 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
2524
2552
|
};
|
2525
2553
|
}
|
2526
2554
|
}
|
2527
|
-
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2531
|
-
|
2532
|
-
|
2533
|
-
|
2534
|
-
|
2535
|
-
|
2536
|
-
|
2537
|
-
|
2538
|
-
|
2539
|
-
|
2540
|
-
|
2541
|
-
|
2542
|
-
|
2543
|
-
|
2544
|
-
|
2545
|
-
|
2546
|
-
|
2547
|
-
|
2548
|
-
|
2549
|
-
|
2550
|
-
|
2551
|
-
|
2552
|
-
|
2553
|
-
|
2554
|
-
if (useCodeFlowAnalysis && !isSpecialBuiltIn) {
|
2555
|
-
// See if code flow analysis can tell us anything more about the type.
|
2556
|
-
// If the symbol is declared outside of our execution scope, use its effective
|
2557
|
-
// type. If it's declared inside our execution scope, it generally starts
|
2558
|
-
// as unbound at the start of the code flow.
|
2559
|
-
const typeAtStart = symbolWithScope.isBeyondExecutionScope || !symbol.isInitiallyUnbound()
|
2560
|
-
? effectiveType
|
2561
|
-
: types_1.UnboundType.create();
|
2562
|
-
const codeFlowTypeResult = getFlowTypeOfReference(node, symbol.id, typeAtStart,
|
2563
|
-
/* isInitialTypeIncomplete */ false,
|
2564
|
-
/* startNode */ undefined);
|
2565
|
-
if (codeFlowTypeResult.type) {
|
2566
|
-
type = codeFlowTypeResult.type;
|
2567
|
-
}
|
2568
|
-
if (codeFlowTypeResult.isIncomplete) {
|
2555
|
+
const typeParamSymbol = AnalyzerNodeInfo.getTypeParameterSymbol(node);
|
2556
|
+
if (typeParamSymbol) {
|
2557
|
+
symbol = typeParamSymbol;
|
2558
|
+
type = (_a = getDeclaredTypeOfSymbol(typeParamSymbol)) !== null && _a !== void 0 ? _a : types_1.UnknownType.create();
|
2559
|
+
setSymbolAccessed(fileInfo, symbol, node);
|
2560
|
+
}
|
2561
|
+
else {
|
2562
|
+
// Look for the scope that contains the value definition and
|
2563
|
+
// see if it has a declared type.
|
2564
|
+
const symbolWithScope = lookUpSymbolRecursive(node, name, !allowForwardReferences, allowForwardReferences && (flags & 1024 /* ExpectingTypeAnnotation */) !== 0);
|
2565
|
+
if (symbolWithScope) {
|
2566
|
+
let useCodeFlowAnalysis = !allowForwardReferences;
|
2567
|
+
// If the symbol is implicitly imported from the builtin
|
2568
|
+
// scope, there's no need to use code flow analysis.
|
2569
|
+
if (symbolWithScope.scope.type === 4 /* Builtin */) {
|
2570
|
+
useCodeFlowAnalysis = false;
|
2571
|
+
}
|
2572
|
+
symbol = symbolWithScope.symbol;
|
2573
|
+
// Get the effective type (either the declared type or the inferred type).
|
2574
|
+
// If we're using code flow analysis, pass the usage node so we consider
|
2575
|
+
// only the assignment nodes that are reachable from this usage.
|
2576
|
+
const effectiveTypeInfo = getEffectiveTypeOfSymbolForUsage(symbol, useCodeFlowAnalysis ? node : undefined);
|
2577
|
+
let effectiveType = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(effectiveTypeInfo.type);
|
2578
|
+
if (effectiveTypeInfo.isIncomplete) {
|
2579
|
+
if ((0, types_1.isUnbound)(effectiveType)) {
|
2580
|
+
effectiveType = types_1.UnknownType.create(/* isIncomplete */ true);
|
2581
|
+
}
|
2569
2582
|
isIncomplete = true;
|
2570
2583
|
}
|
2571
|
-
if (
|
2572
|
-
|
2573
|
-
|
2574
|
-
|
2575
|
-
|
2576
|
-
|
2584
|
+
if (effectiveTypeInfo.isRecursiveDefinition && isNodeReachable(node)) {
|
2585
|
+
addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.recursiveDefinition().format({ name }), node);
|
2586
|
+
}
|
2587
|
+
const isSpecialBuiltIn = !!effectiveType && (0, types_1.isInstantiableClass)(effectiveType) && types_1.ClassType.isSpecialBuiltIn(effectiveType);
|
2588
|
+
type = effectiveType;
|
2589
|
+
if (useCodeFlowAnalysis && !isSpecialBuiltIn) {
|
2590
|
+
// See if code flow analysis can tell us anything more about the type.
|
2591
|
+
// If the symbol is declared outside of our execution scope, use its effective
|
2592
|
+
// type. If it's declared inside our execution scope, it generally starts
|
2593
|
+
// as unbound at the start of the code flow.
|
2594
|
+
const typeAtStart = symbolWithScope.isBeyondExecutionScope || !symbol.isInitiallyUnbound()
|
2595
|
+
? effectiveType
|
2596
|
+
: types_1.UnboundType.create();
|
2597
|
+
const codeFlowTypeResult = getFlowTypeOfReference(node, symbol.id, typeAtStart,
|
2598
|
+
/* isInitialTypeIncomplete */ false,
|
2599
|
+
/* startNode */ undefined);
|
2600
|
+
if (codeFlowTypeResult.type) {
|
2601
|
+
type = codeFlowTypeResult.type;
|
2602
|
+
}
|
2603
|
+
if (codeFlowTypeResult.isIncomplete) {
|
2577
2604
|
isIncomplete = true;
|
2578
2605
|
}
|
2606
|
+
if (!codeFlowTypeResult.type && symbolWithScope.isBeyondExecutionScope) {
|
2607
|
+
const outerScopeTypeResult = getCodeFlowTypeForCapturedVariable(node, symbolWithScope, effectiveType);
|
2608
|
+
if (outerScopeTypeResult === null || outerScopeTypeResult === void 0 ? void 0 : outerScopeTypeResult.type) {
|
2609
|
+
type = outerScopeTypeResult.type;
|
2610
|
+
}
|
2611
|
+
if (outerScopeTypeResult === null || outerScopeTypeResult === void 0 ? void 0 : outerScopeTypeResult.isIncomplete) {
|
2612
|
+
isIncomplete = true;
|
2613
|
+
}
|
2614
|
+
}
|
2579
2615
|
}
|
2580
|
-
|
2581
|
-
|
2582
|
-
|
2583
|
-
|
2584
|
-
|
2585
|
-
|
2586
|
-
|
2587
|
-
|
2588
|
-
|
2589
|
-
|
2590
|
-
|
2591
|
-
|
2592
|
-
|
2593
|
-
|
2594
|
-
|
2595
|
-
|
2596
|
-
|
2597
|
-
|
2598
|
-
|
2599
|
-
|
2600
|
-
|
2601
|
-
|
2602
|
-
|
2603
|
-
|
2616
|
+
// Detect, report, and fill in missing type arguments if appropriate.
|
2617
|
+
type = reportMissingTypeArguments(node, type, flags);
|
2618
|
+
setSymbolAccessed(fileInfo, symbol, node);
|
2619
|
+
if ((flags & 1024 /* ExpectingTypeAnnotation */) !== 0) {
|
2620
|
+
// Verify that the name does not refer to a (non type alias) variable.
|
2621
|
+
if (effectiveTypeInfo.includesVariableDecl && !type.typeAliasInfo) {
|
2622
|
+
let isAllowedTypeForVariable = (0, types_1.isTypeVar)(type) || (0, typeUtils_1.isTypeAliasPlaceholder)(type);
|
2623
|
+
if ((0, types_1.isClass)(type) && !type.includeSubclasses) {
|
2624
|
+
// This check exempts class types that are created by calling
|
2625
|
+
// NewType, NamedTuple, and by invoking a metaclass directly.
|
2626
|
+
isAllowedTypeForVariable = true;
|
2627
|
+
}
|
2628
|
+
// Disable for assignments in the typings.pyi file, since it defines special forms.
|
2629
|
+
if (!isAllowedTypeForVariable && !fileInfo.isTypingStubFile) {
|
2630
|
+
// This might be a union that was previously a type alias
|
2631
|
+
// but was reconstituted in such a way that we lost the
|
2632
|
+
// typeAliasInfo. Avoid the false positive error by suppressing
|
2633
|
+
// the error when it looks like a plausible type alias type.
|
2634
|
+
if (effectiveTypeInfo.includesIllegalTypeAliasDecl ||
|
2635
|
+
!types_1.TypeBase.isInstantiable(type) ||
|
2636
|
+
(flags & 2 /* DoNotSpecialize */) !== 0) {
|
2637
|
+
addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeAnnotationVariable(), node);
|
2638
|
+
type = types_1.UnknownType.create();
|
2639
|
+
}
|
2604
2640
|
}
|
2605
2641
|
}
|
2606
2642
|
}
|
2607
2643
|
}
|
2608
|
-
}
|
2609
|
-
else {
|
2610
|
-
// Handle the special case of "reveal_type" and "reveal_locals".
|
2611
|
-
if (name === 'reveal_type' || name === 'reveal_locals') {
|
2612
|
-
type = types_1.AnyType.create();
|
2613
|
-
}
|
2614
2644
|
else {
|
2615
|
-
|
2616
|
-
|
2645
|
+
// Handle the special case of "reveal_type" and "reveal_locals".
|
2646
|
+
if (name === 'reveal_type' || name === 'reveal_locals') {
|
2647
|
+
type = types_1.AnyType.create();
|
2648
|
+
}
|
2649
|
+
else {
|
2650
|
+
addDiagnostic(fileInfo.diagnosticRuleSet.reportUndefinedVariable, diagnosticRules_1.DiagnosticRule.reportUndefinedVariable, localize_1.Localizer.Diagnostic.symbolIsUndefined().format({ name }), node);
|
2651
|
+
type = types_1.UnknownType.create();
|
2652
|
+
}
|
2617
2653
|
}
|
2618
2654
|
}
|
2619
2655
|
if ((0, types_1.isParamSpec)(type)) {
|
@@ -2628,7 +2664,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
2628
2664
|
type.details.name === name) {
|
2629
2665
|
// Handle the special case of a PEP 604 union. These can appear within
|
2630
2666
|
// an implied type alias where we are not expecting a type.
|
2631
|
-
const isPep604Union = ((
|
2667
|
+
const isPep604Union = ((_b = node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 7 /* BinaryOperation */ &&
|
2632
2668
|
node.parent.operator === 6 /* BitwiseOr */;
|
2633
2669
|
if (!isPep604Union) {
|
2634
2670
|
// A TypeVar in contexts where we're not expecting a type is
|
@@ -2716,6 +2752,20 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
2716
2752
|
type = scopedTypeVarInfo.type;
|
2717
2753
|
if ((flags & 2048 /* DisallowTypeVarsWithScopeId */) !== 0 && type.scopeId !== undefined) {
|
2718
2754
|
if (!type.details.isSynthesized && !type.details.isParamSpec) {
|
2755
|
+
// This TypeVar already has a scope ID assigned to it. See if it
|
2756
|
+
// originates from type parameter syntax. If so, allow it.
|
2757
|
+
if (type.details.isTypeParamSyntax) {
|
2758
|
+
return type;
|
2759
|
+
}
|
2760
|
+
// If this type variable expression is used within a generic class,
|
2761
|
+
// function, or type alias that uses type parameter syntax, there is
|
2762
|
+
// no need to report an error here.
|
2763
|
+
const typeVarScopeNode = ParseTreeUtils.getTypeVarScopeNode(node);
|
2764
|
+
if (typeVarScopeNode &&
|
2765
|
+
typeVarScopeNode.typeParameters &&
|
2766
|
+
!typeVarScopeNode.typeParameters.parameters.some((t) => t.name === node)) {
|
2767
|
+
return type;
|
2768
|
+
}
|
2719
2769
|
addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeVarUsedByOuterScope().format({ name: type.details.name }), node);
|
2720
2770
|
}
|
2721
2771
|
}
|
@@ -2741,6 +2791,14 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
2741
2791
|
}
|
2742
2792
|
}
|
2743
2793
|
if (enclosingScope) {
|
2794
|
+
// If the enclosing scope is using type parameter syntax, traditional
|
2795
|
+
// type variables can't be used in this context.
|
2796
|
+
if (enclosingScope.typeParameters) {
|
2797
|
+
addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeParameterNotDeclared().format({
|
2798
|
+
name: type.details.name,
|
2799
|
+
container: enclosingScope.name.value,
|
2800
|
+
}), node);
|
2801
|
+
}
|
2744
2802
|
type = types_1.TypeVarType.cloneForScopeId(type, getScopeIdForNode(enclosingScope), enclosingScope.name.value, enclosingScope.nodeType === 28 /* Function */
|
2745
2803
|
? 1 /* Function */
|
2746
2804
|
: 0 /* Class */);
|
@@ -2834,50 +2892,48 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
2834
2892
|
// Walks up the parse tree to find a function, class, or type alias
|
2835
2893
|
// assignment that provides the context for a type variable.
|
2836
2894
|
function findScopedTypeVar(node, type) {
|
2837
|
-
var _a;
|
2838
2895
|
let curNode = node;
|
2839
2896
|
let nestedClassCount = 0;
|
2840
2897
|
(0, debug_1.assert)(types_1.TypeBase.isInstantiable(type));
|
2841
2898
|
while (curNode) {
|
2842
|
-
|
2843
|
-
// that contains the TypeVar in its signature, but we make an exception
|
2844
|
-
// for TypeVars that are used in a member access expression to accommodate
|
2845
|
-
// ParamSpecs (P.args and P.kwargs).
|
2846
|
-
curNode = ParseTreeUtils.getTypeVarScopeNode(curNode, ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 35 /* MemberAccess */);
|
2899
|
+
curNode = ParseTreeUtils.getTypeVarScopeNode(curNode);
|
2847
2900
|
if (!curNode) {
|
2848
2901
|
break;
|
2849
2902
|
}
|
2850
|
-
let
|
2903
|
+
let typeParametersForScope;
|
2904
|
+
let scopeUsesTypeParameterSyntax = false;
|
2851
2905
|
if (curNode.nodeType === 10 /* Class */) {
|
2852
2906
|
const classTypeInfo = getTypeOfClass(curNode);
|
2853
|
-
if (classTypeInfo) {
|
2854
|
-
|
2907
|
+
if (classTypeInfo && !types_1.ClassType.isPartiallyEvaluated(classTypeInfo.classType)) {
|
2908
|
+
typeParametersForScope = classTypeInfo.classType.details.typeParameters;
|
2855
2909
|
}
|
2910
|
+
scopeUsesTypeParameterSyntax = !!curNode.typeParameters;
|
2856
2911
|
nestedClassCount++;
|
2857
2912
|
}
|
2858
2913
|
else if (curNode.nodeType === 28 /* Function */) {
|
2859
2914
|
const functionTypeInfo = getTypeOfFunction(curNode);
|
2860
2915
|
if (functionTypeInfo) {
|
2861
|
-
|
2916
|
+
typeParametersForScope = [];
|
2862
2917
|
functionTypeInfo.functionType.details.parameters.forEach((param) => {
|
2863
2918
|
if (param.hasDeclaredType) {
|
2864
|
-
(0, typeUtils_1.addTypeVarsToListIfUnique)(
|
2919
|
+
(0, typeUtils_1.addTypeVarsToListIfUnique)(typeParametersForScope, (0, typeUtils_1.getTypeVarArgumentsRecursive)(param.type));
|
2865
2920
|
}
|
2866
2921
|
});
|
2867
2922
|
if (functionTypeInfo.functionType.details.declaredReturnType) {
|
2868
|
-
(0, typeUtils_1.addTypeVarsToListIfUnique)(
|
2923
|
+
(0, typeUtils_1.addTypeVarsToListIfUnique)(typeParametersForScope, (0, typeUtils_1.getTypeVarArgumentsRecursive)(functionTypeInfo.functionType.details.declaredReturnType));
|
2869
2924
|
}
|
2870
2925
|
}
|
2926
|
+
scopeUsesTypeParameterSyntax = !!curNode.typeParameters;
|
2871
2927
|
}
|
2872
|
-
else if (curNode.nodeType ===
|
2873
|
-
|
2928
|
+
else if (curNode.nodeType === 77 /* TypeAlias */) {
|
2929
|
+
scopeUsesTypeParameterSyntax = !!curNode.typeParameters;
|
2874
2930
|
}
|
2875
|
-
if (
|
2876
|
-
const match =
|
2931
|
+
if (typeParametersForScope) {
|
2932
|
+
const match = typeParametersForScope.find((typeVar) => typeVar.details.name === type.details.name);
|
2877
2933
|
if (match === null || match === void 0 ? void 0 : match.scopeId) {
|
2878
2934
|
// Use the scoped version of the TypeVar rather than the (unscoped) original type.
|
2879
2935
|
type = types_1.TypeVarType.cloneForScopeId(type, match.scopeId, match.scopeName, match.scopeType);
|
2880
|
-
return { type, foundInterveningClass: nestedClassCount > 1 };
|
2936
|
+
return { type, foundInterveningClass: nestedClassCount > 1 && !scopeUsesTypeParameterSyntax };
|
2881
2937
|
}
|
2882
2938
|
}
|
2883
2939
|
curNode = curNode.parent;
|
@@ -2885,14 +2941,29 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
2885
2941
|
// See if this is part of an assignment statement that is defining a type alias.
|
2886
2942
|
curNode = node;
|
2887
2943
|
while (curNode) {
|
2888
|
-
|
2889
|
-
|
2944
|
+
let leftType;
|
2945
|
+
let typeAliasNode = undefined;
|
2946
|
+
if (curNode.nodeType === 77 /* TypeAlias */) {
|
2947
|
+
leftType = readTypeCache(curNode.name, 0 /* None */);
|
2948
|
+
typeAliasNode = curNode;
|
2949
|
+
}
|
2950
|
+
else if (curNode.nodeType === 3 /* Assignment */) {
|
2951
|
+
leftType = readTypeCache(curNode.leftExpression, 0 /* None */);
|
2952
|
+
}
|
2953
|
+
if (leftType) {
|
2890
2954
|
// Is this a placeholder that was temporarily written to the cache for
|
2891
2955
|
// purposes of resolving type aliases?
|
2892
2956
|
if (leftType &&
|
2893
2957
|
(0, types_1.isTypeVar)(leftType) &&
|
2894
2958
|
leftType.details.recursiveTypeAliasScopeId &&
|
2895
2959
|
leftType.details.recursiveTypeAliasName) {
|
2960
|
+
// Type alias statements cannot be used with old-style type variables.
|
2961
|
+
if (typeAliasNode && !type.details.isTypeParamSyntax) {
|
2962
|
+
addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeParameterNotDeclared().format({
|
2963
|
+
name: type.details.name,
|
2964
|
+
container: typeAliasNode.name.value,
|
2965
|
+
}), node);
|
2966
|
+
}
|
2896
2967
|
return {
|
2897
2968
|
type: types_1.TypeVarType.cloneForScopeId(type, leftType.details.recursiveTypeAliasScopeId, leftType.details.recursiveTypeAliasName, 2 /* TypeAlias */),
|
2898
2969
|
foundInterveningClass: false,
|
@@ -4098,7 +4169,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
4098
4169
|
}
|
4099
4170
|
if ((0, typeUtils_1.isTypeAliasPlaceholder)(baseTypeResult.type)) {
|
4100
4171
|
const typeArgTypes = getTypeArgs(node, flags).map((t) => (0, typeUtils_1.convertToInstance)(t.type));
|
4101
|
-
const type = types_1.TypeBase.cloneForTypeAlias(baseTypeResult.type, baseTypeResult.type.details.recursiveTypeAliasName, '', baseTypeResult.type.details.recursiveTypeAliasScopeId,
|
4172
|
+
const type = types_1.TypeBase.cloneForTypeAlias(baseTypeResult.type, baseTypeResult.type.details.recursiveTypeAliasName, '', baseTypeResult.type.details.recursiveTypeAliasScopeId, baseTypeResult.type.details.recursiveTypeParameters, typeArgTypes);
|
4102
4173
|
return { type, node };
|
4103
4174
|
}
|
4104
4175
|
let isIncomplete = false;
|
@@ -4773,7 +4844,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
4773
4844
|
}
|
4774
4845
|
const assertedType = (0, typeUtils_1.convertToInstance)(getTypeOfArgumentExpectingType(node.arguments[1]).type);
|
4775
4846
|
if (!(0, types_1.isTypeSame)(assertedType, arg0TypeResult.type)) {
|
4776
|
-
|
4847
|
+
addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.assertTypeTypeMismatch().format({
|
4777
4848
|
expected: printType(assertedType),
|
4778
4849
|
received: printType(arg0TypeResult.type),
|
4779
4850
|
}), node.arguments[0].valueExpression);
|
@@ -5157,7 +5228,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
5157
5228
|
}
|
5158
5229
|
function validateOverloadedFunctionArguments(errorNode, argList, type, typeVarContext, skipUnknownArgCheck, expectedType) {
|
5159
5230
|
let filteredMatchResults = [];
|
5160
|
-
let contextFreeArgTypes
|
5231
|
+
let contextFreeArgTypes;
|
5161
5232
|
// Start by evaluating the types of the arguments without any expected
|
5162
5233
|
// type. Also, filter the list of overloads based on the number of
|
5163
5234
|
// positional and named arguments that are present. We do all of this
|
@@ -5177,21 +5248,6 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
5177
5248
|
overloadIndex++;
|
5178
5249
|
}
|
5179
5250
|
});
|
5180
|
-
// Also evaluate the types of each argument expression without regard to
|
5181
|
-
// the expectedType. We'll use this to determine whether we need to do
|
5182
|
-
// union expansion.
|
5183
|
-
contextFreeArgTypes = argList.map((arg) => {
|
5184
|
-
if (arg.type) {
|
5185
|
-
return arg.type;
|
5186
|
-
}
|
5187
|
-
if (arg.valueExpression) {
|
5188
|
-
const valueExpressionNode = arg.valueExpression;
|
5189
|
-
return useSpeculativeMode(valueExpressionNode, () => {
|
5190
|
-
return getTypeOfExpression(valueExpressionNode).type;
|
5191
|
-
});
|
5192
|
-
}
|
5193
|
-
return types_1.AnyType.create();
|
5194
|
-
});
|
5195
5251
|
});
|
5196
5252
|
filteredMatchResults = sortOverloadsByBestMatch(filteredMatchResults);
|
5197
5253
|
// If there are no possible arg/param matches among the overloads,
|
@@ -5239,6 +5295,25 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
5239
5295
|
}
|
5240
5296
|
// We didn't find an overload match. Try to expand the next union
|
5241
5297
|
// argument type into individual types and retry with the expanded types.
|
5298
|
+
if (!contextFreeArgTypes) {
|
5299
|
+
useSpeculativeMode(errorNode, () => {
|
5300
|
+
// Evaluate the types of each argument expression without regard to
|
5301
|
+
// the expectedType. We'll use this to determine whether we need to do
|
5302
|
+
// union expansion.
|
5303
|
+
contextFreeArgTypes = argList.map((arg) => {
|
5304
|
+
if (arg.type) {
|
5305
|
+
return arg.type;
|
5306
|
+
}
|
5307
|
+
if (arg.valueExpression) {
|
5308
|
+
const valueExpressionNode = arg.valueExpression;
|
5309
|
+
return useSpeculativeMode(valueExpressionNode, () => {
|
5310
|
+
return getTypeOfExpression(valueExpressionNode).type;
|
5311
|
+
});
|
5312
|
+
}
|
5313
|
+
return types_1.AnyType.create();
|
5314
|
+
});
|
5315
|
+
});
|
5316
|
+
}
|
5242
5317
|
expandedArgTypes = expandArgumentUnionTypes(contextFreeArgTypes, expandedArgTypes);
|
5243
5318
|
// Check for combinatoric explosion and break out of loop.
|
5244
5319
|
if (!expandedArgTypes || expandedArgTypes.length > maxOverloadUnionExpansionCount) {
|
@@ -5637,6 +5712,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
5637
5712
|
return (0, namedTuples_1.createNamedTupleType)(evaluatorInterface, errorNode, argList,
|
5638
5713
|
/* includesTypes */ false);
|
5639
5714
|
}
|
5715
|
+
// Handle the NewType specially, replacing the normal return type.
|
5716
|
+
if (expandedSubtype.details.builtInName === 'NewType') {
|
5717
|
+
return createNewType(errorNode, argList);
|
5718
|
+
}
|
5640
5719
|
let effectiveTypeVarContext = typeVarContext;
|
5641
5720
|
if (!effectiveTypeVarContext) {
|
5642
5721
|
// If a typeVarContext wasn't provided by the caller, allocate one here.
|
@@ -5673,10 +5752,6 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
5673
5752
|
argumentErrors = true;
|
5674
5753
|
}
|
5675
5754
|
}
|
5676
|
-
// Handle the NewType specially, replacing the normal return type.
|
5677
|
-
if (!functionResult.argumentErrors && expandedSubtype.details.builtInName === 'NewType') {
|
5678
|
-
return createNewType(errorNode, argList);
|
5679
|
-
}
|
5680
5755
|
if (expandedSubtype.details.builtInName === '__import__') {
|
5681
5756
|
// For the special __import__ type, we'll override the return type to be "Any".
|
5682
5757
|
// This is required because we don't know what module was imported, and we don't
|
@@ -6845,7 +6920,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
6845
6920
|
// scope.
|
6846
6921
|
let eliminateUnsolvedInUnions = true;
|
6847
6922
|
let curNode = errorNode;
|
6848
|
-
while (
|
6923
|
+
while (curNode) {
|
6849
6924
|
const typeVarScopeNode = ParseTreeUtils.getTypeVarScopeNode(curNode);
|
6850
6925
|
if (!typeVarScopeNode) {
|
6851
6926
|
break;
|
@@ -6854,7 +6929,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
6854
6929
|
if (typeVarContext.hasSolveForScope(typeVarScopeId)) {
|
6855
6930
|
eliminateUnsolvedInUnions = false;
|
6856
6931
|
}
|
6857
|
-
curNode = typeVarScopeNode;
|
6932
|
+
curNode = typeVarScopeNode.parent;
|
6858
6933
|
}
|
6859
6934
|
// If the function is returning a callable, don't eliminate unsolved
|
6860
6935
|
// type vars within a union. There are legit uses for unsolved type vars
|
@@ -7321,21 +7396,21 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
7321
7396
|
}
|
7322
7397
|
else if (paramName === 'covariant') {
|
7323
7398
|
if (argList[i].valueExpression && getBooleanValue(argList[i].valueExpression)) {
|
7324
|
-
if (typeVar.details.
|
7399
|
+
if (typeVar.details.declaredVariance === 3 /* Contravariant */) {
|
7325
7400
|
addError(localize_1.Localizer.Diagnostic.typeVarVariance(), argList[i].valueExpression);
|
7326
7401
|
}
|
7327
7402
|
else {
|
7328
|
-
typeVar.details.
|
7403
|
+
typeVar.details.declaredVariance = 2 /* Covariant */;
|
7329
7404
|
}
|
7330
7405
|
}
|
7331
7406
|
}
|
7332
7407
|
else if (paramName === 'contravariant') {
|
7333
7408
|
if (argList[i].valueExpression && getBooleanValue(argList[i].valueExpression)) {
|
7334
|
-
if (typeVar.details.
|
7409
|
+
if (typeVar.details.declaredVariance === 2 /* Covariant */) {
|
7335
7410
|
addError(localize_1.Localizer.Diagnostic.typeVarVariance(), argList[i].valueExpression);
|
7336
7411
|
}
|
7337
7412
|
else {
|
7338
|
-
typeVar.details.
|
7413
|
+
typeVar.details.declaredVariance = 3 /* Contravariant */;
|
7339
7414
|
}
|
7340
7415
|
}
|
7341
7416
|
}
|
@@ -9796,7 +9871,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
9796
9871
|
}
|
9797
9872
|
return undefined;
|
9798
9873
|
}
|
9799
|
-
function transformTypeForTypeAlias(type, name, errorNode) {
|
9874
|
+
function transformTypeForTypeAlias(type, name, errorNode, typeParameters) {
|
9800
9875
|
if (!types_1.TypeBase.isInstantiable(type)) {
|
9801
9876
|
return type;
|
9802
9877
|
}
|
@@ -9805,17 +9880,19 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
9805
9880
|
if ((0, typeUtils_1.isTypeAliasPlaceholder)(type)) {
|
9806
9881
|
return type;
|
9807
9882
|
}
|
9808
|
-
|
9809
|
-
|
9810
|
-
|
9811
|
-
|
9812
|
-
|
9813
|
-
(0,
|
9814
|
-
(0, typeUtils_1.
|
9815
|
-
|
9883
|
+
if (!typeParameters) {
|
9884
|
+
// Determine if there are any generic type parameters associated
|
9885
|
+
// with this type alias.
|
9886
|
+
typeParameters = [];
|
9887
|
+
// Skip this for a simple TypeVar (one that's not part of a union).
|
9888
|
+
if (!(0, types_1.isTypeVar)(type) || types_1.TypeBase.isAnnotated(type)) {
|
9889
|
+
(0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
|
9890
|
+
(0, typeUtils_1.addTypeVarsToListIfUnique)(typeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(subtype));
|
9891
|
+
});
|
9892
|
+
}
|
9893
|
+
// Don't include any synthesized type variables.
|
9894
|
+
typeParameters = typeParameters.filter((typeVar) => !typeVar.details.isSynthesized);
|
9816
9895
|
}
|
9817
|
-
// Don't include any synthesized type variables.
|
9818
|
-
typeParameters = typeParameters.filter((typeVar) => !typeVar.details.isSynthesized);
|
9819
9896
|
// Convert all type variables to instances.
|
9820
9897
|
typeParameters = typeParameters.map((typeVar) => {
|
9821
9898
|
if (types_1.TypeBase.isInstance(typeVar)) {
|
@@ -10016,7 +10093,9 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
10016
10093
|
}
|
10017
10094
|
if (!rightHandType) {
|
10018
10095
|
// Determine whether there is a declared type.
|
10019
|
-
const declaredType = getDeclaredTypeForExpression(node.leftExpression, {
|
10096
|
+
const declaredType = getDeclaredTypeForExpression(node.leftExpression, {
|
10097
|
+
method: 'set',
|
10098
|
+
});
|
10020
10099
|
let typeAliasNameNode;
|
10021
10100
|
let isSpeculativeTypeAlias = false;
|
10022
10101
|
if (isDeclaredTypeAlias(node.leftExpression)) {
|
@@ -10122,6 +10201,62 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
10122
10201
|
/* allowAssignmentToFinalVar */ true, expectedTypeDiagAddendum);
|
10123
10202
|
writeTypeCache(node, rightHandType, 0 /* None */, isIncomplete);
|
10124
10203
|
}
|
10204
|
+
// Evaluates the type of a type alias (i.e. "type") statement. This code
|
10205
|
+
// path does not handle traditional type aliases, which are treated as
|
10206
|
+
// variables since they use normal variable assignment syntax.
|
10207
|
+
function getTypeOfTypeAlias(node) {
|
10208
|
+
const cachedType = readTypeCache(node.name, 0 /* None */);
|
10209
|
+
if (cachedType) {
|
10210
|
+
return cachedType;
|
10211
|
+
}
|
10212
|
+
// Synthesize a type variable that represents the type alias while we're
|
10213
|
+
// evaluating it. This allows us to handle recursive definitions.
|
10214
|
+
const typeAliasTypeVar = types_1.TypeVarType.createInstantiable(`__type_alias_${node.name.value}`);
|
10215
|
+
typeAliasTypeVar.details.isSynthesized = true;
|
10216
|
+
typeAliasTypeVar.details.recursiveTypeAliasName = node.name.value;
|
10217
|
+
const scopeId = getScopeIdForNode(node.name);
|
10218
|
+
typeAliasTypeVar.details.recursiveTypeAliasScopeId = scopeId;
|
10219
|
+
typeAliasTypeVar.scopeId = scopeId;
|
10220
|
+
// Write the type to the type cache. It will be replaced below.
|
10221
|
+
writeTypeCache(node.name, typeAliasTypeVar, /* flags */ undefined, /* isIncomplete */ false);
|
10222
|
+
// Set a partial type to handle recursive (self-referential) type aliases.
|
10223
|
+
const scope = ScopeUtils.getScopeForNode(node);
|
10224
|
+
const typeAliasSymbol = scope === null || scope === void 0 ? void 0 : scope.lookUpSymbolRecursive(node.name.value);
|
10225
|
+
const typeAliasDecl = AnalyzerNodeInfo.getDeclaration(node);
|
10226
|
+
if (typeAliasDecl && typeAliasSymbol) {
|
10227
|
+
setSymbolResolutionPartialType(typeAliasSymbol.symbol, typeAliasDecl, typeAliasTypeVar);
|
10228
|
+
}
|
10229
|
+
let typeParameters = [];
|
10230
|
+
if (node.typeParameters) {
|
10231
|
+
typeParameters = evaluateTypeParameterList(node.typeParameters);
|
10232
|
+
typeAliasTypeVar.details.recursiveTypeParameters = typeParameters;
|
10233
|
+
}
|
10234
|
+
const aliasTypeResult = getTypeOfExpressionExpectingType(node.expression);
|
10235
|
+
let isIncomplete = false;
|
10236
|
+
let aliasType = aliasTypeResult.type;
|
10237
|
+
if (aliasTypeResult.isIncomplete) {
|
10238
|
+
isIncomplete = true;
|
10239
|
+
}
|
10240
|
+
// Clear the temporary type we wrote above.
|
10241
|
+
deleteTypeCacheEntry(node.name);
|
10242
|
+
aliasType = transformTypeForTypeAlias(aliasType, node.name, node.expression, typeParameters);
|
10243
|
+
if ((0, typeUtils_1.isTypeAliasRecursive)(typeAliasTypeVar, aliasType)) {
|
10244
|
+
addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeAliasIsRecursiveDirect().format({
|
10245
|
+
name: node.name.value,
|
10246
|
+
}), node.expression);
|
10247
|
+
aliasType = types_1.UnknownType.create();
|
10248
|
+
}
|
10249
|
+
// Set the resulting type to the boundType of the original type alias
|
10250
|
+
// to support recursive type aliases.
|
10251
|
+
typeAliasTypeVar.details.boundType = aliasType;
|
10252
|
+
if (typeAliasTypeVar.details.illegalRecursionDetected) {
|
10253
|
+
addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeAliasIsRecursiveIndirect().format({
|
10254
|
+
name: node.name.value,
|
10255
|
+
}), node.name);
|
10256
|
+
}
|
10257
|
+
writeTypeCache(node.name, aliasType, 0 /* None */, isIncomplete);
|
10258
|
+
return aliasType;
|
10259
|
+
}
|
10125
10260
|
function evaluateTypesForAugmentedAssignment(node) {
|
10126
10261
|
if (readTypeCache(node, 0 /* None */)) {
|
10127
10262
|
return;
|
@@ -10187,7 +10322,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
10187
10322
|
writeTypeCache(node.name, classType, /* flags */ undefined, /* isIncomplete */ false);
|
10188
10323
|
// Keep a list of unique type parameters that are used in the
|
10189
10324
|
// base class arguments.
|
10190
|
-
|
10325
|
+
let typeParameters = [];
|
10326
|
+
if (node.typeParameters) {
|
10327
|
+
typeParameters = evaluateTypeParameterList(node.typeParameters).map((t) => types_1.TypeVarType.cloneAsInstance(t));
|
10328
|
+
}
|
10191
10329
|
// If the class derives from "Generic" directly, it will provide
|
10192
10330
|
// all of the type parameters in the specified order.
|
10193
10331
|
let genericTypeParameters;
|
@@ -10308,12 +10446,18 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
10308
10446
|
(0, typeUtils_1.addTypeVarsToListIfUnique)(typeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(argType));
|
10309
10447
|
if ((0, types_1.isInstantiableClass)(argType)) {
|
10310
10448
|
if (types_1.ClassType.isBuiltIn(argType, 'Generic')) {
|
10311
|
-
if
|
10312
|
-
|
10313
|
-
|
10449
|
+
// 'Generic' is implicitly added if type parameter syntax is used.
|
10450
|
+
if (node.typeParameters) {
|
10451
|
+
addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.genericBaseClassNotAllowed(), arg.valueExpression);
|
10452
|
+
}
|
10453
|
+
else {
|
10454
|
+
if (!genericTypeParameters) {
|
10455
|
+
if (protocolTypeParameters) {
|
10456
|
+
addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.duplicateGenericAndProtocolBase(), arg.valueExpression);
|
10457
|
+
}
|
10458
|
+
genericTypeParameters = [];
|
10459
|
+
(0, typeUtils_1.addTypeVarsToListIfUnique)(genericTypeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(argType));
|
10314
10460
|
}
|
10315
|
-
genericTypeParameters = [];
|
10316
|
-
(0, typeUtils_1.addTypeVarsToListIfUnique)(genericTypeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(argType));
|
10317
10461
|
}
|
10318
10462
|
}
|
10319
10463
|
else if (types_1.ClassType.isBuiltIn(argType, 'Protocol') &&
|
@@ -10325,6 +10469,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
10325
10469
|
}
|
10326
10470
|
protocolTypeParameters = [];
|
10327
10471
|
(0, typeUtils_1.addTypeVarsToListIfUnique)(protocolTypeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(argType));
|
10472
|
+
if (node.typeParameters && protocolTypeParameters.length > 0) {
|
10473
|
+
addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.protocolBaseClassWithTypeArgs(), arg.valueExpression);
|
10474
|
+
protocolTypeParameters = [];
|
10475
|
+
}
|
10328
10476
|
}
|
10329
10477
|
}
|
10330
10478
|
}
|
@@ -10387,10 +10535,14 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
10387
10535
|
// If genericTypeParameters or protocolTypeParameters are provided,
|
10388
10536
|
// make sure that typeParameters is a proper subset.
|
10389
10537
|
genericTypeParameters = genericTypeParameters !== null && genericTypeParameters !== void 0 ? genericTypeParameters : protocolTypeParameters;
|
10390
|
-
if (genericTypeParameters) {
|
10538
|
+
if (genericTypeParameters && !node.typeParameters) {
|
10391
10539
|
verifyGenericTypeParameters(node.name, typeParameters, genericTypeParameters);
|
10392
10540
|
}
|
10393
|
-
classType.details.typeParameters = genericTypeParameters
|
10541
|
+
classType.details.typeParameters = genericTypeParameters !== null && genericTypeParameters !== void 0 ? genericTypeParameters : typeParameters;
|
10542
|
+
// Determine if one or more type parameters is autovariance.
|
10543
|
+
if (classType.details.typeParameters.some((param) => param.details.declaredVariance === 0 /* Auto */ && param.computedVariance === undefined)) {
|
10544
|
+
classType.details.requiresVarianceInference = true;
|
10545
|
+
}
|
10394
10546
|
// Make sure there's at most one variadic type parameter.
|
10395
10547
|
const variadics = classType.details.typeParameters.filter((param) => (0, types_1.isVariadicTypeVar)(param));
|
10396
10548
|
if (variadics.length > 1) {
|
@@ -10420,7 +10572,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
10420
10572
|
const initMethod = classType.details.fields.get('__init__');
|
10421
10573
|
if (initMethod) {
|
10422
10574
|
const initDecls = initMethod.getTypedDeclarations();
|
10423
|
-
if (initDecls.length === 1 && initDecls[0].type ===
|
10575
|
+
if (initDecls.length === 1 && initDecls[0].type === 5 /* Function */) {
|
10424
10576
|
const initDeclNode = initDecls[0].node;
|
10425
10577
|
const initParams = initDeclNode.parameters;
|
10426
10578
|
if (initParams.length > 1 &&
|
@@ -10583,6 +10735,79 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
10583
10735
|
}
|
10584
10736
|
return { classType, decoratedType };
|
10585
10737
|
}
|
10738
|
+
function inferTypeParameterVarianceForClass(classType) {
|
10739
|
+
if (!classType.details.requiresVarianceInference) {
|
10740
|
+
return;
|
10741
|
+
}
|
10742
|
+
if (!objectType || !(0, types_1.isClassInstance)(objectType)) {
|
10743
|
+
return;
|
10744
|
+
}
|
10745
|
+
// Replace all of the type parameters with invariant TypeVars.
|
10746
|
+
const updatedTypeParams = classType.details.typeParameters.map((typeParam) => types_1.TypeVarType.cloneAsInvariant(typeParam));
|
10747
|
+
const updatedClassType = types_1.ClassType.cloneWithNewTypeParameters(classType, updatedTypeParams);
|
10748
|
+
const dummyTypeObject = types_1.ClassType.createInstantiable('__varianceDummy', '', '', '', 0, 0, undefined, undefined);
|
10749
|
+
updatedTypeParams.forEach((param, paramIndex) => {
|
10750
|
+
// Skip variadics and ParamSpecs.
|
10751
|
+
if (param.details.isVariadic || param.details.isParamSpec) {
|
10752
|
+
return;
|
10753
|
+
}
|
10754
|
+
// Skip type variables without auto-variance.
|
10755
|
+
if (param.details.declaredVariance !== 0 /* Auto */) {
|
10756
|
+
return;
|
10757
|
+
}
|
10758
|
+
// Replace all type arguments with a dummy type except for the
|
10759
|
+
// TypeVar of interest, which is replaced with an object instance.
|
10760
|
+
const srcTypeArgs = updatedTypeParams.map((p, i) => {
|
10761
|
+
if (p.details.isVariadic) {
|
10762
|
+
return p;
|
10763
|
+
}
|
10764
|
+
return i === paramIndex ? objectType : dummyTypeObject;
|
10765
|
+
});
|
10766
|
+
// Replace all type arguments with a dummy type except for the
|
10767
|
+
// TypeVar of interest, which is replaced with itself.
|
10768
|
+
const destTypeArgs = updatedTypeParams.map((p, i) => {
|
10769
|
+
return i === paramIndex || p.details.isVariadic ? p : dummyTypeObject;
|
10770
|
+
});
|
10771
|
+
const srcType = types_1.ClassType.cloneForSpecialization(updatedClassType, srcTypeArgs,
|
10772
|
+
/* isTypeArgumentExplicit */ true);
|
10773
|
+
const destType = types_1.ClassType.cloneForSpecialization(updatedClassType, destTypeArgs,
|
10774
|
+
/* isTypeArgumentExplicit */ true);
|
10775
|
+
const isDestSubtypeOfSrc = assignClassToSelf(srcType, destType);
|
10776
|
+
let inferredVariance;
|
10777
|
+
if (isDestSubtypeOfSrc) {
|
10778
|
+
inferredVariance = 2 /* Covariant */;
|
10779
|
+
}
|
10780
|
+
else {
|
10781
|
+
const isSrcSubtypeOfDest = assignClassToSelf(destType, srcType);
|
10782
|
+
if (isSrcSubtypeOfDest) {
|
10783
|
+
inferredVariance = 3 /* Contravariant */;
|
10784
|
+
}
|
10785
|
+
else {
|
10786
|
+
inferredVariance = 1 /* Invariant */;
|
10787
|
+
}
|
10788
|
+
}
|
10789
|
+
// We assume here that we don't need to clone the type var object
|
10790
|
+
// because it was already cloned when it was associated with this
|
10791
|
+
// class scope.
|
10792
|
+
classType.details.typeParameters[paramIndex].computedVariance = inferredVariance;
|
10793
|
+
});
|
10794
|
+
// Note that variance inference is complete.
|
10795
|
+
classType.details.requiresVarianceInference = false;
|
10796
|
+
}
|
10797
|
+
function evaluateTypeParameterList(node) {
|
10798
|
+
const paramTypes = [];
|
10799
|
+
node.parameters.forEach((param) => {
|
10800
|
+
const paramSymbol = AnalyzerNodeInfo.getTypeParameterSymbol(param.name);
|
10801
|
+
(0, debug_1.assert)(paramSymbol);
|
10802
|
+
const typeOfParam = getDeclaredTypeOfSymbol(paramSymbol, param.name);
|
10803
|
+
if (!typeOfParam || !(0, types_1.isTypeVar)(typeOfParam)) {
|
10804
|
+
return;
|
10805
|
+
}
|
10806
|
+
writeTypeCache(param.name, typeOfParam, 0 /* None */, /* isIncomplete */ false);
|
10807
|
+
paramTypes.push(typeOfParam);
|
10808
|
+
});
|
10809
|
+
return paramTypes;
|
10810
|
+
}
|
10586
10811
|
function computeEffectiveMetaclass(classType, errorNode) {
|
10587
10812
|
let effectiveMetaclass = classType.details.declaredMetaclass;
|
10588
10813
|
let reportedMetaclassConflict = false;
|
@@ -10908,6 +11133,9 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
10908
11133
|
}), node.functionAnnotationComment);
|
10909
11134
|
}
|
10910
11135
|
}
|
11136
|
+
if (node.typeParameters) {
|
11137
|
+
evaluateTypeParameterList(node.typeParameters);
|
11138
|
+
}
|
10911
11139
|
const markParamAccessed = (param) => {
|
10912
11140
|
if (param.name) {
|
10913
11141
|
const symbolWithScope = lookUpSymbolRecursive(param.name, param.name.value, /* honorCodeFlow */ false);
|
@@ -11216,7 +11444,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
11216
11444
|
const baseClassMemberInfo = (0, typeUtils_1.lookUpClassMember)(containingClassType, methodName, 1 /* SkipOriginalClass */);
|
11217
11445
|
if (baseClassMemberInfo) {
|
11218
11446
|
const memberDecls = baseClassMemberInfo.symbol.getDeclarations();
|
11219
|
-
if (memberDecls.length === 1 && memberDecls[0].type ===
|
11447
|
+
if (memberDecls.length === 1 && memberDecls[0].type === 5 /* Function */) {
|
11220
11448
|
const baseClassMethodNode = memberDecls[0].node;
|
11221
11449
|
// Does the signature match exactly with the exception of annotations?
|
11222
11450
|
if (baseClassMethodNode.parameters.length === functionNode.parameters.length &&
|
@@ -11493,14 +11721,14 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
11493
11721
|
// to recursion if there is a large number (1000's) of overloads.
|
11494
11722
|
for (let i = 0; i < declIndex; i++) {
|
11495
11723
|
const decl = decls[i];
|
11496
|
-
if (decl.type ===
|
11724
|
+
if (decl.type === 5 /* Function */) {
|
11497
11725
|
getTypeOfFunction(decl.node);
|
11498
11726
|
}
|
11499
11727
|
}
|
11500
11728
|
const overloadedTypes = [];
|
11501
11729
|
// Look at the previous declaration's type.
|
11502
11730
|
const prevDecl = decls[declIndex - 1];
|
11503
|
-
if (prevDecl.type ===
|
11731
|
+
if (prevDecl.type === 5 /* Function */) {
|
11504
11732
|
const prevDeclDeclTypeInfo = getTypeOfFunction(prevDecl.node);
|
11505
11733
|
if (prevDeclDeclTypeInfo) {
|
11506
11734
|
if ((0, types_1.isFunction)(prevDeclDeclTypeInfo.decoratedType)) {
|
@@ -12050,19 +12278,19 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12050
12278
|
// case, we want to choose the last declaration.
|
12051
12279
|
const filteredDecls = symbolWithScope.symbol
|
12052
12280
|
.getDeclarations()
|
12053
|
-
.filter((decl) => ParseTreeUtils.isNodeContainedWithin(node, decl.node) && decl.type ===
|
12281
|
+
.filter((decl) => ParseTreeUtils.isNodeContainedWithin(node, decl.node) && decl.type === 8 /* Alias */);
|
12054
12282
|
let aliasDecl = filteredDecls.length > 0 ? filteredDecls[filteredDecls.length - 1] : undefined;
|
12055
12283
|
// If we didn't find an exact match, look for any alias associated with
|
12056
12284
|
// this symbol. In cases where we have multiple ImportAs nodes that share
|
12057
12285
|
// the same first-part name (e.g. "import asyncio" and "import asyncio.tasks"),
|
12058
12286
|
// we may not find the declaration associated with this node.
|
12059
12287
|
if (!aliasDecl) {
|
12060
|
-
aliasDecl = symbolWithScope.symbol.getDeclarations().find((decl) => decl.type ===
|
12288
|
+
aliasDecl = symbolWithScope.symbol.getDeclarations().find((decl) => decl.type === 8 /* Alias */);
|
12061
12289
|
}
|
12062
12290
|
if (!aliasDecl) {
|
12063
12291
|
return undefined;
|
12064
12292
|
}
|
12065
|
-
(0, debug_1.assert)(aliasDecl.type ===
|
12293
|
+
(0, debug_1.assert)(aliasDecl.type === 8 /* Alias */);
|
12066
12294
|
const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
|
12067
12295
|
// Try to resolve the alias while honoring external visibility.
|
12068
12296
|
const resolvedAliasInfo = resolveAliasDeclarationWithInfo(aliasDecl,
|
@@ -12099,7 +12327,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12099
12327
|
// expression or statement that contains it. This contextual evaluation
|
12100
12328
|
// allows for bidirectional type evaluation.
|
12101
12329
|
function evaluateTypesForExpressionInContext(node) {
|
12102
|
-
var _a, _b, _c;
|
12330
|
+
var _a, _b, _c, _d, _e;
|
12103
12331
|
let lastContextualExpression = node;
|
12104
12332
|
let curNode = node;
|
12105
12333
|
function isContextual(node) {
|
@@ -12168,6 +12396,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12168
12396
|
getTypeOfClass(node.parent);
|
12169
12397
|
return;
|
12170
12398
|
}
|
12399
|
+
else if (node.parent.nodeType === 77 /* TypeAlias */ && node.parent.name === node) {
|
12400
|
+
getTypeOfTypeAlias(node.parent);
|
12401
|
+
return;
|
12402
|
+
}
|
12171
12403
|
else if (node.parent.nodeType === 29 /* Global */ ||
|
12172
12404
|
node.parent.nodeType === 39 /* Nonlocal */) {
|
12173
12405
|
// For global and nonlocal statements, allow forward references so
|
@@ -12206,15 +12438,32 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12206
12438
|
verifyDeleteExpression(lastContextualExpression);
|
12207
12439
|
return;
|
12208
12440
|
}
|
12441
|
+
// If this is the name node within a type parameter list, see if it's a type alias
|
12442
|
+
// definition. If so, we need to evaluate the type alias contextually.
|
12443
|
+
if (parent.nodeType === 75 /* TypeParameter */ && lastContextualExpression === parent.name) {
|
12444
|
+
if (((_a = parent.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 76 /* TypeParameterList */ &&
|
12445
|
+
((_b = parent.parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 77 /* TypeAlias */) {
|
12446
|
+
getTypeOfTypeAlias(parent.parent.parent);
|
12447
|
+
return;
|
12448
|
+
}
|
12449
|
+
}
|
12450
|
+
if (parent.nodeType === 75 /* TypeParameter */) {
|
12451
|
+
getTypeOfExpression(parent.name);
|
12452
|
+
return;
|
12453
|
+
}
|
12454
|
+
if (parent.nodeType === 77 /* TypeAlias */) {
|
12455
|
+
getTypeOfTypeAlias(parent);
|
12456
|
+
return;
|
12457
|
+
}
|
12209
12458
|
if (parent.nodeType === 5 /* AugmentedAssignment */) {
|
12210
12459
|
evaluateTypesForAugmentedAssignment(parent);
|
12211
12460
|
return;
|
12212
12461
|
}
|
12213
12462
|
if (parent.nodeType === 13 /* Decorator */) {
|
12214
|
-
if (((
|
12463
|
+
if (((_c = parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 10 /* Class */) {
|
12215
12464
|
getTypeOfClass(parent.parent);
|
12216
12465
|
}
|
12217
|
-
else if (((
|
12466
|
+
else if (((_d = parent.parent) === null || _d === void 0 ? void 0 : _d.nodeType) === 28 /* Function */) {
|
12218
12467
|
getTypeOfFunction(parent.parent);
|
12219
12468
|
}
|
12220
12469
|
return;
|
@@ -12265,7 +12514,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12265
12514
|
return;
|
12266
12515
|
}
|
12267
12516
|
// A class argument must be evaluated in the context of the class declaration.
|
12268
|
-
if (parent.nodeType === 1 /* Argument */ && ((
|
12517
|
+
if (parent.nodeType === 1 /* Argument */ && ((_e = parent.parent) === null || _e === void 0 ? void 0 : _e.nodeType) === 10 /* Class */) {
|
12269
12518
|
getTypeOfClass(parent.parent);
|
12270
12519
|
return;
|
12271
12520
|
}
|
@@ -12361,6 +12610,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12361
12610
|
}
|
12362
12611
|
break;
|
12363
12612
|
}
|
12613
|
+
case 77 /* TypeAlias */: {
|
12614
|
+
getTypeOfTypeAlias(curNode);
|
12615
|
+
return;
|
12616
|
+
}
|
12364
12617
|
case 4 /* AssignmentExpression */: {
|
12365
12618
|
getTypeOfExpression(curNode);
|
12366
12619
|
return;
|
@@ -12887,10 +13140,12 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12887
13140
|
if (symbolWithScope && honorCodeFlow && scopeTypeHonorsCodeFlow) {
|
12888
13141
|
// Filter the declarations based on flow reachability.
|
12889
13142
|
const reachableDecls = symbolWithScope.symbol.getDeclarations().filter((decl) => {
|
12890
|
-
if (decl.type !==
|
13143
|
+
if (decl.type !== 8 /* Alias */ && decl.type !== 0 /* Intrinsic */) {
|
12891
13144
|
// Is the declaration in the same execution scope as the "usageNode" node?
|
12892
13145
|
const usageScope = ParseTreeUtils.getExecutionScopeNode(node);
|
12893
|
-
const declNode = decl.type ===
|
13146
|
+
const declNode = decl.type === 6 /* Class */ ||
|
13147
|
+
decl.type === 5 /* Function */ ||
|
13148
|
+
decl.type === 4 /* TypeAlias */
|
12894
13149
|
? decl.node.name
|
12895
13150
|
: decl.node;
|
12896
13151
|
const declScope = ParseTreeUtils.getExecutionScopeNode(declNode);
|
@@ -13008,7 +13263,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13008
13263
|
if ((0, types_1.isFunction)(type)) {
|
13009
13264
|
if (type.details.declaration) {
|
13010
13265
|
const functionDecl = type.details.declaration;
|
13011
|
-
if (functionDecl.type ===
|
13266
|
+
if (functionDecl.type === 5 /* Function */) {
|
13012
13267
|
const functionNode = functionDecl.node;
|
13013
13268
|
const functionScope = AnalyzerNodeInfo.getScope(functionNode);
|
13014
13269
|
if (functionScope) {
|
@@ -13072,7 +13327,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13072
13327
|
// The alias could have more decls that don't refer to this import. Filter
|
13073
13328
|
// out the one(s) that specifically associated with this import statement.
|
13074
13329
|
const declsForThisImport = symbolInScope.symbol.getDeclarations().filter((decl) => {
|
13075
|
-
return decl.type ===
|
13330
|
+
return decl.type === 8 /* Alias */ && decl.node === node.parent;
|
13076
13331
|
});
|
13077
13332
|
(0, collectionUtils_1.appendArray)(declarations, (0, declarationUtils_1.getDeclarationsWithUsesLocalNameRemoved)(declsForThisImport));
|
13078
13333
|
}
|
@@ -13081,7 +13336,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13081
13336
|
else if (node.parent &&
|
13082
13337
|
node.parent.nodeType === 35 /* MemberAccess */ &&
|
13083
13338
|
node === node.parent.memberName) {
|
13084
|
-
let baseType =
|
13339
|
+
let baseType = getTypeOfExpression(node.parent.leftExpression, 2 /* DoNotSpecialize */).type;
|
13085
13340
|
if (baseType) {
|
13086
13341
|
baseType = makeTopLevelTypeVarsConcrete(baseType);
|
13087
13342
|
const memberName = node.parent.memberName.value;
|
@@ -13196,9 +13451,17 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13196
13451
|
// Determine if this node is within a quoted type annotation.
|
13197
13452
|
const isWithinTypeAnnotation = ParseTreeUtils.isWithinTypeAnnotation(node, !(0, analyzerFileInfo_1.isAnnotationEvaluationPostponed)(AnalyzerNodeInfo.getFileInfo(node)));
|
13198
13453
|
const allowForwardReferences = isWithinTypeAnnotation || fileInfo.isStubFile;
|
13199
|
-
|
13200
|
-
|
13201
|
-
|
13454
|
+
let symbol;
|
13455
|
+
const typeParamSymbol = AnalyzerNodeInfo.getTypeParameterSymbol(node);
|
13456
|
+
if (typeParamSymbol) {
|
13457
|
+
symbol = typeParamSymbol;
|
13458
|
+
}
|
13459
|
+
else {
|
13460
|
+
const symbolWithScope = lookUpSymbolRecursive(node, node.value, !allowForwardReferences, isWithinTypeAnnotation);
|
13461
|
+
symbol = symbolWithScope === null || symbolWithScope === void 0 ? void 0 : symbolWithScope.symbol;
|
13462
|
+
}
|
13463
|
+
if (symbol) {
|
13464
|
+
(0, collectionUtils_1.appendArray)(declarations, symbol.getDeclarations());
|
13202
13465
|
}
|
13203
13466
|
}
|
13204
13467
|
return declarations;
|
@@ -13244,17 +13507,20 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13244
13507
|
}
|
13245
13508
|
return types_1.UnknownType.create();
|
13246
13509
|
}
|
13247
|
-
case
|
13510
|
+
case 6 /* Class */: {
|
13248
13511
|
const classTypeInfo = getTypeOfClass(declaration.node);
|
13249
13512
|
return classTypeInfo === null || classTypeInfo === void 0 ? void 0 : classTypeInfo.decoratedType;
|
13250
13513
|
}
|
13251
|
-
case
|
13514
|
+
case 7 /* SpecialBuiltInClass */: {
|
13252
13515
|
return getTypeOfAnnotation(declaration.node.typeAnnotation);
|
13253
13516
|
}
|
13254
|
-
case
|
13517
|
+
case 5 /* Function */: {
|
13255
13518
|
const functionTypeInfo = getTypeOfFunction(declaration.node);
|
13256
13519
|
return functionTypeInfo === null || functionTypeInfo === void 0 ? void 0 : functionTypeInfo.decoratedType;
|
13257
13520
|
}
|
13521
|
+
case 4 /* TypeAlias */: {
|
13522
|
+
return getTypeOfTypeAlias(declaration.node);
|
13523
|
+
}
|
13258
13524
|
case 2 /* Parameter */: {
|
13259
13525
|
let typeAnnotationNode = declaration.node.typeAnnotation || declaration.node.typeAnnotationComment;
|
13260
13526
|
// If there wasn't an annotation, see if the parent function
|
@@ -13276,6 +13542,62 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13276
13542
|
}
|
13277
13543
|
return undefined;
|
13278
13544
|
}
|
13545
|
+
case 3 /* TypeParameter */: {
|
13546
|
+
let typeVar = types_1.TypeVarType.createInstantiable(declaration.node.name.value);
|
13547
|
+
if (declaration.node.typeParamCategory === parseNodes_1.TypeParameterCategory.TypeVarTuple) {
|
13548
|
+
typeVar.details.isVariadic = true;
|
13549
|
+
}
|
13550
|
+
else if (declaration.node.typeParamCategory === parseNodes_1.TypeParameterCategory.ParamSpec) {
|
13551
|
+
typeVar.details.isParamSpec = true;
|
13552
|
+
}
|
13553
|
+
if (declaration.node.boundExpression) {
|
13554
|
+
if (declaration.node.boundExpression.nodeType === 52 /* Tuple */) {
|
13555
|
+
const constraints = declaration.node.boundExpression.expressions.map((constraint) => {
|
13556
|
+
const constraintType = getTypeOfExpressionExpectingType(constraint).type;
|
13557
|
+
if ((0, typeUtils_1.requiresSpecialization)(constraintType, /* ignorePseudoGeneric */ true)) {
|
13558
|
+
addError(localize_1.Localizer.Diagnostic.typeVarGeneric(), constraint);
|
13559
|
+
}
|
13560
|
+
return (0, typeUtils_1.convertToInstance)(constraintType);
|
13561
|
+
});
|
13562
|
+
if (constraints.length < 2) {
|
13563
|
+
addDiagnostic(AnalyzerNodeInfo.getFileInfo(declaration.node.boundExpression).diagnosticRuleSet
|
13564
|
+
.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeVarSingleConstraint(), declaration.node.boundExpression);
|
13565
|
+
}
|
13566
|
+
else if (declaration.node.typeParamCategory === parseNodes_1.TypeParameterCategory.TypeVar) {
|
13567
|
+
typeVar.details.constraints = constraints;
|
13568
|
+
}
|
13569
|
+
}
|
13570
|
+
else {
|
13571
|
+
const boundType = getTypeOfExpressionExpectingType(declaration.node.boundExpression).type;
|
13572
|
+
if ((0, typeUtils_1.requiresSpecialization)(boundType, /* ignorePseudoGeneric */ true)) {
|
13573
|
+
addError(localize_1.Localizer.Diagnostic.typeVarGeneric(), declaration.node.boundExpression);
|
13574
|
+
}
|
13575
|
+
if (declaration.node.typeParamCategory === parseNodes_1.TypeParameterCategory.TypeVar) {
|
13576
|
+
typeVar.details.boundType = (0, typeUtils_1.convertToInstance)(boundType);
|
13577
|
+
}
|
13578
|
+
}
|
13579
|
+
}
|
13580
|
+
typeVar.details.isTypeParamSyntax = true;
|
13581
|
+
// Associate the type variable with the owning scope.
|
13582
|
+
const scopeNode = ParseTreeUtils.getTypeVarScopeNode(declaration.node);
|
13583
|
+
if (scopeNode) {
|
13584
|
+
let scopeType;
|
13585
|
+
if (scopeNode.nodeType === 10 /* Class */) {
|
13586
|
+
scopeType = 0 /* Class */;
|
13587
|
+
// Set the variance to "auto" for class-scoped TypeVars.
|
13588
|
+
typeVar.details.declaredVariance = 0 /* Auto */;
|
13589
|
+
}
|
13590
|
+
else if (scopeNode.nodeType === 28 /* Function */) {
|
13591
|
+
scopeType = 1 /* Function */;
|
13592
|
+
}
|
13593
|
+
else {
|
13594
|
+
(0, debug_1.assert)(scopeNode.nodeType === 77 /* TypeAlias */);
|
13595
|
+
scopeType = 2 /* TypeAlias */;
|
13596
|
+
}
|
13597
|
+
typeVar = types_1.TypeVarType.cloneForScopeId(typeVar, getScopeIdForNode(scopeNode.nodeType === 77 /* TypeAlias */ ? scopeNode.name : scopeNode), scopeNode.name.value, scopeType);
|
13598
|
+
}
|
13599
|
+
return typeVar;
|
13600
|
+
}
|
13279
13601
|
case 1 /* Variable */: {
|
13280
13602
|
const typeAnnotationNode = declaration.typeAnnotationNode;
|
13281
13603
|
if (typeAnnotationNode) {
|
@@ -13313,7 +13635,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13313
13635
|
}
|
13314
13636
|
return undefined;
|
13315
13637
|
}
|
13316
|
-
case
|
13638
|
+
case 8 /* Alias */: {
|
13317
13639
|
return undefined;
|
13318
13640
|
}
|
13319
13641
|
}
|
@@ -13360,11 +13682,11 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13360
13682
|
// If the resolved declaration is still an alias, the alias
|
13361
13683
|
// is pointing at a module, and we need to synthesize a
|
13362
13684
|
// module type.
|
13363
|
-
if (resolvedDecl.type ===
|
13685
|
+
if (resolvedDecl.type === 8 /* Alias */) {
|
13364
13686
|
// Build a module type that corresponds to the declaration and
|
13365
13687
|
// its associated loader actions.
|
13366
13688
|
let moduleName = resolvedDecl.moduleName;
|
13367
|
-
if (decl.type ===
|
13689
|
+
if (decl.type === 8 /* Alias */) {
|
13368
13690
|
if (decl.symbolName) {
|
13369
13691
|
moduleName += '.' + decl.symbolName;
|
13370
13692
|
}
|
@@ -13615,7 +13937,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13615
13937
|
considerDecl = false;
|
13616
13938
|
}
|
13617
13939
|
if (usageNode !== undefined) {
|
13618
|
-
if (decl.type !==
|
13940
|
+
if (decl.type !== 8 /* Alias */) {
|
13619
13941
|
// Is the declaration in the same execution scope as the "usageNode" node?
|
13620
13942
|
const usageScope = ParseTreeUtils.getExecutionScopeNode(usageNode);
|
13621
13943
|
const declScope = ParseTreeUtils.getExecutionScopeNode(decl.node);
|
@@ -13728,9 +14050,9 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13728
14050
|
// reachable from the usage node (if specified). This can happen in
|
13729
14051
|
// cases where a property symbol is redefined to add a setter, deleter,
|
13730
14052
|
// etc.
|
13731
|
-
if (typedDecls.length > 1
|
14053
|
+
if (usageNode && typedDecls.length > 1) {
|
13732
14054
|
const filteredTypedDecls = typedDecls.filter((decl) => {
|
13733
|
-
if (decl.type !==
|
14055
|
+
if (decl.type !== 8 /* Alias */) {
|
13734
14056
|
// Is the declaration in the same execution scope as the "usageNode" node?
|
13735
14057
|
const usageScope = ParseTreeUtils.getExecutionScopeNode(usageNode);
|
13736
14058
|
const declScope = ParseTreeUtils.getExecutionScopeNode(decl.node);
|
@@ -13742,9 +14064,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13742
14064
|
}
|
13743
14065
|
return true;
|
13744
14066
|
});
|
13745
|
-
if (filteredTypedDecls.length
|
13746
|
-
|
14067
|
+
if (filteredTypedDecls.length === 0) {
|
14068
|
+
return types_1.UnboundType.create();
|
13747
14069
|
}
|
14070
|
+
typedDecls = filteredTypedDecls;
|
13748
14071
|
}
|
13749
14072
|
// Start with the last decl. If that's already being resolved,
|
13750
14073
|
// use the next-to-last decl, etc. This can happen when resolving
|
@@ -13770,7 +14093,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13770
14093
|
// in the type cache. This exception is required to handle the
|
13771
14094
|
// circular dependency between the "type" and "object" classes in
|
13772
14095
|
// builtins.pyi (since "object" is a "type" and "type" is an "object").
|
13773
|
-
if (popSymbolResolution(symbol) || decl.type ===
|
14096
|
+
if (popSymbolResolution(symbol) || decl.type === 6 /* Class */) {
|
13774
14097
|
return type;
|
13775
14098
|
}
|
13776
14099
|
}
|
@@ -14121,6 +14444,63 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
14121
14444
|
}));
|
14122
14445
|
return false;
|
14123
14446
|
}
|
14447
|
+
// This function is used to validate or infer the variance of type
|
14448
|
+
// parameters within a class.
|
14449
|
+
function assignClassToSelf(destType, srcType, recursionCount = 0) {
|
14450
|
+
(0, debug_1.assert)(types_1.ClassType.isSameGenericClass(destType, srcType));
|
14451
|
+
(0, debug_1.assert)(destType.details.typeParameters.length > 0);
|
14452
|
+
const diag = new diagnostic_1.DiagnosticAddendum();
|
14453
|
+
const typeVarContext = new typeVarContext_1.TypeVarContext();
|
14454
|
+
let isAssignable = true;
|
14455
|
+
destType.details.fields.forEach((symbol, name) => {
|
14456
|
+
if (isAssignable && symbol.isClassMember() && !symbol.isIgnoredForProtocolMatch()) {
|
14457
|
+
const memberInfo = (0, typeUtils_1.lookUpClassMember)(srcType, name);
|
14458
|
+
(0, debug_1.assert)(memberInfo !== undefined);
|
14459
|
+
let destMemberType = getDeclaredTypeOfSymbol(symbol);
|
14460
|
+
if (destMemberType) {
|
14461
|
+
const srcMemberType = getTypeOfMember(memberInfo);
|
14462
|
+
destMemberType = (0, typeUtils_1.partiallySpecializeType)(destMemberType, destType);
|
14463
|
+
// Properties require special processing.
|
14464
|
+
if ((0, types_1.isClassInstance)(destMemberType) &&
|
14465
|
+
types_1.ClassType.isPropertyClass(destMemberType) &&
|
14466
|
+
(0, types_1.isClassInstance)(srcMemberType) &&
|
14467
|
+
types_1.ClassType.isPropertyClass(srcMemberType)) {
|
14468
|
+
if (!(0, properties_1.assignProperty)(evaluatorInterface, types_1.ClassType.cloneAsInstantiable(destMemberType), types_1.ClassType.cloneAsInstantiable(srcMemberType), destType, srcType, diag, typeVarContext,
|
14469
|
+
/* selfTypeVarContext */ undefined, recursionCount)) {
|
14470
|
+
isAssignable = false;
|
14471
|
+
}
|
14472
|
+
}
|
14473
|
+
else {
|
14474
|
+
const primaryDecl = symbol.getDeclarations()[0];
|
14475
|
+
// Class and instance variables that are mutable need to
|
14476
|
+
// enforce invariance.
|
14477
|
+
const flags = (primaryDecl === null || primaryDecl === void 0 ? void 0 : primaryDecl.type) === 1 /* Variable */ && !primaryDecl.isFinal
|
14478
|
+
? 1 /* EnforceInvariance */
|
14479
|
+
: 0 /* Default */;
|
14480
|
+
if (!assignType(destMemberType, srcMemberType, diag, typeVarContext,
|
14481
|
+
/* srcTypeVarContext */ undefined, flags, recursionCount)) {
|
14482
|
+
isAssignable = false;
|
14483
|
+
}
|
14484
|
+
}
|
14485
|
+
}
|
14486
|
+
}
|
14487
|
+
});
|
14488
|
+
// Now handle generic base classes.
|
14489
|
+
destType.details.baseClasses.forEach((baseClass) => {
|
14490
|
+
if ((0, types_1.isInstantiableClass)(baseClass) &&
|
14491
|
+
!types_1.ClassType.isBuiltIn(baseClass, 'object') &&
|
14492
|
+
!types_1.ClassType.isBuiltIn(baseClass, 'Protocol') &&
|
14493
|
+
!types_1.ClassType.isBuiltIn(baseClass, 'Generic') &&
|
14494
|
+
baseClass.details.typeParameters.length > 0) {
|
14495
|
+
const specializedDestBaseClass = (0, typeUtils_1.specializeForBaseClass)(destType, baseClass);
|
14496
|
+
const specializedSrcBaseClass = (0, typeUtils_1.specializeForBaseClass)(srcType, baseClass);
|
14497
|
+
if (!assignClassToSelf(specializedDestBaseClass, specializedSrcBaseClass, recursionCount)) {
|
14498
|
+
isAssignable = false;
|
14499
|
+
}
|
14500
|
+
}
|
14501
|
+
});
|
14502
|
+
return isAssignable;
|
14503
|
+
}
|
14124
14504
|
function assignTupleTypeArgs(destType, srcType, diag, typeVarContext, flags, recursionCount) {
|
14125
14505
|
var _a, _b;
|
14126
14506
|
const destTypeArgs = [...((_a = destType.tupleTypeArguments) !== null && _a !== void 0 ? _a : [])];
|
@@ -14214,6 +14594,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
14214
14594
|
let curSrcType = srcType;
|
14215
14595
|
let curTypeVarContext = destTypeVarContext !== null && destTypeVarContext !== void 0 ? destTypeVarContext : new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(destType));
|
14216
14596
|
let effectiveFlags = flags;
|
14597
|
+
inferTypeParameterVarianceForClass(destType);
|
14217
14598
|
// If we're using a private typeVarContext, don't skip solving type vars.
|
14218
14599
|
if (!destTypeVarContext) {
|
14219
14600
|
effectiveFlags &= ~8 /* SkipSolveTypeVars */;
|
@@ -14294,6 +14675,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
14294
14675
|
function verifyTypeArgumentsAssignable(destType, srcType, diag, destTypeVarContext, srcTypeVarContext, flags, recursionCount) {
|
14295
14676
|
var _a, _b, _c;
|
14296
14677
|
(0, debug_1.assert)(types_1.ClassType.isSameGenericClass(destType, srcType));
|
14678
|
+
inferTypeParameterVarianceForClass(destType);
|
14297
14679
|
const destTypeParams = types_1.ClassType.getTypeParameters(destType);
|
14298
14680
|
let destTypeArgs;
|
14299
14681
|
let srcTypeArgs;
|
@@ -14320,21 +14702,24 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
14320
14702
|
const destTypeArg = destArgIndex >= 0 ? destTypeArgs[destArgIndex] : types_1.UnknownType.create();
|
14321
14703
|
const destTypeParam = destArgIndex < destTypeParams.length ? destTypeParams[destArgIndex] : undefined;
|
14322
14704
|
const assignmentDiag = new diagnostic_1.DiagnosticAddendum();
|
14323
|
-
if (!destTypeParam ||
|
14705
|
+
if (!destTypeParam || types_1.TypeVarType.getVariance(destTypeParam) === 2 /* Covariant */) {
|
14324
14706
|
if (!assignType(destTypeArg, srcTypeArg, assignmentDiag, destTypeVarContext, srcTypeVarContext, flags | 128 /* RetainLiteralsForTypeVar */, recursionCount)) {
|
14325
|
-
if (
|
14326
|
-
if (
|
14707
|
+
if (diag) {
|
14708
|
+
if (destTypeParam) {
|
14327
14709
|
const childDiag = diag.createAddendum();
|
14328
14710
|
childDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.typeVarIsCovariant().format({
|
14329
14711
|
name: types_1.TypeVarType.getReadableName(destTypeParam),
|
14330
14712
|
}));
|
14331
14713
|
childDiag.addAddendum(assignmentDiag);
|
14332
14714
|
}
|
14715
|
+
else {
|
14716
|
+
diag.addAddendum(assignmentDiag);
|
14717
|
+
}
|
14333
14718
|
}
|
14334
14719
|
return false;
|
14335
14720
|
}
|
14336
14721
|
}
|
14337
|
-
else if (
|
14722
|
+
else if (types_1.TypeVarType.getVariance(destTypeParam) === 3 /* Contravariant */) {
|
14338
14723
|
if (!assignType(srcTypeArg, destTypeArg, assignmentDiag, srcTypeVarContext, destTypeVarContext, (flags ^ 2 /* ReverseTypeVarMatching */) | 128 /* RetainLiteralsForTypeVar */, recursionCount)) {
|
14339
14724
|
if (diag) {
|
14340
14725
|
const childDiag = diag.createAddendum();
|
@@ -14992,10 +15377,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
14992
15377
|
if (isSubtypeSubsumed || subtypeIndex === innerSubtypeIndex || (0, types_1.isAnyOrUnknown)(innerSubtype)) {
|
14993
15378
|
return;
|
14994
15379
|
}
|
14995
|
-
if (
|
14996
|
-
/* diag */ undefined,
|
14997
|
-
/* destTypeVarContext */ undefined,
|
14998
|
-
/* srcTypeVarContext */ undefined, 0 /* Default */, recursionCount)) {
|
15380
|
+
if (isProperSubtype(innerSubtype, concreteSubtype, recursionCount)) {
|
14999
15381
|
isSubtypeSubsumed = true;
|
15000
15382
|
}
|
15001
15383
|
});
|
@@ -15015,6 +15397,20 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
15015
15397
|
}
|
15016
15398
|
return true;
|
15017
15399
|
}
|
15400
|
+
// Determines whether the srcType is a subtype of destType but the converse
|
15401
|
+
// is not true. It's important that we check both directions to avoid
|
15402
|
+
// matches for types like `tuple[Any]` and `tuple[int]` from being considered
|
15403
|
+
// proper subtypes of each other.
|
15404
|
+
function isProperSubtype(destType, srcType, recursionCount) {
|
15405
|
+
return (assignType(destType, srcType,
|
15406
|
+
/* diag */ undefined,
|
15407
|
+
/* destTypeVarContext */ undefined,
|
15408
|
+
/* srcTypeVarContext */ undefined, 0 /* Default */, recursionCount) &&
|
15409
|
+
!assignType(srcType, destType,
|
15410
|
+
/* diag */ undefined,
|
15411
|
+
/* destTypeVarContext */ undefined,
|
15412
|
+
/* srcTypeVarContext */ undefined, 0 /* Default */, recursionCount));
|
15413
|
+
}
|
15018
15414
|
function assignToUnionType(destType, srcType, diag, destTypeVarContext, srcTypeVarContext, flags, recursionCount) {
|
15019
15415
|
// If we need to enforce invariance, the source needs to be compatible
|
15020
15416
|
// with all subtypes in the dest, unless those subtypes are subclasses
|
@@ -16281,7 +16677,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
16281
16677
|
}
|
16282
16678
|
function getAbstractMethods(classType) {
|
16283
16679
|
const symbolTable = new Map();
|
16284
|
-
|
16680
|
+
types_1.ClassType.getReverseMro(classType).forEach((mroClass) => {
|
16285
16681
|
if ((0, types_1.isInstantiableClass)(mroClass)) {
|
16286
16682
|
// See if this class is introducing a new abstract method that has not been
|
16287
16683
|
// introduced previously or if it is overriding an abstract method with
|
@@ -16290,10 +16686,14 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
16290
16686
|
// We do a quick-and-dirty evaluation of methods based on
|
16291
16687
|
// decorators to determine which ones are abstract. This allows
|
16292
16688
|
// us to avoid evaluating the full function types.
|
16293
|
-
|
16689
|
+
// Handle named tuple fields as though they are class members here.
|
16690
|
+
// We model them as instance variables, but they're actually implemented
|
16691
|
+
// using class variable descriptors, and these overwrite a class variable
|
16692
|
+
// abstract method.
|
16693
|
+
if (symbol.isClassMember() || symbol.isNamedTupleMemberMember()) {
|
16294
16694
|
let isAbstract;
|
16295
16695
|
const decl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(symbol);
|
16296
|
-
if (decl && decl.type ===
|
16696
|
+
if (decl && decl.type === 5 /* Function */) {
|
16297
16697
|
const functionFlags = getFunctionFlagsFromDecorators(decl.node, true);
|
16298
16698
|
isAbstract = !!(functionFlags & 8 /* AbstractMethod */);
|
16299
16699
|
}
|
@@ -16304,14 +16704,16 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
16304
16704
|
// "overrides" it with an instance variable.
|
16305
16705
|
isAbstract = false;
|
16306
16706
|
}
|
16307
|
-
if (
|
16707
|
+
if (isAbstract) {
|
16308
16708
|
symbolTable.set(symbolName, {
|
16309
16709
|
symbol,
|
16310
16710
|
symbolName,
|
16311
|
-
isAbstract,
|
16312
16711
|
classType: mroClass,
|
16313
16712
|
});
|
16314
16713
|
}
|
16714
|
+
else {
|
16715
|
+
symbolTable.delete(symbolName);
|
16716
|
+
}
|
16315
16717
|
}
|
16316
16718
|
});
|
16317
16719
|
}
|
@@ -16319,9 +16721,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
16319
16721
|
// Create a final list of methods that are abstract.
|
16320
16722
|
const methodList = [];
|
16321
16723
|
symbolTable.forEach((method) => {
|
16322
|
-
|
16323
|
-
methodList.push(method);
|
16324
|
-
}
|
16724
|
+
methodList.push(method);
|
16325
16725
|
});
|
16326
16726
|
return methodList;
|
16327
16727
|
}
|
@@ -16569,6 +16969,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
16569
16969
|
assignType,
|
16570
16970
|
validateOverrideMethod,
|
16571
16971
|
assignTypeToExpression,
|
16972
|
+
assignClassToSelf,
|
16572
16973
|
getTypedDictClassType,
|
16573
16974
|
getTupleClassType,
|
16574
16975
|
getObjectType,
|
@@ -16576,6 +16977,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
16576
16977
|
getTypingType,
|
16577
16978
|
verifyTypeArgumentsAssignable,
|
16578
16979
|
inferReturnTypeIfNecessary,
|
16980
|
+
inferTypeParameterVarianceForClass,
|
16579
16981
|
addError,
|
16580
16982
|
addWarning,
|
16581
16983
|
addInformation,
|