TypeScript
TypeScript copied to clipboard
Assert in assignParameterType during completionEntryDetails in reduxjs/redux-devtools
reduxjs/redux-devtools "Parameter symbol already has a cached type [any] which differs from newly assigned type [an empty array/tuple, AFAICT]" while asking about the completion entry details of the rest parameter args here.
Originally posted by @amcasey in https://github.com/microsoft/TypeScript/issues/50835#issuecomment-1252997885
reduxjs/redux-devtools
:warning: Note that typescript-4.8.3 also had errors :warning:
Req #1557 - completionEntryDetails
at assignParameterType (/typescript-4.8.3/lib/tsserver.js:78572:26)
at assignContextualParameterTypes (/typescript-4.8.3/lib/tsserver.js:78545:21)
at contextuallyCheckFunctionExpressionOrObjectLiteralMethod (/typescript-4.8.3/lib/tsserver.js:78991:29)
at checkFunctionExpressionOrObjectLiteralMethod (/typescript-4.8.3/lib/tsserver.js:78961:13)
at checkExpressionWorker (/typescript-4.8.3/lib/tsserver.js:80771:28)
at checkExpression (/typescript-4.8.3/lib/tsserver.js:80666:38)
at checkExpressionWithContextualType (/typescript-4.8.3/lib/tsserver.js:80296:28)
at getSignatureApplicabilityError (/typescript-4.8.3/lib/tsserver.js:76566:35)
at chooseOverload (/typescript-4.8.3/lib/tsserver.js:77140:29)
at resolveCall (/typescript-4.8.3/lib/tsserver.js:76944:26)
at resolveCallExpression (/typescript-4.8.3/lib/tsserver.js:77358:20)
at resolveSignature (/typescript-4.8.3/lib/tsserver.js:77741:28)
at getResolvedSignature (/typescript-4.8.3/lib/tsserver.js:77772:26)
at getContextualTypeForArgumentAtIndex (/typescript-4.8.3/lib/tsserver.js:73394:118)
at getContextualTypeForArgument (/typescript-4.8.3/lib/tsserver.js:73384:50)
at getContextualType (/typescript-4.8.3/lib/tsserver.js:73814:28)
at getApparentTypeOfContextualType (/typescript-4.8.3/lib/tsserver.js:73723:17)
at getContextualSignature (/typescript-4.8.3/lib/tsserver.js:74108:24)
at getContextuallyTypedParameterType (/typescript-4.8.3/lib/tsserver.js:73215:39)
at getTypeForVariableLikeDeclaration (/typescript-4.8.3/lib/tsserver.js:56587:141)
at getWidenedTypeForVariableLikeDeclaration (/typescript-4.8.3/lib/tsserver.js:57072:56)
at getTypeOfVariableOrParameterOrPropertyWorker (/typescript-4.8.3/lib/tsserver.js:57230:24)
at getTypeOfVariableOrParameterOrProperty (/typescript-4.8.3/lib/tsserver.js:57118:28)
at getTypeOfSymbol (/typescript-4.8.3/lib/tsserver.js:57490:24)
at getNonMissingTypeOfSymbol (/typescript-4.8.3/lib/tsserver.js:57507:38)
at getTypeOfSymbolAtLocation (/typescript-4.8.3/lib/tsserver.js:72198:20)
at Object.getTypeOfSymbolAtLocation (/typescript-4.8.3/lib/tsserver.js:48802:35)
at Object.getSymbolDisplayPartsDocumentationAndSymbolKind (/typescript-4.8.3/lib/tsserver.js:146861:97)
at /typescript-4.8.3/lib/tsserver.js:134856:41
at Object.runWithCancellationToken (/typescript-4.8.3/lib/tsserver.js:49088:28)
at createCompletionDetailsForSymbol (/typescript-4.8.3/lib/tsserver.js:134855:30)
at Object.getCompletionEntryDetails (/typescript-4.8.3/lib/tsserver.js:134837:28)
at Object.getCompletionEntryDetails (/typescript-4.8.3/lib/tsserver.js:167306:35)
at /typescript-4.8.3/lib/tsserver.js:179480:57
at Object.mapDefined (/typescript-4.8.3/lib/tsserver.js:622:30)
at IOSession.Session.getCompletionEntryDetails (/typescript-4.8.3/lib/tsserver.js:179478:33)
at Session.handlers.ts.Map.ts.getEntries._a.<computed> (/typescript-4.8.3/lib/tsserver.js:178115:61)
at /typescript-4.8.3/lib/tsserver.js:180166:96
at IOSession.Session.executeWithRequestId (/typescript-4.8.3/lib/tsserver.js:180157:28)
at IOSession.Session.executeCommand (/typescript-4.8.3/lib/tsserver.js:180166:41)
at IOSession.Session.onMessage (/typescript-4.8.3/lib/tsserver.js:180194:35)
at Interface.<anonymous> (/typescript-4.8.3/lib/tsserver.js:184330:31)
Req #1557 - completionEntryDetails
at assignParameterType (/typescript-4.9.0-dev.20220918/lib/tsserver.js:79157:26)
at assignContextualParameterTypes (/typescript-4.9.0-dev.20220918/lib/tsserver.js:79130:21)
at contextuallyCheckFunctionExpressionOrObjectLiteralMethod (/typescript-4.9.0-dev.20220918/lib/tsserver.js:79576:29)
at checkFunctionExpressionOrObjectLiteralMethod (/typescript-4.9.0-dev.20220918/lib/tsserver.js:79546:13)
at checkExpressionWorker (/typescript-4.9.0-dev.20220918/lib/tsserver.js:81351:28)
at checkExpression (/typescript-4.9.0-dev.20220918/lib/tsserver.js:81246:38)
at checkExpressionWithContextualType (/typescript-4.9.0-dev.20220918/lib/tsserver.js:80876:28)
at getSignatureApplicabilityError (/typescript-4.9.0-dev.20220918/lib/tsserver.js:77138:35)
at chooseOverload (/typescript-4.9.0-dev.20220918/lib/tsserver.js:77712:29)
at resolveCall (/typescript-4.9.0-dev.20220918/lib/tsserver.js:77516:26)
at resolveCallExpression (/typescript-4.9.0-dev.20220918/lib/tsserver.js:77930:20)
at resolveSignature (/typescript-4.9.0-dev.20220918/lib/tsserver.js:78313:28)
at getResolvedSignature (/typescript-4.9.0-dev.20220918/lib/tsserver.js:78344:26)
at getContextualTypeForArgumentAtIndex (/typescript-4.9.0-dev.20220918/lib/tsserver.js:73899:118)
at getContextualTypeForArgument (/typescript-4.9.0-dev.20220918/lib/tsserver.js:73889:50)
at getContextualType (/typescript-4.9.0-dev.20220918/lib/tsserver.js:74321:28)
at getApparentTypeOfContextualType (/typescript-4.9.0-dev.20220918/lib/tsserver.js:74230:17)
at getContextualSignature (/typescript-4.9.0-dev.20220918/lib/tsserver.js:74624:24)
at getContextuallyTypedParameterType (/typescript-4.9.0-dev.20220918/lib/tsserver.js:73720:39)
at getTypeForVariableLikeDeclaration (/typescript-4.9.0-dev.20220918/lib/tsserver.js:57046:141)
at getWidenedTypeForVariableLikeDeclaration (/typescript-4.9.0-dev.20220918/lib/tsserver.js:57535:56)
at getTypeOfVariableOrParameterOrPropertyWorker (/typescript-4.9.0-dev.20220918/lib/tsserver.js:57693:24)
at getTypeOfVariableOrParameterOrProperty (/typescript-4.9.0-dev.20220918/lib/tsserver.js:57581:28)
at getTypeOfSymbol (/typescript-4.9.0-dev.20220918/lib/tsserver.js:57967:24)
at getNonMissingTypeOfSymbol (/typescript-4.9.0-dev.20220918/lib/tsserver.js:57984:38)
at getTypeOfSymbolAtLocation (/typescript-4.9.0-dev.20220918/lib/tsserver.js:72702:20)
at Object.getTypeOfSymbolAtLocation (/typescript-4.9.0-dev.20220918/lib/tsserver.js:49246:35)
at Object.getSymbolDisplayPartsDocumentationAndSymbolKind (/typescript-4.9.0-dev.20220918/lib/tsserver.js:147888:97)
at /typescript-4.9.0-dev.20220918/lib/tsserver.js:135868:41
at Object.runWithCancellationToken (/typescript-4.9.0-dev.20220918/lib/tsserver.js:49534:28)
at createCompletionDetailsForSymbol (/typescript-4.9.0-dev.20220918/lib/tsserver.js:135867:30)
at Object.getCompletionEntryDetails (/typescript-4.9.0-dev.20220918/lib/tsserver.js:135849:28)
at Object.getCompletionEntryDetails (/typescript-4.9.0-dev.20220918/lib/tsserver.js:168426:35)
at /typescript-4.9.0-dev.20220918/lib/tsserver.js:180600:57
at Object.mapDefined (/typescript-4.9.0-dev.20220918/lib/tsserver.js:621:30)
at IOSession.Session.getCompletionEntryDetails (/typescript-4.9.0-dev.20220918/lib/tsserver.js:180598:33)
at Session.handlers.ts.Map.ts.getEntries._a.<computed> (/typescript-4.9.0-dev.20220918/lib/tsserver.js:179235:61)
at /typescript-4.9.0-dev.20220918/lib/tsserver.js:181286:96
at IOSession.Session.executeWithRequestId (/typescript-4.9.0-dev.20220918/lib/tsserver.js:181277:28)
at IOSession.Session.executeCommand (/typescript-4.9.0-dev.20220918/lib/tsserver.js:181286:41)
at IOSession.Session.onMessage (/typescript-4.9.0-dev.20220918/lib/tsserver.js:181314:35)
at Interface.<anonymous> (/typescript-4.9.0-dev.20220918/lib/tsserver.js:185436:31)
Last few requests
{"seq":1554,"type":"request","command":"definitionAndBoundSpan","arguments":{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","line":202,"offset":41}}
{"seq":1555,"type":"request","command":"definitionAndBoundSpan","arguments":{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","line":222,"offset":1}}
{"seq":1556,"type":"request","command":"completionInfo","arguments":{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","line":222,"offset":5,"includeExternalModuleExports":false,"includeInsertTextCompletions":true,"triggerKind":1}}
{"seq":1557,"type":"request","command":"completionEntryDetails","arguments":{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","line":222,"offset":5,"entryNames":["args"]}}
Repro Steps
git clone https://github.com/reduxjs/redux-devtools --recurse-submodules- In dir
redux-devtools, rungit reset --hard 418a90914417bf3a31fc5fa4b518ae055673aca7 Install packages (exact steps below but probably easier to follow repo readme)
- In dir
redux-devtools/extension/examples/counter, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/extension/examples/react-counter-messaging, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/extension/examples/router, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/extension/examples/saga-counter, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/extension/examples/todomvc, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/extension, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/d3-state-visualizer/examples/tree, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/d3-state-visualizer, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/d3tooltip, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/map2tree, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/react-base16-styling, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/react-dock/demo, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/react-dock, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/react-json-tree/examples, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/react-json-tree, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-app, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-chart-monitor, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-cli/app, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-cli, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-dock-monitor, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-extension, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-inspector-monitor-test-tab/demo, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-inspector-monitor-test-tab, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-inspector-monitor-trace-tab, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-inspector-monitor/demo, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-inspector-monitor, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-instrument, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-log-monitor, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-remote/examples/counter, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-remote/examples/node-counter, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-remote/examples/router, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-remote/examples/todomvc, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-remote/examples/toggle-monitoring, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-remote, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-rtk-query-monitor/demo, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-rtk-query-monitor, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-serialize, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-slider-monitor/examples/todomvc, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-slider-monitor, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-ui, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools-utils, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools/examples/counter, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools/examples/todomvc, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent - In dir
redux-devtools/packages/redux-devtools, runpnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
- In dir
- Download
RepoResults4/reduxjs.redux-devtools.replay.txtfrom the artifact folder npm install --no-save @typescript/server-replaynpx tsreplay ./redux-devtools ./reduxjs.redux-devtools.replay.txt path/to/tsserver.js
This is all the replay file requires to reproduce the issue
{"rootDirPlaceholder":"@PROJECT_ROOT@","serverArgs":["--disableAutomaticTypingAcquisition"]}
{"seq":1,"type":"request","command":"configure","arguments":{"preferences":{"includePackageJsonAutoImports":"off"},"watchOptions":{"excludeDirectories":["**/node_modules"]}}}
{"seq":1537,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":[],"openFiles":[{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","projectRootPath":"@PROJECT_ROOT@"}]}}
{"seq":1557,"type":"request","command":"completionEntryDetails","arguments":{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","line":222,"offset":5,"entryNames":["args"]}}
You can reliably get it with quick-info too
{"rootDirPlaceholder":"@PROJECT_ROOT@","serverArgs":["--disableAutomaticTypingAcquisition"]}
{"seq":1,"type":"request","command":"configure","arguments":{"preferences":{"includePackageJsonAutoImports":"off"},"watchOptions":{"excludeDirectories":["**/node_modules"]}}}
{"seq":1537,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":[],"openFiles":[{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","projectRootPath":"@PROJECT_ROOT@"}]}}
{"seq":1557,"type":"request","command":"quickinfo","arguments":{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","line":254,"offset":57}}
and here's how you avoid getting the error
{"rootDirPlaceholder":"@PROJECT_ROOT@","serverArgs":["--disableAutomaticTypingAcquisition"]}
{"seq":1,"type":"request","command":"configure","arguments":{"preferences":{"includePackageJsonAutoImports":"off"},"watchOptions":{"excludeDirectories":["**/node_modules"]}}}
{"seq":1537,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":[],"openFiles":[{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","projectRootPath":"@PROJECT_ROOT@"}]}}
{"seq":1556,"type":"request","command":"semanticDiagnosticsSync","arguments":{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts"}}
{"seq":1557,"type":"request","command":"quickinfo","arguments":{"file":"@PROJECT_ROOT@/packages/react-base16-styling/src/index.ts","line":254,"offset":57}}