@zzzen/pyright-internal 1.2.0-dev.20260809 → 1.2.0-dev.20260823
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyzer/analyzerNodeInfo.d.ts +119 -24
- package/dist/analyzer/analyzerNodeInfo.js +408 -89
- package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
- package/dist/analyzer/binder.d.ts +6 -3
- package/dist/analyzer/binder.js +157 -70
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +5 -2
- package/dist/analyzer/checker.js +92 -34
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +2 -1
- package/dist/analyzer/codeFlowEngine.js +12 -10
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowUtils.d.ts +2 -1
- package/dist/analyzer/codeFlowUtils.js +2 -3
- package/dist/analyzer/codeFlowUtils.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +47 -7
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructors.js +18 -8
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.d.ts +6 -4
- package/dist/analyzer/dataClasses.js +119 -75
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +2 -1
- package/dist/analyzer/declarationUtils.js +2 -2
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/decorators.d.ts +5 -4
- package/dist/analyzer/decorators.js +38 -21
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/enums.d.ts +5 -4
- package/dist/analyzer/enums.js +11 -10
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +1 -1
- package/dist/analyzer/importResolver.js +5 -3
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +3 -1
- package/dist/analyzer/importStatementUtils.js +14 -7
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.d.ts +2 -1
- package/dist/analyzer/namedTuples.js +3 -4
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.d.ts +3 -2
- package/dist/analyzer/operations.js +8 -8
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +2 -2
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +13 -11
- package/dist/analyzer/parseTreeUtils.js +62 -36
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.d.ts +7 -2
- package/dist/analyzer/parseTreeWalker.js +29 -175
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/patternMatching.d.ts +4 -3
- package/dist/analyzer/patternMatching.js +47 -43
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +12 -0
- package/dist/analyzer/program.js +235 -29
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.d.ts +4 -3
- package/dist/analyzer/properties.js +7 -8
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +14 -2
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/scope.d.ts +3 -0
- package/dist/analyzer/scope.js +10 -0
- package/dist/analyzer/scope.js.map +1 -1
- package/dist/analyzer/scopeUtils.d.ts +4 -3
- package/dist/analyzer/scopeUtils.js +8 -8
- package/dist/analyzer/scopeUtils.js.map +1 -1
- package/dist/analyzer/sentinel.d.ts +2 -1
- package/dist/analyzer/sentinel.js +2 -3
- package/dist/analyzer/sentinel.js.map +1 -1
- package/dist/analyzer/service.js +28 -10
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceEnumerator.d.ts +5 -0
- package/dist/analyzer/sourceEnumerator.js +57 -3
- package/dist/analyzer/sourceEnumerator.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +12 -6
- package/dist/analyzer/sourceFile.js +73 -50
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +1 -0
- package/dist/analyzer/sourceFileInfoUtils.js +8 -0
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/sourceMapper.d.ts +4 -1
- package/dist/analyzer/sourceMapper.js +14 -8
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/symbol.d.ts +4 -1
- package/dist/analyzer/symbol.js +8 -0
- package/dist/analyzer/symbol.js.map +1 -1
- package/dist/analyzer/testWalker.js +2 -1
- package/dist/analyzer/testWalker.js.map +1 -1
- package/dist/analyzer/tracePrinter.d.ts +2 -1
- package/dist/analyzer/tracePrinter.js +2 -2
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/tuples.d.ts +3 -2
- package/dist/analyzer/tuples.js +5 -5
- package/dist/analyzer/tuples.js.map +1 -1
- package/dist/analyzer/typeCacheUtils.d.ts +6 -2
- package/dist/analyzer/typeCacheUtils.js +16 -37
- package/dist/analyzer/typeCacheUtils.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.d.ts +5 -7
- package/dist/analyzer/typeDocStringUtils.js +229 -132
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.d.ts +2 -0
- package/dist/analyzer/typeEvaluator.js +1280 -302
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -0
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +3 -2
- package/dist/analyzer/typeGuards.js +37 -33
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeStubWriter.js +12 -9
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.js +3 -1
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.d.ts +4 -3
- package/dist/analyzer/typedDicts.js +15 -14
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +11 -1
- package/dist/analyzer/types.js +48 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/collectionUtils.js +15 -6
- package/dist/common/collectionUtils.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +1 -0
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/configOptions.d.ts +4 -1
- package/dist/common/configOptions.js +68 -12
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/envVarUtils.d.ts +1 -0
- package/dist/common/envVarUtils.js +41 -10
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/common/extensibility.d.ts +3 -1
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/extraPathGlob.d.ts +12 -0
- package/dist/common/extraPathGlob.js +315 -0
- package/dist/common/extraPathGlob.js.map +1 -0
- package/dist/common/host.d.ts +2 -0
- package/dist/common/host.js.map +1 -1
- package/dist/common/languageServerInterface.d.ts +2 -1
- package/dist/common/languageServerInterface.js.map +1 -1
- package/dist/common/pathConsts.d.ts +1 -0
- package/dist/common/pathConsts.js +11 -1
- package/dist/common/pathConsts.js.map +1 -1
- package/dist/common/processUtils.d.ts +4 -2
- package/dist/common/processUtils.js +3 -0
- package/dist/common/processUtils.js.map +1 -1
- package/dist/common/stringUtils.d.ts +6 -0
- package/dist/common/stringUtils.js +87 -5
- package/dist/common/stringUtils.js.map +1 -1
- package/dist/common/textEditTracker.d.ts +3 -1
- package/dist/common/textEditTracker.js +8 -6
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/common/textRangeCollection.d.ts +1 -0
- package/dist/common/textRangeCollection.js +32 -1
- package/dist/common/textRangeCollection.js.map +1 -1
- package/dist/common/uri/uriUtils.d.ts +3 -0
- package/dist/common/uri/uriUtils.js +65 -15
- package/dist/common/uri/uriUtils.js.map +1 -1
- package/dist/fileSystemMapping.d.ts +10 -0
- package/dist/fileSystemMapping.js +176 -0
- package/dist/fileSystemMapping.js.map +1 -0
- package/dist/languageService/analyzerServiceExecutor.js +2 -1
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/autoImporter.d.ts +1 -0
- package/dist/languageService/autoImporter.js +32 -5
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.d.ts +7 -0
- package/dist/languageService/callHierarchyProvider.js +97 -11
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +30 -8
- package/dist/languageService/completionProvider.js +298 -93
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.js +7 -6
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentHighlightProvider.js +2 -1
- package/dist/languageService/documentHighlightProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.d.ts +3 -1
- package/dist/languageService/documentSymbolCollector.js +78 -14
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +3 -2
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/fileWatcherDynamicFeature.js +28 -1
- package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +2 -1
- package/dist/languageService/hoverProvider.js +48 -16
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importSorter.d.ts +3 -1
- package/dist/languageService/importSorter.js +4 -2
- package/dist/languageService/importSorter.js.map +1 -1
- package/dist/languageService/importStatementCandidates.js +4 -2
- package/dist/languageService/importStatementCandidates.js.map +1 -1
- package/dist/languageService/quickActions.js +2 -1
- package/dist/languageService/quickActions.js.map +1 -1
- package/dist/languageService/referencesProvider.js +12 -5
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.d.ts +3 -0
- package/dist/languageService/signatureHelpProvider.js +56 -18
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.d.ts +2 -1
- package/dist/languageService/symbolIndexer.js +7 -7
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/languageService/tooltipUtils.d.ts +1 -1
- package/dist/languageService/tooltipUtils.js +103 -35
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.js +3 -2
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +12 -0
- package/dist/localization/localize.js +14 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +11 -0
- package/dist/localization/package.nls.de.json +11 -0
- package/dist/localization/package.nls.en-us.json +18 -0
- package/dist/localization/package.nls.es.json +11 -0
- package/dist/localization/package.nls.fr.json +11 -0
- package/dist/localization/package.nls.it.json +11 -0
- package/dist/localization/package.nls.ja.json +11 -0
- package/dist/localization/package.nls.ko.json +11 -0
- package/dist/localization/package.nls.pl.json +11 -0
- package/dist/localization/package.nls.pt-br.json +11 -0
- package/dist/localization/package.nls.qps-ploc.json +11 -0
- package/dist/localization/package.nls.ru.json +11 -0
- package/dist/localization/package.nls.tr.json +11 -0
- package/dist/localization/package.nls.zh-cn.json +12 -1
- package/dist/localization/package.nls.zh-tw.json +13 -2
- package/dist/parser/parseNodes.d.ts +85 -80
- package/dist/parser/parseNodes.js +182 -159
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parseTreeUtils.d.ts +3 -0
- package/dist/parser/parseTreeUtils.js +209 -0
- package/dist/parser/parseTreeUtils.js.map +1 -0
- package/dist/parser/parser.d.ts +16 -6
- package/dist/parser/parser.js +210 -144
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/stringAnnotationInfo.d.ts +16 -0
- package/dist/parser/stringAnnotationInfo.js +26 -0
- package/dist/parser/stringAnnotationInfo.js.map +1 -0
- package/dist/readonlyAugmentedFileSystem.d.ts +2 -9
- package/dist/readonlyAugmentedFileSystem.js +17 -144
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/tests/analyzerNodeInfo.test.d.ts +1 -0
- package/dist/tests/analyzerNodeInfo.test.js +113 -0
- package/dist/tests/analyzerNodeInfo.test.js.map +1 -0
- package/dist/tests/collectionUtils.test.js +46 -0
- package/dist/tests/collectionUtils.test.js.map +1 -1
- package/dist/tests/completions.test.js +34 -0
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/config.test.js +131 -6
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/extraPathGlob.test.d.ts +1 -0
- package/dist/tests/extraPathGlob.test.js +434 -0
- package/dist/tests/extraPathGlob.test.js.map +1 -0
- package/dist/tests/fileSystemMapping.test.d.ts +1 -0
- package/dist/tests/fileSystemMapping.test.js +458 -0
- package/dist/tests/fileSystemMapping.test.js.map +1 -0
- package/dist/tests/fourslash/completions.call.typedDict.fourslash.js +23 -0
- package/dist/tests/fourslash/completions.call.typedDict.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js +14 -0
- package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js +7 -0
- package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js +41 -0
- package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js.map +1 -0
- package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js +2 -0
- package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js +5 -0
- package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.stringLiteral.fourslash.js +4 -0
- package/dist/tests/fourslash/completions.stringLiteral.fourslash.js.map +1 -1
- package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js +48 -0
- package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js +8 -2
- package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js +5 -2
- package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js +2 -2
- package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.js +1 -1
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/hoverProvider.test.js +38 -0
- package/dist/tests/hoverProvider.test.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +6 -3
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/ipythonMode.test.js +38 -0
- package/dist/tests/ipythonMode.test.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +88 -0
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/parser.test.js +60 -3
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/positionUtils.test.js +23 -0
- package/dist/tests/positionUtils.test.js.map +1 -1
- package/dist/tests/pyrightFileSystem.test.js +41 -0
- package/dist/tests/pyrightFileSystem.test.js.map +1 -1
- package/dist/tests/service.test.js +77 -0
- package/dist/tests/service.test.js.map +1 -1
- package/dist/tests/sourceEnumeratorSymlink.test.d.ts +1 -0
- package/dist/tests/sourceEnumeratorSymlink.test.js +203 -0
- package/dist/tests/sourceEnumeratorSymlink.test.js.map +1 -0
- package/dist/tests/stringUtils.test.js +84 -0
- package/dist/tests/stringUtils.test.js.map +1 -1
- package/dist/tests/symlinkAliasInvalidation.test.d.ts +1 -0
- package/dist/tests/symlinkAliasInvalidation.test.js +471 -0
- package/dist/tests/symlinkAliasInvalidation.test.js.map +1 -0
- package/dist/tests/testUtils.d.ts +2 -0
- package/dist/tests/testUtils.js +7 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/textEditUtil.test.js +2 -2
- package/dist/tests/textEditUtil.test.js.map +1 -1
- package/dist/tests/textRangeCollection.test.d.ts +1 -0
- package/dist/tests/textRangeCollection.test.js +137 -0
- package/dist/tests/textRangeCollection.test.js.map +1 -0
- package/dist/tests/typeCacheUtils.test.d.ts +1 -0
- package/dist/tests/typeCacheUtils.test.js +69 -0
- package/dist/tests/typeCacheUtils.test.js.map +1 -0
- package/dist/tests/typeEvaluator1.test.js +24 -3
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +8 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +4 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +12 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/typeEvaluator6.test.js +33 -1
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +29 -0
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typeEvaluator8.test.js +318 -4
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/tests/typeServer/typeCache.test.d.ts +1 -0
- package/dist/tests/typeServer/typeCache.test.js +69 -0
- package/dist/tests/typeServer/typeCache.test.js.map +1 -0
- package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js +18 -0
- package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js.map +1 -1
- package/dist/tests/types.test.d.ts +1 -0
- package/dist/{analyzer/parseTreeCleaner.js → tests/types.test.js} +23 -25
- package/dist/tests/types.test.js.map +1 -0
- package/dist/tests/uri.test.js +51 -0
- package/dist/tests/uri.test.js.map +1 -1
- package/dist/typeServer/notebookDocumentHandler.d.ts +9 -2
- package/dist/typeServer/notebookDocumentHandler.js +16 -6
- package/dist/typeServer/notebookDocumentHandler.js.map +1 -1
- package/dist/typeServer/programWrapper.d.ts +1 -0
- package/dist/typeServer/programWrapper.js +28 -15
- package/dist/typeServer/programWrapper.js.map +1 -1
- package/dist/typeServer/protocol/tspSupplemental.d.ts +1 -1
- package/dist/typeServer/protocol/tspSupplemental.js +2 -2
- package/dist/typeServer/server.d.ts +13 -2
- package/dist/typeServer/server.js +36 -23
- package/dist/typeServer/server.js.map +1 -1
- package/dist/typeServer/typeCache.d.ts +8 -4
- package/dist/typeServer/typeCache.js +33 -5
- package/dist/typeServer/typeCache.js.map +1 -1
- package/dist/typeServer/typeEvalUtils.d.ts +2 -1
- package/dist/typeServer/typeEvalUtils.js +7 -3
- package/dist/typeServer/typeEvalUtils.js.map +1 -1
- package/dist/typeServer/typeServerFileSystem.d.ts +10 -9
- package/dist/typeServer/typeServerFileSystem.js +16 -12
- package/dist/typeServer/typeServerFileSystem.js.map +1 -1
- package/package.json +7 -5
- package/dist/analyzer/parseTreeCleaner.d.ts +0 -8
- package/dist/analyzer/parseTreeCleaner.js.map +0 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ArgumentNode, AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, BreakNode, CallNode, CaseNode, ClassNode, ComprehensionForNode, ComprehensionIfNode, ComprehensionNode, ConstantNode, ContinueNode, DecoratorNode, DelNode, DictionaryExpandEntryNode, DictionaryKeyEntryNode, DictionaryNode, EllipsisNode, ErrorNode, ExceptNode, ForNode, FormatStringNode, FunctionAnnotationNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromAsNode, ImportFromNode, ImportNode, IndexNode, LambdaNode, ListNode, MatchNode, MemberAccessNode, ModuleNameNode, ModuleNode, NameNode, NonlocalNode, NumberNode, ParameterNode, ParseNode, ParseNodeArray, PassNode, PatternAsNode, PatternCaptureNode, PatternClassArgumentNode, PatternClassNode, PatternLiteralNode, PatternMappingExpandEntryNode, PatternMappingKeyEntryNode, PatternMappingNode, PatternSequenceNode, PatternValueNode, RaiseNode, ReturnNode, SetNode, SliceNode, StatementListNode, StringListNode, StringNode, SuiteNode, TernaryNode, TryNode, TupleNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, TypeParameterNode, UnaryOperationNode, UnpackNode, WhileNode, WithItemNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
|
|
2
|
-
|
|
2
|
+
import { getChildNodes } from '../parser/parseTreeUtils';
|
|
3
|
+
import * as AnalyzerNodeInfo from './analyzerNodeInfo';
|
|
4
|
+
export { getChildNodes };
|
|
3
5
|
export declare class ParseTreeVisitor<T> {
|
|
4
6
|
private readonly _default;
|
|
5
7
|
constructor(_default: T);
|
|
@@ -84,8 +86,11 @@ export declare class ParseTreeVisitor<T> {
|
|
|
84
86
|
visitYieldFrom(node: YieldFromNode): T;
|
|
85
87
|
}
|
|
86
88
|
export declare class ParseTreeWalker extends ParseTreeVisitor<boolean> {
|
|
87
|
-
|
|
89
|
+
private readonly _annotationNodeInfo?;
|
|
90
|
+
private readonly _getStringAnnotation;
|
|
91
|
+
constructor(_annotationNodeInfo?: AnalyzerNodeInfo.AnalyzerNodeInfoReader | undefined);
|
|
88
92
|
walk(node: ParseNode): void;
|
|
89
93
|
walkMultiple(nodes: ParseNodeArray): void;
|
|
90
94
|
visitNode(node: ParseNode): ParseNodeArray;
|
|
95
|
+
protected getStringAnnotation(node: StringListNode): import("../parser/parseNodes").ExpressionNode | undefined;
|
|
91
96
|
}
|
|
@@ -41,180 +41,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
};
|
|
42
42
|
})();
|
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.ParseTreeWalker = exports.ParseTreeVisitor = void 0;
|
|
45
|
-
exports.getChildNodes = getChildNodes;
|
|
44
|
+
exports.ParseTreeWalker = exports.ParseTreeVisitor = exports.getChildNodes = void 0;
|
|
46
45
|
const debug = __importStar(require("../common/debug"));
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return [node.d.child, ...(node.d.decorators ?? [])];
|
|
52
|
-
case 1 /* ParseNodeType.Argument */:
|
|
53
|
-
return [node.d.name, node.d.valueExpr];
|
|
54
|
-
case 2 /* ParseNodeType.Assert */:
|
|
55
|
-
return [node.d.testExpr, node.d.exceptionExpr];
|
|
56
|
-
case 4 /* ParseNodeType.AssignmentExpression */:
|
|
57
|
-
return [node.d.name, node.d.rightExpr];
|
|
58
|
-
case 3 /* ParseNodeType.Assignment */:
|
|
59
|
-
return [node.d.leftExpr, node.d.rightExpr, node.d.annotationComment];
|
|
60
|
-
case 5 /* ParseNodeType.AugmentedAssignment */:
|
|
61
|
-
return [node.d.leftExpr, node.d.rightExpr];
|
|
62
|
-
case 6 /* ParseNodeType.Await */:
|
|
63
|
-
return [node.d.expr];
|
|
64
|
-
case 7 /* ParseNodeType.BinaryOperation */:
|
|
65
|
-
return [node.d.leftExpr, node.d.rightExpr];
|
|
66
|
-
case 8 /* ParseNodeType.Break */:
|
|
67
|
-
return [];
|
|
68
|
-
case 9 /* ParseNodeType.Call */:
|
|
69
|
-
return [node.d.leftExpr, ...node.d.args];
|
|
70
|
-
case 64 /* ParseNodeType.Case */:
|
|
71
|
-
return [node.d.pattern, node.d.guardExpr, node.d.suite];
|
|
72
|
-
case 10 /* ParseNodeType.Class */:
|
|
73
|
-
return [...node.d.decorators, node.d.name, node.d.typeParams, ...node.d.arguments, node.d.suite];
|
|
74
|
-
case 11 /* ParseNodeType.Comprehension */:
|
|
75
|
-
return [node.d.expr, ...node.d.forIfNodes];
|
|
76
|
-
case 12 /* ParseNodeType.ComprehensionFor */:
|
|
77
|
-
return [node.d.targetExpr, node.d.iterableExpr];
|
|
78
|
-
case 13 /* ParseNodeType.ComprehensionIf */:
|
|
79
|
-
return [node.d.testExpr];
|
|
80
|
-
case 14 /* ParseNodeType.Constant */:
|
|
81
|
-
return [];
|
|
82
|
-
case 15 /* ParseNodeType.Continue */:
|
|
83
|
-
return [];
|
|
84
|
-
case 16 /* ParseNodeType.Decorator */:
|
|
85
|
-
return [node.d.expr];
|
|
86
|
-
case 17 /* ParseNodeType.Del */:
|
|
87
|
-
return node.d.targets;
|
|
88
|
-
case 18 /* ParseNodeType.Dictionary */:
|
|
89
|
-
return node.d.items;
|
|
90
|
-
case 19 /* ParseNodeType.DictionaryExpandEntry */:
|
|
91
|
-
return [node.d.expr];
|
|
92
|
-
case 20 /* ParseNodeType.DictionaryKeyEntry */:
|
|
93
|
-
return [node.d.keyExpr, node.d.valueExpr];
|
|
94
|
-
case 21 /* ParseNodeType.Ellipsis */:
|
|
95
|
-
return [];
|
|
96
|
-
case 22 /* ParseNodeType.If */:
|
|
97
|
-
return [node.d.testExpr, node.d.ifSuite, node.d.elseSuite];
|
|
98
|
-
case 23 /* ParseNodeType.Import */:
|
|
99
|
-
return node.d.list;
|
|
100
|
-
case 24 /* ParseNodeType.ImportAs */:
|
|
101
|
-
return [node.d.module, node.d.alias];
|
|
102
|
-
case 25 /* ParseNodeType.ImportFrom */:
|
|
103
|
-
return [node.d.module, ...node.d.imports];
|
|
104
|
-
case 26 /* ParseNodeType.ImportFromAs */:
|
|
105
|
-
return [node.d.name, node.d.alias];
|
|
106
|
-
case 27 /* ParseNodeType.Index */:
|
|
107
|
-
return [node.d.leftExpr, ...node.d.items];
|
|
108
|
-
case 28 /* ParseNodeType.Except */:
|
|
109
|
-
return [node.d.typeExpr, node.d.name, node.d.exceptSuite];
|
|
110
|
-
case 29 /* ParseNodeType.For */:
|
|
111
|
-
return [node.d.targetExpr, node.d.iterableExpr, node.d.forSuite, node.d.elseSuite];
|
|
112
|
-
case 30 /* ParseNodeType.FormatString */:
|
|
113
|
-
return [...node.d.fieldExprs, ...(node.d.formatExprs ?? [])];
|
|
114
|
-
case 31 /* ParseNodeType.Function */:
|
|
115
|
-
return [
|
|
116
|
-
...node.d.decorators,
|
|
117
|
-
node.d.name,
|
|
118
|
-
node.d.typeParams,
|
|
119
|
-
...node.d.params,
|
|
120
|
-
node.d.returnAnnotation,
|
|
121
|
-
node.d.funcAnnotationComment,
|
|
122
|
-
node.d.suite,
|
|
123
|
-
];
|
|
124
|
-
case 62 /* ParseNodeType.FunctionAnnotation */:
|
|
125
|
-
return [...node.d.paramAnnotations, node.d.returnAnnotation];
|
|
126
|
-
case 32 /* ParseNodeType.Global */:
|
|
127
|
-
return node.d.targets;
|
|
128
|
-
case 33 /* ParseNodeType.Lambda */:
|
|
129
|
-
return [...node.d.params, node.d.expr];
|
|
130
|
-
case 34 /* ParseNodeType.List */:
|
|
131
|
-
return node.d.items;
|
|
132
|
-
case 63 /* ParseNodeType.Match */:
|
|
133
|
-
return [node.d.expr, ...node.d.cases];
|
|
134
|
-
case 35 /* ParseNodeType.MemberAccess */:
|
|
135
|
-
return [node.d.leftExpr, node.d.member];
|
|
136
|
-
case 37 /* ParseNodeType.ModuleName */:
|
|
137
|
-
return node.d.nameParts;
|
|
138
|
-
case 36 /* ParseNodeType.Module */:
|
|
139
|
-
return [...node.d.statements];
|
|
140
|
-
case 38 /* ParseNodeType.Name */:
|
|
141
|
-
return [];
|
|
142
|
-
case 39 /* ParseNodeType.Nonlocal */:
|
|
143
|
-
return node.d.targets;
|
|
144
|
-
case 40 /* ParseNodeType.Number */:
|
|
145
|
-
return [];
|
|
146
|
-
case 41 /* ParseNodeType.Parameter */:
|
|
147
|
-
return [node.d.name, node.d.annotation, node.d.annotationComment, node.d.defaultValue];
|
|
148
|
-
case 42 /* ParseNodeType.Pass */:
|
|
149
|
-
return [];
|
|
150
|
-
case 66 /* ParseNodeType.PatternAs */:
|
|
151
|
-
return [...node.d.orPatterns, node.d.target];
|
|
152
|
-
case 68 /* ParseNodeType.PatternClass */:
|
|
153
|
-
return [node.d.className, ...node.d.args];
|
|
154
|
-
case 74 /* ParseNodeType.PatternClassArgument */:
|
|
155
|
-
return [node.d.name, node.d.pattern];
|
|
156
|
-
case 69 /* ParseNodeType.PatternCapture */:
|
|
157
|
-
return [node.d.target];
|
|
158
|
-
case 67 /* ParseNodeType.PatternLiteral */:
|
|
159
|
-
return [node.d.expr];
|
|
160
|
-
case 72 /* ParseNodeType.PatternMappingExpandEntry */:
|
|
161
|
-
return [node.d.target];
|
|
162
|
-
case 71 /* ParseNodeType.PatternMappingKeyEntry */:
|
|
163
|
-
return [node.d.keyPattern, node.d.valuePattern];
|
|
164
|
-
case 70 /* ParseNodeType.PatternMapping */:
|
|
165
|
-
return [...node.d.entries];
|
|
166
|
-
case 65 /* ParseNodeType.PatternSequence */:
|
|
167
|
-
return [...node.d.entries];
|
|
168
|
-
case 73 /* ParseNodeType.PatternValue */:
|
|
169
|
-
return [node.d.expr];
|
|
170
|
-
case 43 /* ParseNodeType.Raise */:
|
|
171
|
-
return [node.d.expr, node.d.fromExpr];
|
|
172
|
-
case 44 /* ParseNodeType.Return */:
|
|
173
|
-
return [node.d.expr];
|
|
174
|
-
case 45 /* ParseNodeType.Set */:
|
|
175
|
-
return node.d.items;
|
|
176
|
-
case 46 /* ParseNodeType.Slice */:
|
|
177
|
-
return [node.d.startValue, node.d.endValue, node.d.stepValue];
|
|
178
|
-
case 47 /* ParseNodeType.StatementList */:
|
|
179
|
-
return node.d.statements;
|
|
180
|
-
case 48 /* ParseNodeType.StringList */:
|
|
181
|
-
return [node.d.annotation, ...node.d.strings];
|
|
182
|
-
case 49 /* ParseNodeType.String */:
|
|
183
|
-
return [];
|
|
184
|
-
case 50 /* ParseNodeType.Suite */:
|
|
185
|
-
return [...node.d.statements];
|
|
186
|
-
case 51 /* ParseNodeType.Ternary */:
|
|
187
|
-
return [node.d.ifExpr, node.d.testExpr, node.d.elseExpr];
|
|
188
|
-
case 52 /* ParseNodeType.Tuple */:
|
|
189
|
-
return node.d.items;
|
|
190
|
-
case 53 /* ParseNodeType.Try */:
|
|
191
|
-
return [node.d.trySuite, ...node.d.exceptClauses, node.d.elseSuite, node.d.finallySuite];
|
|
192
|
-
case 77 /* ParseNodeType.TypeAlias */:
|
|
193
|
-
return [node.d.name, node.d.typeParams, node.d.expr];
|
|
194
|
-
case 54 /* ParseNodeType.TypeAnnotation */:
|
|
195
|
-
return [node.d.valueExpr, node.d.annotation];
|
|
196
|
-
case 75 /* ParseNodeType.TypeParameter */:
|
|
197
|
-
return [node.d.name, node.d.boundExpr, node.d.defaultExpr];
|
|
198
|
-
case 76 /* ParseNodeType.TypeParameterList */:
|
|
199
|
-
return [...node.d.params];
|
|
200
|
-
case 55 /* ParseNodeType.UnaryOperation */:
|
|
201
|
-
return [node.d.expr];
|
|
202
|
-
case 56 /* ParseNodeType.Unpack */:
|
|
203
|
-
return [node.d.expr];
|
|
204
|
-
case 57 /* ParseNodeType.While */:
|
|
205
|
-
return [node.d.testExpr, node.d.whileSuite, node.d.elseSuite];
|
|
206
|
-
case 58 /* ParseNodeType.With */:
|
|
207
|
-
return [...node.d.withItems, node.d.suite];
|
|
208
|
-
case 59 /* ParseNodeType.WithItem */:
|
|
209
|
-
return [node.d.expr, node.d.target];
|
|
210
|
-
case 60 /* ParseNodeType.Yield */:
|
|
211
|
-
return [node.d.expr];
|
|
212
|
-
case 61 /* ParseNodeType.YieldFrom */:
|
|
213
|
-
return [node.d.expr];
|
|
214
|
-
default:
|
|
215
|
-
debug.assertNever(node, `Unknown node type ${node}`);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
46
|
+
const parseNodes_1 = require("../parser/parseNodes");
|
|
47
|
+
const parseTreeUtils_1 = require("../parser/parseTreeUtils");
|
|
48
|
+
Object.defineProperty(exports, "getChildNodes", { enumerable: true, get: function () { return parseTreeUtils_1.getChildNodes; } });
|
|
49
|
+
const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
|
|
218
50
|
// To use this class, create a subclass and override the
|
|
219
51
|
// visitXXX methods that you want to handle.
|
|
220
52
|
class ParseTreeVisitor {
|
|
@@ -624,8 +456,10 @@ exports.ParseTreeVisitor = ParseTreeVisitor;
|
|
|
624
456
|
// To use this class, create a subclass and override the
|
|
625
457
|
// visitXXX methods that you want to handle.
|
|
626
458
|
class ParseTreeWalker extends ParseTreeVisitor {
|
|
627
|
-
constructor() {
|
|
459
|
+
constructor(_annotationNodeInfo) {
|
|
628
460
|
super(/* default */ true);
|
|
461
|
+
this._annotationNodeInfo = _annotationNodeInfo;
|
|
462
|
+
this._getStringAnnotation = (node) => this.getStringAnnotation(node);
|
|
629
463
|
}
|
|
630
464
|
walk(node) {
|
|
631
465
|
const childrenToWalk = this.visitNode(node);
|
|
@@ -644,7 +478,27 @@ class ParseTreeWalker extends ParseTreeVisitor {
|
|
|
644
478
|
// If the method returns false, we assume that the handler has already handled the
|
|
645
479
|
// child nodes, so an empty list is returned.
|
|
646
480
|
visitNode(node) {
|
|
647
|
-
return this.visit(node) ? getChildNodes(node) : [];
|
|
481
|
+
return this.visit(node) ? (0, parseTreeUtils_1.getChildNodes)(node, this._getStringAnnotation) : [];
|
|
482
|
+
}
|
|
483
|
+
// Resolves the effective string annotation used to expand child nodes during traversal.
|
|
484
|
+
//
|
|
485
|
+
// When an `AnalyzerNodeInfoReader` was supplied (Program-aware walkers that must observe
|
|
486
|
+
// evaluator-discovered annotations, such as the checker and the semantic-token/rename/
|
|
487
|
+
// references walkers), the combined accessor is used so both tier-1 parser annotations and
|
|
488
|
+
// tier-2 evaluator-discovered annotations (e.g. `cast("Data", v)`) are visited. When no reader
|
|
489
|
+
// was supplied, the walker is deliberately syntax-only and sees tier-1 parser annotations
|
|
490
|
+
// exclusively. The binder intentionally stays syntax-only: tier-2 annotations do not exist yet
|
|
491
|
+
// at bind time, so tier-1 descent is both sufficient and correct there.
|
|
492
|
+
//
|
|
493
|
+
// Footgun: this default is safe (tier-1 only) but silent. A future Program-aware walker that
|
|
494
|
+
// forgets to forward a reader would quietly miss tier-2 annotations rather than fail loudly.
|
|
495
|
+
// Any walker that must observe evaluator-discovered annotations MUST pass the reader through
|
|
496
|
+
// its constructor. See parseTreeBindingKey.test.ts for the cross-owner coverage that locks
|
|
497
|
+
// in the reader-forwarding contract.
|
|
498
|
+
getStringAnnotation(node) {
|
|
499
|
+
return this._annotationNodeInfo
|
|
500
|
+
? AnalyzerNodeInfo.getStringAnnotation(node, this._annotationNodeInfo)
|
|
501
|
+
: (0, parseNodes_1.getParserStringAnnotation)(node);
|
|
648
502
|
}
|
|
649
503
|
}
|
|
650
504
|
exports.ParseTreeWalker = ParseTreeWalker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseTreeWalker.js","sourceRoot":"","sources":["../../../../../src/analyzer/parseTreeWalker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parseTreeWalker.js","sourceRoot":"","sources":["../../../../../src/analyzer/parseTreeWalker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ExpressionNode, PatternAtomNode, PatternClassNode } from '../parser/parseNodes';
|
|
2
|
+
import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo';
|
|
2
3
|
import { CodeFlowReferenceExpressionNode } from './codeFlowTypes';
|
|
3
4
|
import { TypeEvaluator, TypeResult } from './typeEvaluatorTypes';
|
|
4
5
|
import { Type } from './types';
|
|
5
6
|
type PatternSubtypeNarrowingCallback = (type: Type) => TypeResult | undefined;
|
|
6
|
-
export declare function narrowTypeBasedOnPattern(evaluator: TypeEvaluator, type: Type, pattern: PatternAtomNode, isPositiveTest: boolean): Type;
|
|
7
|
-
export declare function checkForUnusedPattern(evaluator: TypeEvaluator, pattern: PatternAtomNode, subjectType: Type): void;
|
|
8
|
-
export declare function assignTypeToPatternTargets(evaluator: TypeEvaluator, type: Type, isTypeIncomplete: boolean, pattern: PatternAtomNode): Type;
|
|
7
|
+
export declare function narrowTypeBasedOnPattern(evaluator: TypeEvaluator, type: Type, pattern: PatternAtomNode, isPositiveTest: boolean, nodeInfo: AnalyzerNodeInfoAccessor): Type;
|
|
8
|
+
export declare function checkForUnusedPattern(evaluator: TypeEvaluator, pattern: PatternAtomNode, subjectType: Type, nodeInfo: AnalyzerNodeInfoAccessor): void;
|
|
9
|
+
export declare function assignTypeToPatternTargets(evaluator: TypeEvaluator, type: Type, isTypeIncomplete: boolean, pattern: PatternAtomNode, nodeInfo: AnalyzerNodeInfoAccessor): Type;
|
|
9
10
|
export declare function validateClassPattern(evaluator: TypeEvaluator, pattern: PatternClassNode): void;
|
|
10
11
|
export declare function getPatternSubtypeNarrowingCallback(evaluator: TypeEvaluator, reference: CodeFlowReferenceExpressionNode, subjectExpression: ExpressionNode): PatternSubtypeNarrowingCallback | undefined;
|
|
11
12
|
export {};
|
|
@@ -49,22 +49,22 @@ const classPatternSpecialCases = [
|
|
|
49
49
|
// converted to Any. This is tuned empirically to provide a reasonable
|
|
50
50
|
// performance cutoff.
|
|
51
51
|
const maxSequencePatternTupleExpansionSubtypes = 128;
|
|
52
|
-
function narrowTypeBasedOnPattern(evaluator, type, pattern, isPositiveTest) {
|
|
52
|
+
function narrowTypeBasedOnPattern(evaluator, type, pattern, isPositiveTest, nodeInfo) {
|
|
53
53
|
switch (pattern.nodeType) {
|
|
54
54
|
case 65 /* ParseNodeType.PatternSequence */: {
|
|
55
|
-
return narrowTypeBasedOnSequencePattern(evaluator, type, pattern, isPositiveTest);
|
|
55
|
+
return narrowTypeBasedOnSequencePattern(evaluator, type, pattern, isPositiveTest, nodeInfo);
|
|
56
56
|
}
|
|
57
57
|
case 67 /* ParseNodeType.PatternLiteral */: {
|
|
58
58
|
return narrowTypeBasedOnLiteralPattern(evaluator, type, pattern, isPositiveTest);
|
|
59
59
|
}
|
|
60
60
|
case 68 /* ParseNodeType.PatternClass */: {
|
|
61
|
-
return narrowTypeBasedOnClassPattern(evaluator, type, pattern, isPositiveTest);
|
|
61
|
+
return narrowTypeBasedOnClassPattern(evaluator, type, pattern, isPositiveTest, nodeInfo);
|
|
62
62
|
}
|
|
63
63
|
case 66 /* ParseNodeType.PatternAs */: {
|
|
64
|
-
return narrowTypeBasedOnAsPattern(evaluator, type, pattern, isPositiveTest);
|
|
64
|
+
return narrowTypeBasedOnAsPattern(evaluator, type, pattern, isPositiveTest, nodeInfo);
|
|
65
65
|
}
|
|
66
66
|
case 70 /* ParseNodeType.PatternMapping */: {
|
|
67
|
-
return narrowTypeBasedOnMappingPattern(evaluator, type, pattern, isPositiveTest);
|
|
67
|
+
return narrowTypeBasedOnMappingPattern(evaluator, type, pattern, isPositiveTest, nodeInfo);
|
|
68
68
|
}
|
|
69
69
|
case 73 /* ParseNodeType.PatternValue */: {
|
|
70
70
|
return narrowTypeBasedOnValuePattern(evaluator, type, pattern, isPositiveTest);
|
|
@@ -80,7 +80,7 @@ function narrowTypeBasedOnPattern(evaluator, type, pattern, isPositiveTest) {
|
|
|
80
80
|
}
|
|
81
81
|
// Determines whether this pattern (or part of the pattern) in
|
|
82
82
|
// this case statement will never be matched.
|
|
83
|
-
function checkForUnusedPattern(evaluator, pattern, subjectType) {
|
|
83
|
+
function checkForUnusedPattern(evaluator, pattern, subjectType, nodeInfo) {
|
|
84
84
|
if ((0, types_1.isNever)(subjectType)) {
|
|
85
85
|
reportUnnecessaryPattern(evaluator, pattern, subjectType);
|
|
86
86
|
}
|
|
@@ -88,24 +88,26 @@ function checkForUnusedPattern(evaluator, pattern, subjectType) {
|
|
|
88
88
|
// Check each of the or patterns separately.
|
|
89
89
|
pattern.d.orPatterns.forEach((orPattern) => {
|
|
90
90
|
const subjectTypeMatch = narrowTypeBasedOnPattern(evaluator, subjectType, orPattern,
|
|
91
|
-
/* isPositiveTest */ true);
|
|
91
|
+
/* isPositiveTest */ true, nodeInfo);
|
|
92
92
|
if ((0, types_1.isNever)(subjectTypeMatch)) {
|
|
93
93
|
reportUnnecessaryPattern(evaluator, orPattern, subjectType);
|
|
94
94
|
}
|
|
95
|
-
subjectType = narrowTypeBasedOnPattern(evaluator, subjectType, orPattern,
|
|
95
|
+
subjectType = narrowTypeBasedOnPattern(evaluator, subjectType, orPattern,
|
|
96
|
+
/* isPositiveTest */ false, nodeInfo);
|
|
96
97
|
});
|
|
97
98
|
}
|
|
98
99
|
else {
|
|
99
|
-
const subjectTypeMatch = narrowTypeBasedOnPattern(evaluator, subjectType, pattern,
|
|
100
|
+
const subjectTypeMatch = narrowTypeBasedOnPattern(evaluator, subjectType, pattern,
|
|
101
|
+
/* isPositiveTest */ true, nodeInfo);
|
|
100
102
|
if ((0, types_1.isNever)(subjectTypeMatch)) {
|
|
101
103
|
reportUnnecessaryPattern(evaluator, pattern, subjectType);
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
106
|
}
|
|
105
|
-
function narrowTypeBasedOnSequencePattern(evaluator, type, pattern, isPositiveTest) {
|
|
107
|
+
function narrowTypeBasedOnSequencePattern(evaluator, type, pattern, isPositiveTest, nodeInfo) {
|
|
106
108
|
let usingTupleExpansion = false;
|
|
107
109
|
type = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(type);
|
|
108
|
-
let sequenceInfo = getSequencePatternInfo(evaluator, pattern, type);
|
|
110
|
+
let sequenceInfo = getSequencePatternInfo(evaluator, pattern, type, nodeInfo);
|
|
109
111
|
// Further narrow based on pattern entry types.
|
|
110
112
|
sequenceInfo = sequenceInfo.filter((entry) => {
|
|
111
113
|
if (entry.isDefiniteNoMatch) {
|
|
@@ -153,7 +155,7 @@ function narrowTypeBasedOnSequencePattern(evaluator, type, pattern, isPositiveTe
|
|
|
153
155
|
const entryType = getTypeOfPatternSequenceEntry(evaluator, pattern, entry, index, pattern.d.entries.length, pattern.d.starEntryIndex,
|
|
154
156
|
/* unpackStarEntry */ true);
|
|
155
157
|
unnarrowedEntryTypes.push(entryType);
|
|
156
|
-
const narrowedEntryType = narrowTypeBasedOnPattern(evaluator, entryType, sequenceEntry, isPositiveTest);
|
|
158
|
+
const narrowedEntryType = narrowTypeBasedOnPattern(evaluator, entryType, sequenceEntry, isPositiveTest, nodeInfo);
|
|
157
159
|
if (isPositiveTest) {
|
|
158
160
|
if (index === pattern.d.starEntryIndex) {
|
|
159
161
|
if ((0, types_1.isClassInstance)(narrowedEntryType) &&
|
|
@@ -262,23 +264,25 @@ function narrowTypeBasedOnSequencePattern(evaluator, type, pattern, isPositiveTe
|
|
|
262
264
|
});
|
|
263
265
|
return (0, types_1.combineTypes)(sequenceInfo.map((entry) => entry.subtype), { maxSubtypeCount: usingTupleExpansion ? maxSequencePatternTupleExpansionSubtypes : undefined });
|
|
264
266
|
}
|
|
265
|
-
function narrowTypeBasedOnAsPattern(evaluator, type, pattern, isPositiveTest) {
|
|
267
|
+
function narrowTypeBasedOnAsPattern(evaluator, type, pattern, isPositiveTest, nodeInfo) {
|
|
266
268
|
let remainingType = type;
|
|
267
269
|
if (!isPositiveTest) {
|
|
268
270
|
pattern.d.orPatterns.forEach((subpattern) => {
|
|
269
|
-
remainingType = narrowTypeBasedOnPattern(evaluator, remainingType, subpattern,
|
|
271
|
+
remainingType = narrowTypeBasedOnPattern(evaluator, remainingType, subpattern,
|
|
272
|
+
/* isPositiveTest */ false, nodeInfo);
|
|
270
273
|
});
|
|
271
274
|
return remainingType;
|
|
272
275
|
}
|
|
273
276
|
const narrowedTypes = pattern.d.orPatterns.map((subpattern) => {
|
|
274
277
|
const narrowedSubtype = narrowTypeBasedOnPattern(evaluator, remainingType, subpattern,
|
|
275
|
-
/* isPositiveTest */ true);
|
|
276
|
-
remainingType = narrowTypeBasedOnPattern(evaluator, remainingType, subpattern,
|
|
278
|
+
/* isPositiveTest */ true, nodeInfo);
|
|
279
|
+
remainingType = narrowTypeBasedOnPattern(evaluator, remainingType, subpattern,
|
|
280
|
+
/* isPositiveTest */ false, nodeInfo);
|
|
277
281
|
return narrowedSubtype;
|
|
278
282
|
});
|
|
279
283
|
return (0, types_1.combineTypes)(narrowedTypes);
|
|
280
284
|
}
|
|
281
|
-
function narrowTypeBasedOnMappingPattern(evaluator, type, pattern, isPositiveTest) {
|
|
285
|
+
function narrowTypeBasedOnMappingPattern(evaluator, type, pattern, isPositiveTest, nodeInfo) {
|
|
282
286
|
type = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(type);
|
|
283
287
|
if (!isPositiveTest) {
|
|
284
288
|
// Handle the case where the pattern consists only of a "**x" entry.
|
|
@@ -336,7 +340,7 @@ function narrowTypeBasedOnMappingPattern(evaluator, type, pattern, isPositiveTes
|
|
|
336
340
|
pattern.d.entries.forEach((mappingEntry) => {
|
|
337
341
|
if (mappingSubtypeInfo.typedDict) {
|
|
338
342
|
if (mappingEntry.nodeType === 71 /* ParseNodeType.PatternMappingKeyEntry */) {
|
|
339
|
-
const narrowedKeyType = narrowTypeBasedOnPattern(evaluator, evaluator.getBuiltInObject(pattern, 'str'), mappingEntry.d.keyPattern, isPositiveTest);
|
|
343
|
+
const narrowedKeyType = narrowTypeBasedOnPattern(evaluator, evaluator.getBuiltInObject(pattern, 'str'), mappingEntry.d.keyPattern, isPositiveTest, nodeInfo);
|
|
340
344
|
if ((0, types_1.isNever)(narrowedKeyType)) {
|
|
341
345
|
isPlausibleMatch = false;
|
|
342
346
|
}
|
|
@@ -352,7 +356,7 @@ function narrowTypeBasedOnMappingPattern(evaluator, type, pattern, isPositiveTes
|
|
|
352
356
|
const valueEntry = tdEntries.knownItems.get(keySubtype.priv.literalValue);
|
|
353
357
|
if (valueEntry) {
|
|
354
358
|
const narrowedValueType = narrowTypeBasedOnPattern(evaluator, valueEntry.valueType, mappingEntry.d.valuePattern,
|
|
355
|
-
/* isPositiveTest */ true);
|
|
359
|
+
/* isPositiveTest */ true, nodeInfo);
|
|
356
360
|
if (!(0, types_1.isNever)(narrowedValueType)) {
|
|
357
361
|
// If this is a "NotRequired" entry that has not yet been demonstrated
|
|
358
362
|
// to be present, we can mark it as "provided" at this point.
|
|
@@ -383,8 +387,8 @@ function narrowTypeBasedOnMappingPattern(evaluator, type, pattern, isPositiveTes
|
|
|
383
387
|
}
|
|
384
388
|
else if (mappingSubtypeInfo.dictTypeArgs) {
|
|
385
389
|
if (mappingEntry.nodeType === 71 /* ParseNodeType.PatternMappingKeyEntry */) {
|
|
386
|
-
const narrowedKeyType = narrowTypeBasedOnPattern(evaluator, mappingSubtypeInfo.dictTypeArgs.key, mappingEntry.d.keyPattern, isPositiveTest);
|
|
387
|
-
const narrowedValueType = narrowTypeBasedOnPattern(evaluator, mappingSubtypeInfo.dictTypeArgs.value, mappingEntry.d.valuePattern, isPositiveTest);
|
|
390
|
+
const narrowedKeyType = narrowTypeBasedOnPattern(evaluator, mappingSubtypeInfo.dictTypeArgs.key, mappingEntry.d.keyPattern, isPositiveTest, nodeInfo);
|
|
391
|
+
const narrowedValueType = narrowTypeBasedOnPattern(evaluator, mappingSubtypeInfo.dictTypeArgs.value, mappingEntry.d.valuePattern, isPositiveTest, nodeInfo);
|
|
388
392
|
if ((0, types_1.isNever)(narrowedKeyType) || (0, types_1.isNever)(narrowedValueType)) {
|
|
389
393
|
isPlausibleMatch = false;
|
|
390
394
|
}
|
|
@@ -523,7 +527,7 @@ function specializeBoundedMatchTypeParams(evaluator, matchType, solvedTypeArgs,
|
|
|
523
527
|
});
|
|
524
528
|
return (0, typeUtils_1.addConditionToType)((0, typeUtils_1.convertToInstance)(types_1.ClassType.specialize(matchType, typeArgs)), condition);
|
|
525
529
|
}
|
|
526
|
-
function narrowTypeBasedOnClassPattern(evaluator, type, pattern, isPositiveTest) {
|
|
530
|
+
function narrowTypeBasedOnClassPattern(evaluator, type, pattern, isPositiveTest, nodeInfo) {
|
|
527
531
|
let exprType = evaluator.getTypeOfExpression(pattern.d.className, 2 /* EvalFlags.CallBaseDefaults */).type;
|
|
528
532
|
// If this is a class (but not a type alias that refers to a class),
|
|
529
533
|
// specialize it with Unknown type arguments.
|
|
@@ -604,7 +608,7 @@ function narrowTypeBasedOnClassPattern(evaluator, type, pattern, isPositiveTest)
|
|
|
604
608
|
}
|
|
605
609
|
}
|
|
606
610
|
for (let index = 0; index < pattern.d.args.length; index++) {
|
|
607
|
-
const narrowedArgType = narrowTypeOfClassPatternArg(evaluator, pattern.d.args[index], index, positionalArgNames, subjectSubtypeExpanded, isPositiveTest);
|
|
611
|
+
const narrowedArgType = narrowTypeOfClassPatternArg(evaluator, pattern.d.args[index], index, positionalArgNames, subjectSubtypeExpanded, isPositiveTest, nodeInfo);
|
|
608
612
|
if (!(0, types_1.isNever)(narrowedArgType)) {
|
|
609
613
|
return subjectSubtypeUnexpanded;
|
|
610
614
|
}
|
|
@@ -729,7 +733,7 @@ function narrowTypeBasedOnClassPattern(evaluator, type, pattern, isPositiveTest)
|
|
|
729
733
|
// Narrow the arg pattern. It's possible that the actual type of the object
|
|
730
734
|
// being matched is a subtype of the resultType, so it might contain additional
|
|
731
735
|
// attributes that we don't know about.
|
|
732
|
-
const narrowedArgType = narrowTypeOfClassPatternArg(evaluator, arg, index, positionalArgNames, resultType, isPositiveTest);
|
|
736
|
+
const narrowedArgType = narrowTypeOfClassPatternArg(evaluator, arg, index, positionalArgNames, resultType, isPositiveTest, nodeInfo);
|
|
733
737
|
if ((0, types_1.isNever)(narrowedArgType)) {
|
|
734
738
|
isMatchValid = false;
|
|
735
739
|
}
|
|
@@ -764,7 +768,7 @@ function isClassSpecialCaseForClassPattern(classType) {
|
|
|
764
768
|
return false;
|
|
765
769
|
}
|
|
766
770
|
// Narrows the pattern provided for a class pattern argument.
|
|
767
|
-
function narrowTypeOfClassPatternArg(evaluator, arg, argIndex, positionalArgNames, matchType, isPositiveTest) {
|
|
771
|
+
function narrowTypeOfClassPatternArg(evaluator, arg, argIndex, positionalArgNames, matchType, isPositiveTest, nodeInfo) {
|
|
768
772
|
let argName;
|
|
769
773
|
if (arg.d.name) {
|
|
770
774
|
argName = arg.d.name.d.value;
|
|
@@ -821,7 +825,7 @@ function narrowTypeOfClassPatternArg(evaluator, arg, argIndex, positionalArgName
|
|
|
821
825
|
argType = types_1.UnknownType.create();
|
|
822
826
|
}
|
|
823
827
|
}
|
|
824
|
-
return narrowTypeBasedOnPattern(evaluator, argType, arg.d.pattern, isPositiveTest);
|
|
828
|
+
return narrowTypeBasedOnPattern(evaluator, argType, arg.d.pattern, isPositiveTest, nodeInfo);
|
|
825
829
|
}
|
|
826
830
|
function narrowTypeBasedOnValuePattern(evaluator, subjectType, pattern, isPositiveTest) {
|
|
827
831
|
const valueType = evaluator.getTypeOfExpression(pattern.d.expr).type;
|
|
@@ -952,7 +956,7 @@ function getMappingPatternInfo(evaluator, type, node) {
|
|
|
952
956
|
// Returns information about all subtypes that match the definition of a "sequence" as
|
|
953
957
|
// specified in PEP 634. For types that are not sequences or sequences that are not of
|
|
954
958
|
// sufficient length, it sets definiteNoMatch to true.
|
|
955
|
-
function getSequencePatternInfo(evaluator, pattern, type) {
|
|
959
|
+
function getSequencePatternInfo(evaluator, pattern, type, nodeInfo) {
|
|
956
960
|
const patternEntryCount = pattern.d.entries.length;
|
|
957
961
|
const patternStarEntryIndex = pattern.d.starEntryIndex;
|
|
958
962
|
const sequenceInfo = [];
|
|
@@ -1061,7 +1065,7 @@ function getSequencePatternInfo(evaluator, pattern, type) {
|
|
|
1061
1065
|
const subPattern = pattern.d.entries[i];
|
|
1062
1066
|
const typeArg = typeArgs[i].type;
|
|
1063
1067
|
const narrowedType = narrowTypeBasedOnPattern(evaluator, typeArg, subPattern,
|
|
1064
|
-
/* isPositiveTest */ true);
|
|
1068
|
+
/* isPositiveTest */ true, nodeInfo);
|
|
1065
1069
|
if ((0, types_1.isNever)(narrowedType)) {
|
|
1066
1070
|
isDefiniteNoMatch = true;
|
|
1067
1071
|
}
|
|
@@ -1102,7 +1106,7 @@ function getSequencePatternInfo(evaluator, pattern, type) {
|
|
|
1102
1106
|
const subPattern = pattern.d.entries[i];
|
|
1103
1107
|
const typeArg = typeArgs[i].type;
|
|
1104
1108
|
const narrowedType = narrowTypeBasedOnPattern(evaluator, typeArg, subPattern,
|
|
1105
|
-
/* isPositiveTest */ true);
|
|
1109
|
+
/* isPositiveTest */ true, nodeInfo);
|
|
1106
1110
|
if ((0, types_1.isNever)(narrowedType)) {
|
|
1107
1111
|
isDefiniteNoMatch = true;
|
|
1108
1112
|
}
|
|
@@ -1155,7 +1159,7 @@ function getSequencePatternInfo(evaluator, pattern, type) {
|
|
|
1155
1159
|
}
|
|
1156
1160
|
// If it wasn't a subtype of Sequence, see if it's a supertype.
|
|
1157
1161
|
const sequenceConstraints = new constraintTracker_1.ConstraintTracker();
|
|
1158
|
-
if ((0, constraintSolver_1.addConstraintsForExpectedType)(evaluator, types_1.ClassType.cloneAsInstance(sequenceType), subtype, sequenceConstraints, (0, parseTreeUtils_1.getTypeVarScopesForNode)(pattern), pattern.start)) {
|
|
1162
|
+
if ((0, constraintSolver_1.addConstraintsForExpectedType)(evaluator, types_1.ClassType.cloneAsInstance(sequenceType), subtype, sequenceConstraints, (0, parseTreeUtils_1.getTypeVarScopesForNode)(pattern, nodeInfo), pattern.start)) {
|
|
1159
1163
|
const specializedSequence = evaluator.solveAndApplyConstraints(types_1.ClassType.cloneAsInstantiable(sequenceType), sequenceConstraints);
|
|
1160
1164
|
if (specializedSequence.priv.typeArgs && specializedSequence.priv.typeArgs.length > 0) {
|
|
1161
1165
|
sequenceInfo.push({
|
|
@@ -1230,16 +1234,16 @@ function getTypeOfPatternSequenceEntry(evaluator, node, sequenceInfo, entryIndex
|
|
|
1230
1234
|
}
|
|
1231
1235
|
// Recursively assigns the specified type to the pattern and any capture
|
|
1232
1236
|
// nodes within it. It returns the narrowed type, as dictated by the pattern.
|
|
1233
|
-
function assignTypeToPatternTargets(evaluator, type, isTypeIncomplete, pattern) {
|
|
1237
|
+
function assignTypeToPatternTargets(evaluator, type, isTypeIncomplete, pattern, nodeInfo) {
|
|
1234
1238
|
// Further narrow the type based on this pattern.
|
|
1235
|
-
const narrowedType = narrowTypeBasedOnPattern(evaluator, type, pattern, /* positiveTest */ true);
|
|
1239
|
+
const narrowedType = narrowTypeBasedOnPattern(evaluator, type, pattern, /* positiveTest */ true, nodeInfo);
|
|
1236
1240
|
switch (pattern.nodeType) {
|
|
1237
1241
|
case 65 /* ParseNodeType.PatternSequence */: {
|
|
1238
|
-
const sequenceInfo = getSequencePatternInfo(evaluator, pattern, narrowedType).filter((seqInfo) => !seqInfo.isDefiniteNoMatch);
|
|
1242
|
+
const sequenceInfo = getSequencePatternInfo(evaluator, pattern, narrowedType, nodeInfo).filter((seqInfo) => !seqInfo.isDefiniteNoMatch);
|
|
1239
1243
|
pattern.d.entries.forEach((entry, index) => {
|
|
1240
1244
|
const entryType = (0, types_1.combineTypes)(sequenceInfo.map((info) => getTypeOfPatternSequenceEntry(evaluator, pattern, info, index, pattern.d.entries.length, pattern.d.starEntryIndex,
|
|
1241
1245
|
/* unpackStarEntry */ false)));
|
|
1242
|
-
assignTypeToPatternTargets(evaluator, entryType, isTypeIncomplete, entry);
|
|
1246
|
+
assignTypeToPatternTargets(evaluator, entryType, isTypeIncomplete, entry, nodeInfo);
|
|
1243
1247
|
});
|
|
1244
1248
|
break;
|
|
1245
1249
|
}
|
|
@@ -1249,11 +1253,11 @@ function assignTypeToPatternTargets(evaluator, type, isTypeIncomplete, pattern)
|
|
|
1249
1253
|
}
|
|
1250
1254
|
let runningNarrowedType = narrowedType;
|
|
1251
1255
|
pattern.d.orPatterns.forEach((orPattern) => {
|
|
1252
|
-
assignTypeToPatternTargets(evaluator, runningNarrowedType, isTypeIncomplete, orPattern);
|
|
1256
|
+
assignTypeToPatternTargets(evaluator, runningNarrowedType, isTypeIncomplete, orPattern, nodeInfo);
|
|
1253
1257
|
// OR patterns are evaluated left to right, so we can narrow
|
|
1254
1258
|
// the type as we go.
|
|
1255
1259
|
runningNarrowedType = narrowTypeBasedOnPattern(evaluator, runningNarrowedType, orPattern,
|
|
1256
|
-
/* positiveTest */ false);
|
|
1260
|
+
/* positiveTest */ false, nodeInfo);
|
|
1257
1261
|
});
|
|
1258
1262
|
break;
|
|
1259
1263
|
}
|
|
@@ -1287,7 +1291,7 @@ function assignTypeToPatternTargets(evaluator, type, isTypeIncomplete, pattern)
|
|
|
1287
1291
|
if (mappingSubtypeInfo.typedDict) {
|
|
1288
1292
|
if (mappingEntry.nodeType === 71 /* ParseNodeType.PatternMappingKeyEntry */) {
|
|
1289
1293
|
const keyType = narrowTypeBasedOnPattern(evaluator, evaluator.getBuiltInObject(pattern, 'str'), mappingEntry.d.keyPattern,
|
|
1290
|
-
/* isPositiveTest */ true);
|
|
1294
|
+
/* isPositiveTest */ true, nodeInfo);
|
|
1291
1295
|
keyTypes.push(keyType);
|
|
1292
1296
|
(0, typeUtils_1.doForEachSubtype)(keyType, (keySubtype) => {
|
|
1293
1297
|
if ((0, types_1.isClassInstance)(keySubtype) &&
|
|
@@ -1310,10 +1314,10 @@ function assignTypeToPatternTargets(evaluator, type, isTypeIncomplete, pattern)
|
|
|
1310
1314
|
else if (mappingSubtypeInfo.dictTypeArgs) {
|
|
1311
1315
|
if (mappingEntry.nodeType === 71 /* ParseNodeType.PatternMappingKeyEntry */) {
|
|
1312
1316
|
const keyType = narrowTypeBasedOnPattern(evaluator, mappingSubtypeInfo.dictTypeArgs.key, mappingEntry.d.keyPattern,
|
|
1313
|
-
/* isPositiveTest */ true);
|
|
1317
|
+
/* isPositiveTest */ true, nodeInfo);
|
|
1314
1318
|
keyTypes.push(keyType);
|
|
1315
1319
|
valueTypes.push(narrowTypeBasedOnPattern(evaluator, mappingSubtypeInfo.dictTypeArgs.value, mappingEntry.d.valuePattern,
|
|
1316
|
-
/* isPositiveTest */ true));
|
|
1320
|
+
/* isPositiveTest */ true, nodeInfo));
|
|
1317
1321
|
}
|
|
1318
1322
|
else if (mappingEntry.nodeType === 72 /* ParseNodeType.PatternMappingExpandEntry */) {
|
|
1319
1323
|
keyTypes.push(mappingSubtypeInfo.dictTypeArgs.key);
|
|
@@ -1324,8 +1328,8 @@ function assignTypeToPatternTargets(evaluator, type, isTypeIncomplete, pattern)
|
|
|
1324
1328
|
const keyType = (0, types_1.combineTypes)(keyTypes);
|
|
1325
1329
|
const valueType = (0, types_1.combineTypes)(valueTypes);
|
|
1326
1330
|
if (mappingEntry.nodeType === 71 /* ParseNodeType.PatternMappingKeyEntry */) {
|
|
1327
|
-
assignTypeToPatternTargets(evaluator, keyType, isTypeIncomplete, mappingEntry.d.keyPattern);
|
|
1328
|
-
assignTypeToPatternTargets(evaluator, valueType, isTypeIncomplete, mappingEntry.d.valuePattern);
|
|
1331
|
+
assignTypeToPatternTargets(evaluator, keyType, isTypeIncomplete, mappingEntry.d.keyPattern, nodeInfo);
|
|
1332
|
+
assignTypeToPatternTargets(evaluator, valueType, isTypeIncomplete, mappingEntry.d.valuePattern, nodeInfo);
|
|
1329
1333
|
}
|
|
1330
1334
|
else if (mappingEntry.nodeType === 72 /* ParseNodeType.PatternMappingExpandEntry */) {
|
|
1331
1335
|
const dictClass = evaluator.getBuiltInType(pattern, 'dict');
|
|
@@ -1358,7 +1362,7 @@ function assignTypeToPatternTargets(evaluator, type, isTypeIncomplete, pattern)
|
|
|
1358
1362
|
}
|
|
1359
1363
|
pattern.d.args.forEach((arg, index) => {
|
|
1360
1364
|
const narrowedArgType = narrowTypeOfClassPatternArg(evaluator, arg, index, positionalArgNames, types_1.ClassType.cloneAsInstantiable(expandedSubtype),
|
|
1361
|
-
/* isPositiveTest */ true);
|
|
1365
|
+
/* isPositiveTest */ true, nodeInfo);
|
|
1362
1366
|
argTypes[index].push(narrowedArgType);
|
|
1363
1367
|
});
|
|
1364
1368
|
}
|
|
@@ -1372,7 +1376,7 @@ function assignTypeToPatternTargets(evaluator, type, isTypeIncomplete, pattern)
|
|
|
1372
1376
|
return undefined;
|
|
1373
1377
|
});
|
|
1374
1378
|
pattern.d.args.forEach((arg, index) => {
|
|
1375
|
-
assignTypeToPatternTargets(evaluator, (0, types_1.combineTypes)(argTypes[index]), isTypeIncomplete, arg.d.pattern);
|
|
1379
|
+
assignTypeToPatternTargets(evaluator, (0, types_1.combineTypes)(argTypes[index]), isTypeIncomplete, arg.d.pattern, nodeInfo);
|
|
1376
1380
|
});
|
|
1377
1381
|
break;
|
|
1378
1382
|
}
|