mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-16 11:17:35 +01:00
* fix: signature help active overload not updating - Active overload now updates when typed arguments narrow the overload set * fix: replace findIndex with direct index lookup in getActiveSignature - Instead of searching signatures by label to get an index and comparing it to info.selectedItemIndex, look up signatures[info.selectedItemIndex] directly so both sides of the comparison use the same index source * test: add unit tests for #268728 overload fix - Extract getActiveSignature as an exported function so unit tests can import it without the extension host - Add BEFORE suite documenting the original bug: on retrigger, old code returned the stale overload index even after TypeScript updated selectedItemIndex (e.g. after a string argument narrows the overload set on the comma trigger) - Add AFTER suite verifying the fix: retrigger now honours TypeScript's updated selectedItemIndex; the BUG test case that returned 0 now correctly returns 1 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: address Copilot review on #268728 - Rename exported helper to computeActiveSignatureIndex to avoid identifier collision with the private method - Stop returning activeSignatureHelp.activeSignature: that index refers to the previous signature list, which is stale if the list reorders between invocations; always use tsSelectedItemIndex instead - Add regression test for the reordering case: verifies that when the list reorders and TS still selects the same overload by label, the current index is returned, not the stale one * fix: address Copilot review on #268728 - Simplify computeActiveSignatureIndex to only accept tsSelectedItemIndex; the context and signatures params were unused and made the API misleading - Add @internal JSDoc to signal the computeActiveSignatureIndex export is for unit testing only, not public API - Replace assertion-based BEFORE suite with block comment documenting the original bug; asserting known-wrong behaviour institutionalizes incorrect expectations * fix: simplify active overload selection - Replace the label-matching retrigger guard with result.activeSignature = info.selectedItemIndex; the guard became a no-op after the existingIndex === selectedItemIndex fix and its removal is the correct minimal change - Export TypeScriptSignatureHelpProvider as _TypeScriptSignatureHelpProvider (VS Code underscore-prefix convention for test-only exports) - Add unit tests via mock ITypeScriptServiceClient: documents the old buggy guard behavior and verifies the fix — the FIX test would fail if the label-matching guard were reintroduced * fix: address Copilot unit test review comments - Move CancellationTokenSource into setup/teardown so it is properly disposed after each test - Add success: true and message: '' to mock response to match the protocol shape - Add @internal test-only export JSDoc to _TypeScriptSignatureHelpProvider to make the export intent explicit * Fix signature help overload selection Track TypeScript-selected and user-selected overloads separately so retriggers follow updated recommendations without resetting manual selections. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>