Skip to content

[Bug]: ALS doesn't respect SignatureHelpClientCapabilities activeParameterSupport #1226

@brownts

Description

@brownts

Environment

  • OS and Version: Linux / Ubuntu 22.04
  • IDE Version: Emacs 30
  • Ada & SPARK Extension Version: 26.0.202411173

Bug Summary and Reproducer

Bug Summary:

When an LSP client does not support the SignatureInformation.activeParameter (as activeParameterSupported is missing from the SignatureHelpClientCapabilities), then the field should not be provided by the Language Server, and additionally, the SignatureHelp.activeParameter should be set correctly by the Language Server in the textDocument/signatureHelp response.

Steps to reproduce:

Using an LSP client which does not support SignatureInformation.activeParameter, trigger signature help for a subroutine on the second parameter and the Language Server will indicate an index of 0 (i.e., first parameter) for the SignatureHelp.activeParameter field of the textDocument/signatureHelp response.

Expected behavior:

When an LSP client does not support SignatureInformation.activeParameter, the Language Server should indicate the correct parameter index in the SignatureHelp.activeParameter field of the textDocument/signatureHelp response.

Configuration and Logs

[ALS.MAIN] ALS version: 26.0.202411173 () (12:51:38.786) [ALS.MAIN] Initializing server ... (12:51:38.786) [ALS.MAIN] GPR PATH: (12:51:38.786) [ALS.MAIN] PATH: /home/troy/.cargo/bin:/home/troy/bin:/home/troy/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-10-oracle/bin:/usr/lib/jvm/java-10-oracle/db/bin (12:51:38.786) [ALS.MAIN] Ada version used for predefined completion: ADA_2020 (12:51:38.793) [ALS.IN] {"jsonrpc":"2.0","method":"initialize","params":{"processId":734948,"rootPath":"/home/troy/junk/gtkada_24.0.0_80c56171","clientInfo":{"name":"emacs","version":"GNU Emacs 30.0.90 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0)\n of 2024 -09-07"},"rootUri":"file:///home/troy/junk/gtkada_24.0.0_80c56171","capabilities":{"general":{"positionEncodings":["utf-32","utf-16"]},"workspace":{"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","rename","delete"]},"applyEdit":true,"symbol":{"symb olKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"executeCommand":{"dynamicRegistration":false},"didChangeWatchedFiles":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true,"codeLens":{"refreshSupport":true },"diagnostics":{"refreshSupport":false},"fileOperations":{"didCreate":false,"willCreate":false,"didRename":true,"willRename":true,"didDelete":false,"willDelete":false}},"textDocument":{"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicR egistration":true,"linkSupport":true},"references":{"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"synchronization":{"willSave":true,"didSave":true,"willSaveWa itUntil":true},"documentSymbol":{"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFor matting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"codeAction":{"dynamicRegistration":true,"isPreferredSupport":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","ref actor.inline","refactor.rewrite","source","source.organizeImports"]}},"resolveSupport":{"properties":["edit","command"]},"dataSupport":true},"completion":{"completionItem":{"snippetSupport":true,"documentationFormat":["markdown","plaintext"],"resolveAdditionalTextEditsSu pport":true,"insertReplaceSupport":true,"deprecatedSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits","command","insertTextFormat","insertTextMode"]},"insertTextModeSupport":{"valueSet":[1,2]}},"contextSupport":true,"dynamicRegis tration":true},"signatureHelp":{"signatureInformation":{"parameterInformation":{"labelOffsetSupport":true}},"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistratio n":true},"foldingRange":{"dynamicRegistration":true},"selectionRange":{"dynamicRegistration":true},"callHierarchy":{"dynamicRegistration":false},"typeHierarchy":{"dynamicRegistration":true},"publishDiagnostics":{"relatedInformation":true,"tagSupport":{"valueSet":[1,2]}," versionSupport":true},"diagnostic":{"dynamicRegistration":false,"relatedDocumentSupport":false},"linkedEditingRange":{"dynamicRegistration":true}},"window":{"workDoneProgress":true,"showDocument":{"support":true}}},"initializationOptions":{"projectFile":"src/gtkada.gpr", "defaultCharset":"UTF-8"},"workDoneToken":"1"},"id":8} (12:51:38.811) [ALS.OUT] {"jsonrpc":"2.0","id":8,"result":{"capabilities":{"textDocumentSync":2,"completionProvider":{"triggerCharacters":[".",",","'","("],"resolveProvider":true},"hoverProvider":true,"signatureHelpProvider":{"triggerCharacters":[",","("],"retriggerCharacters":["\b"]}, "declarationProvider":true,"definitionProvider":true,"typeDefinitionProvider":true,"implementationProvider":true,"referencesProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"codeActionProvider":{"workDoneProgress":false,"codeActionKinds":["qu ickfix","refactor.rewrite"],"resolveProvider":false},"workspaceSymbolProvider":true,"documentFormattingProvider":true,"documentRangeFormattingProvider":true,"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n"},"renameProvider":{"prepareProvider":true},"foldi ngRangeProvider":true,"executeCommandProvider":{"commands":["als-other-file","als-suspend-execution","als-reload-project","als-open-project-file","als-open-log-file","als-show-dependencies","als-source-dirs","als-executables","als-mains","als-project-file","als-object-di r","als-named-parameters","als-auto-import","als-suppress-separate","als-refactor-extract-subprogram","als-refactor-introduce-parameter","als-refactor-pull_up_declaration","als-refactor-replace-type","als-refactor-sort_dependencies","als-refactor-add-parameters","als-ref actor-remove-parameters","als-refactor-move-parameter","als-refactor-change-parameter-mode","als-refactor-change_parameters_type","als-refactor-change_parameters_default_value"]},"callHierarchyProvider":true,"semanticTokensProvider":{"legend":{"tokenTypes":[],"tokenModif iers":[]},"range":true,"full":true},"typeHierarchyProvider":true,"workspace":{},"alsReferenceKinds":["reference","access","write","call","dispatching call","parent","child","overriding"]}}} (12:51:39.139) [ALS.OUT] {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"Log directory is /home/troy/.als/ada_ls_log.2024-12-16T125138.log"}} (12:51:39.139) [ALS.IN] {"jsonrpc":"2.0","method":"initialized","params":{}} (12:51:39.219) ... [ALS.IN] {"jsonrpc":"2.0","method":"textDocument/signatureHelp","params":{"textDocument":{"uri":"file:///home/troy/junk/gtkada_24.0.0_80c56171/src/glib.adb"},"position":{"line":102,"character":38}},"id":74} (12:52:03.045) [ALS.OUT] {"jsonrpc":"2.0","id":74,"result":{"signatures":[{"label":"function Internal (Name : String; Thing : String) return GType","documentation":"","parameters":[{"label":"Name"},{"label":"Thing"}],"activeParameter":1}],"activeSignature":0,"activeParameter":0}} (12:52:03.047)

Other VS Code Extensions

No response

Additional context

No response

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions