Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assert in assignParameterType during completionEntryDetails in reduxjs/redux-devtools #50869

Closed
amcasey opened this issue Sep 20, 2022 · 3 comments · Fixed by #50976
Closed
Assignees
Labels
Bug A bug in TypeScript Crawler-Detected Detected by a crawler running random TSServer operations on public code. Fix Available A PR has been opened for this issue

Comments

@amcasey
Copy link
Member

amcasey commented Sep 20, 2022

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 #50835 (comment)

@amcasey
Copy link
Member Author

amcasey commented Sep 20, 2022

reduxjs/redux-devtools

⚠️ Note that typescript-4.8.3 also had errors ⚠️
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

  1. git clone https://github.com/reduxjs/redux-devtools --recurse-submodules
  2. In dir redux-devtools, run git reset --hard 418a90914417bf3a31fc5fa4b518ae055673aca7
  3. Install packages (exact steps below but probably easier to follow repo readme)
    1. In dir redux-devtools/extension/examples/counter, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    2. In dir redux-devtools/extension/examples/react-counter-messaging, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    3. In dir redux-devtools/extension/examples/router, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    4. In dir redux-devtools/extension/examples/saga-counter, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    5. In dir redux-devtools/extension/examples/todomvc, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    6. In dir redux-devtools/extension, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    7. In dir redux-devtools, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    8. In dir redux-devtools/packages/d3-state-visualizer/examples/tree, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    9. In dir redux-devtools/packages/d3-state-visualizer, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    10. In dir redux-devtools/packages/d3tooltip, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    11. In dir redux-devtools/packages/map2tree, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    12. In dir redux-devtools/packages/react-base16-styling, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    13. In dir redux-devtools/packages/react-dock/demo, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    14. In dir redux-devtools/packages/react-dock, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    15. In dir redux-devtools/packages/react-json-tree/examples, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    16. In dir redux-devtools/packages/react-json-tree, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    17. In dir redux-devtools/packages/redux-devtools-app, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    18. In dir redux-devtools/packages/redux-devtools-chart-monitor, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    19. In dir redux-devtools/packages/redux-devtools-cli/app, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    20. In dir redux-devtools/packages/redux-devtools-cli, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    21. In dir redux-devtools/packages/redux-devtools-dock-monitor, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    22. In dir redux-devtools/packages/redux-devtools-extension, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    23. In dir redux-devtools/packages/redux-devtools-inspector-monitor-test-tab/demo, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    24. In dir redux-devtools/packages/redux-devtools-inspector-monitor-test-tab, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    25. In dir redux-devtools/packages/redux-devtools-inspector-monitor-trace-tab, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    26. In dir redux-devtools/packages/redux-devtools-inspector-monitor/demo, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    27. In dir redux-devtools/packages/redux-devtools-inspector-monitor, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    28. In dir redux-devtools/packages/redux-devtools-instrument, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    29. In dir redux-devtools/packages/redux-devtools-log-monitor, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    30. In dir redux-devtools/packages/redux-devtools-remote/examples/counter, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    31. In dir redux-devtools/packages/redux-devtools-remote/examples/node-counter, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    32. In dir redux-devtools/packages/redux-devtools-remote/examples/router, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    33. In dir redux-devtools/packages/redux-devtools-remote/examples/todomvc, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    34. In dir redux-devtools/packages/redux-devtools-remote/examples/toggle-monitoring, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    35. In dir redux-devtools/packages/redux-devtools-remote, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    36. In dir redux-devtools/packages/redux-devtools-rtk-query-monitor/demo, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    37. In dir redux-devtools/packages/redux-devtools-rtk-query-monitor, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    38. In dir redux-devtools/packages/redux-devtools-serialize, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    39. In dir redux-devtools/packages/redux-devtools-slider-monitor/examples/todomvc, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    40. In dir redux-devtools/packages/redux-devtools-slider-monitor, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    41. In dir redux-devtools/packages/redux-devtools-ui, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    42. In dir redux-devtools/packages/redux-devtools-utils, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    43. In dir redux-devtools/packages/redux-devtools/examples/counter, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    44. In dir redux-devtools/packages/redux-devtools/examples/todomvc, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
    45. In dir redux-devtools/packages/redux-devtools, run pnpm install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
  4. Download RepoResults4/reduxjs.redux-devtools.replay.txt from the artifact folder
  5. npm install --no-save @typescript/server-replay
  6. npx tsreplay ./redux-devtools ./reduxjs.redux-devtools.replay.txt path/to/tsserver.js

@DanielRosenwasser DanielRosenwasser added the Crawler-Detected Detected by a crawler running random TSServer operations on public code. label Sep 21, 2022
@DanielRosenwasser DanielRosenwasser added this to the TypeScript 4.9.1 milestone Sep 21, 2022
@DanielRosenwasser DanielRosenwasser added the Bug A bug in TypeScript label Sep 21, 2022
@DanielRosenwasser
Copy link
Member

DanielRosenwasser commented Sep 22, 2022

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"]}}

@DanielRosenwasser
Copy link
Member

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}}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug A bug in TypeScript Crawler-Detected Detected by a crawler running random TSServer operations on public code. Fix Available A PR has been opened for this issue
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants