-
Notifications
You must be signed in to change notification settings - Fork 68
Open
Labels
Description
Environment
- OS and Version: macos 15.7.3 (24G419)
- IDE Version: Claude Code 2.1.5
- Ada & SPARK Extension Version: N/A
Bug Summary and Reproducer
Bug Summary:
I creating the Ada LSP plugin for Claude Code. But when testing it, it appears that ALS seems stuck on project or files when its path contains spaces.
Steps to reproduce:
Run queries on a project that contains space in the path (eg: /Users/heziode/Awesome Projects/my-project
Expected behavior:
ALS answer the request.
Configuration and Logs
[ALS.MAIN] ALS version: 2026.0.202510141 ()
[ALS.MAIN] Initializing server ...
[ALS.MAIN] GPR PATH: /Volumes/Data/programmation_pro/These/asis-to-graphdb/Asis_To_GraphDB/lib/Asiscomps:/Volumes/Data/programmation_pro/These/asis-to-graphdb/Asis_To_GraphDB/lib/Comps:/Volumes/Data/programmation_pro/These/asis-to-graphdb/Asis_To_GraphDB/lib/gnatcoll-core-2019-20190515-24AD8-src/libgnatcoll/share/gpr
[ALS.MAIN] PATH: /Users/heziode/.codeium/windsurf/bin:/Users/heziode/.deno/bin:/Users/heziode/.pyenv/shims:/Users/heziode/.alire/bin/:/Users/heziode/opt/video-summarization/:/Users/heziode/Library/pnpm:/Users/heziode/anaconda3/bin:/usr/local/opt/python@3.8/bin:/Users/heziode/Library/Python/3.9/bin:/usr/local/opt/openjdk/bin:/Users/heziode/opt/alr/bin/:/Users/heziode/opt/ada_language_server/:/Users/heziode/bin:/Users/heziode/.local/bin:/opt/local/opt/qt@5/bin:/usr/local/opt/binutils/bin:/usr/local/opt/gnu-sed/libexec/gnubin:/usr/local/opt/findutils/libexec/gnubin:/Volumes/Data/programmation_pro/AdaControl-2020-12/Adactl_Dir/src:/Users/heziode/opt/GNAT/current/bin:/Users/heziode/.yarn/bin:/Users/heziode/.config/yarn/global/node_modules/.bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/MacGPG2/bin:/Library/TeX/texbin:/Applications/Little Snitch.app/Contents/Components:/Applications/VMware Fusion.app/Contents/Public:/usr/local/bin:/Users/heziode/.orbstack/bin:/Users/heziode/homebrew/sbin:/Users/heziode/homebrew/bin:/Users/heziode/opt:/usr/local/opt/fzf/bin:/Applications/Warp.app/Contents/Resources/bin
[ALS.MAIN] Trying config file: /Users/heziode/.config/als/config.json
[ALS.MAIN] /Users/heziode/.config/als/config.json doesn't exist
[ALS.MAIN] Trying config file: /Volumes/Data/programmation/Ada/Ada CLI Framework/project/aclida/.als.json
[ALS.MAIN] /Volumes/Data/programmation/Ada/Ada CLI Framework/project/aclida/.als.json doesn't exist
[ALS.MAIN] Ada version used for predefined completion: ADA_2020
[ALS.IN] {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":72383,"initializationOptions":{"ada":{"enableIndexing":true,"enableDiagnostics":true,"useCompletionSnippets":true,"insertWithClauses":true,"foldComments":true,"documentationStyle":"gnat"}},"workspaceFolders":[{"uri":"file:///Volumes/Data/programmation/Ada/Ada CLI Framework/project/aclida","name":"aclida"}],"rootPath":"/Volumes/Data/programmation/Ada/Ada CLI Framework/project/aclida","rootUri":"file:///Volumes/Data/programmation/Ada/Ada CLI Framework/project/aclida","capabilities":{"workspace":{"configuration":false,"workspaceFolders":false},"textDocument":{"synchronization":{"dynamicRegistration":false,"willSave":false,"willSaveWaitUntil":false,"didSave":true},"publishDiagnostics":{"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":false,"codeDescriptionSupport":true,"dataSupport":false},"hover":{"dynamicRegistration":false,"contentFormat":["markdown","plaintext"]},"definition":{"dynamicRegistration":false,"linkSupport":true},"references":{"dynamicRegistration":false},"documentSymbol":{"dynamicRegistration":false,"hierarchicalDocumentSymbolSupport":true},"callHierarchy":{"dynamicRegistration":false}},"general":{"positionEncodings":["utf-16"]}}}}
[ALS.MAIN] Processing initializationOptions from initialize request
[ALS.MAIN] enableDiagnostics has been deprecated please have a look at adaFileDiagnostics, projectDiagnosticsand alireDiagnostics
[ALS.OUT] {"jsonrpc":"2.0","method":"window/showMessage","params":{"type":2,"message":"enableDiagnostics has been deprecated please have a look at adaFileDiagnostics, projectDiagnosticsand alireDiagnostics"}}
[ALS.OUT] {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":2,"message":"enableDiagnostics has been deprecated please have a look at adaFileDiagnostics, projectDiagnosticsand alireDiagnostics"}}
[ALS.OUT] {"jsonrpc":"2.0","id":0,"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":true,"workspaceSymbolProvider":true,"documentFormattingProvider":true,"documentRangeFormattingProvider":true,"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n"},"renameProvider":{"prepareProvider":true},"foldingRangeProvider":true,"selectionRangeProvider":true,"executeCommandProvider":{"commands":["als-other-file","als-suspend-execution","als-reload-project","als-open-project-file","als-open-log-file","als-show-dependencies","als-gpr-dependencies","als-source-dirs","als-executables","als-mains","als-get-project-attribute-value","als-project-file","als-object-dir","als-named-parameters","als-auto-import","als-suppress-separate","als-refactor-delete-entity","als-refactor-extract-subprogram","als-refactor-extract-variable","als-refactor-inline_variable","als-refactor-introduce-parameter","als-refactor-pull_up_declaration","als-refactor-replace-type","als-refactor-sort-case-alphabetical","als-refactor-sort-case-declaration","als-refactor-sort_dependencies","als-refactor-swap_if_else","als-refactor-add-parameters","als-refactor-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":[],"tokenModifiers":[]},"range":true,"full":true},"typeHierarchyProvider":true,"inlineValueProvider":true,"workspace":{},"alsReferenceKinds":["reference","access","write","call","dispatching call","parent","child","overriding"]}}}
[ALS.OUT] {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"Log file is: /Users/heziode/.als/ada_ls_log.2026-01-14T195324.72667.log"}}
[ALS.IN] {"jsonrpc":"2.0","method":"initialized","params":{}}
[ALS.MAIN] Exception while handling LSP.SERVER_NOTIFICATIONS.INITIALIZED.NOTIFICATION
[ALS.MAIN] raised CONSTRAINT_ERROR : Invalid URI: file:///Volumes/Data/programmation/Ada/Ada CLI Framework/project/aclida
_ALS.MAIN_ Load address: 0x000000010A6D8000
_ALS.MAIN_ 0x000000010B673EE9 0x000000010B6D626E 0x000000010B6F49FB 0x000000010B8E27A3 0x000000010B8EBFFE 0x000000010AA5DD5C 0x000000010AA68F54 0x000000010B841756 0x000000010D93E542 0x00007FF815195E03
[ALS.MAIN] Load address: 0x000000010A6D8000
_ALS.MAIN_ 0x000000010B673EE9 0x000000010B6D626E 0x000000010B6F49FB 0x000000010B8E27A3 0x000000010B8EBFFE 0x000000010AA5DD5C 0x000000010AA68F54 0x000000010B841756 0x000000010D93E542 0x00007FF815195E03
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///Volumes/Data/programmation/Ada/Ada CLI Framework/project/aclida/libs/cli/src/aclida-cli-validation-relationships.ads","languageId":"ada","version":1,"text":"-------------------------------------------------------------------------------\n-- Aclida.CLI.Validation.Relationships - Inter-Argument Validation\n--\n-- Copyright (c) 2025 Aclida Contributors\n-- SPDX-License-Identifier: MIT OR Apache-2.0\n-------------------------------------------------------------------------------\n\n-- @summary\n-- Relationship validators for inter-argument dependencies and conflicts.\n--\n-- @description\n-- This package provides validators for relationships between CLI arguments,\n-- organized into two categories:\n--\n-- **Groups** - Collections of arguments with group-level constraints:\n-- - **Mutually Exclusive**: Only one of the group can be present\n-- - **One Required**: At least one of the group must be present\n-- - **Co-Occurring**: All or none of the group must be present\n--\n-- **Rules** - Pairwise relationships between individual arguments:\n-- - **Requires**: If A present, then B must be present\n-- - **Conflicts**: If A present, then B must NOT be present (bidirectional)\n-- - **Requires_If**: If A=X, then B must be present\n--\n-- Usage Example:\n-- --------------\n-- -- Create relationship registry\n-- Registry : Relationship_Registry := Create_Registry;\n--\n-- -- Add mutually exclusive group\n-- Add_Mutually_Exclusive (Registry, \"verbose\", \"quiet\");\n--\n-- -- Add co-occurring group (all or none)\n-- Add_Co_Occurring (Registry, \"user\", \"password\");\n--\n-- -- Add dependency rule: --output requires --format\n-- Add_Requires (Registry, \"output\", \"format\");\n--\n-- -- Add conditional rule: --compress=gzip requires --output\n-- Add_Requires_If (Registry, \"compress\", \"gzip\", \"output\");\n--\n-- -- Validate after parsing\n-- Result : Aggregate_Result := Validate_Relationships (Registry, Context);\n--\n-- @see Aclida.CLI.Validation for base validation framework\n\npackage Aclida.CLI.Validation.Relationships with SPARK_Mode is\n\n ---------------------------------------------------------------------------\n -- Constants\n ---------------------------------------------------------------------------\n\n -- Maximum number of groups\n Max_Groups : constant := 16;\n\n -- Maximum number of arguments in a group\n Max_Args_Per_Group : constant := 8;\n\n -- Maximum number of relationship rules\n Max_Rules : constant := 32;\n\n -- Maximum number of extended rules (Requires_If_All, Conflicts_If)\n Max_Extended_Rules : constant := 16;\n\n -- Maximum number of custom validators\n Max_Custom_Validators : constant := 8;\n\n ---------------------------------------------------------------------------\n -- Argument Presence Checking\n ---------------------------------------------------------------------------\n\n -- Function type to check if an argument is present\n type Argument_Present_Function is\n access function (Name : String) return Boolean;\n\n -- Function type to get an argument's value (for conditional checks)\n type Argument_Value_Function is\n access function (Name : String) return String;\n\n ---------------------------------------------------------------------------\n -- Group Types (Collection-based constraints)\n ---------------------------------------------------------------------------\n\n -- Kind of group constraint\n type Group_Kind is\n (Mutually_Exclusive, -- Only one of the group can be present\n One_Required, -- At least one of the group must be present\n Co_Occurring); -- All or none of the group must be present\n\n -- Group identifier (auto-generated)\n subtype Group_Id is Positive;\n\n -- Argument name storage\n subtype Argument_Name is Ops.Unbounded_String;\n\n type Argument_Name_Array is array (1 .. Max_Args_Per_Group) of Argument_Name;\n\n -- A group of arguments with a constraint\n type Argument_Group is record\n Id : Group_Id := 1;\n Kind : Group_Kind := Mutually_Exclusive;\n Args : Argument_Name_Array;\n Arg_Count : Natural := 0;\n Error_Message : Argument_Name; -- Custom error (optional)\n end record;\n\n ---------------------------------------------------------------------------\n -- Rule Types (Pairwise relationships)\n ---------------------------------------------------------------------------\n\n -- Kind of pairwise relationship\n type Relationship_Kind is\n (Requires, -- If A present, then B must be present\n Conflicts, -- If A present, then B must NOT be present (bidirectional)\n Requires_If); -- If A=X, then B must be present\n\n -- A pairwise relationship between arguments\n type Relationship_Rule is record\n Kind : Relationship_Kind := Requires;\n Source : Argument_Name; -- The \"if\" argument\n Source_Value : Argument_Name; -- Value for Requires_If (optional)\n Target : Argument_Name; -- The target argument\n Error_Message : Argument_Name; -- Custom error (optional)\n end record;\n\n ---------------------------------------------------------------------------\n -- Extended Rule Types (Multi-target conditional rules)\n ---------------------------------------------------------------------------\n\n -- Kind of extended rule\n type Extended_Rule_Kind is\n (Requires_If_All, -- If A=X, then all targets must be present\n Conflicts_If); -- If A=X, then target must NOT be present\n\n -- Extended rule with multiple targets\n type Extended_Rule is record\n Kind : Extended_Rule_Kind := Requires_If_All;\n Source : Argument_Name; -- The \"if\" argument\n Source_Value : Argument_Name; -- The value to match\n Targets : Argument_Name_Array; -- Target arguments\n Target_Count : Natural := 0; -- Number of targets\n Error_Message : Argument_Name; -- Custom error (optional)\n end record;\n\n ---------------------------------------------------------------------------\n -- Custom Validator Types\n ---------------------------------------------------------------------------\n\n -- Custom validator function type\n -- Receives presence and value callbacks, adds errors to Result\n type Custom_Validator_Function is\n access procedure\n (Is_Present : not null Argument_Present_Function;\n Get_Value : Argument_Value_Function;\n Result : in out Aggregate_Result);\n\n ---------------------------------------------------------------------------\n -- Relationship Registry\n ---------------------------------------------------------------------------\n\n type Group_Array is array (1 .. Max_Groups) of Argument_Group;\n type Rule_Array is array (1 .. Max_Rules) of Relationship_Rule;\n type Extended_Rule_Array is array (1 .. Max_Extended_Rules) of Extended_Rule;\n type Custom_Validator_Array is\n array (1 .. Max_Custom_Validators) of Custom_Validator_Function;\n\n -- Central registry holding all groups, rules, extended rules, and validators\n type Relationship_Registry is record\n Groups : Group_Array;\n Group_Count : Natural := 0;\n Rules : Rule_Array;\n Rule_Count : Natural := 0;\n Extended_Rules : Extended_Rule_Array;\n Extended_Rule_Count : Natural := 0;\n Custom_Validators : Custom_Validator_Array;\n Validator_Count : Natural := 0;\n end record;\n\n -- Creates an empty relationship registry\n function Create_Registry return Relationship_Registry;\n\n ---------------------------------------------------------------------------\n -- Group API - Adding Group Constraints\n ---------------------------------------------------------------------------\n\n -- Adds a mutually exclusive group (only one can be present)\n procedure Add_Mutually_Exclusive\n (Registry : in out Relationship_Registry;\n Name1 : String;\n Name2 : String);\n\n -- Adds a mutually exclusive group of three\n procedure Add_Mutually_Exclusive\n (Registry : in out Relationship_Registry;\n Name1 : String;\n Name2 : String;\n Name3 : String);\n\n -- Adds a \"one required\" group (at least one must be present)\n procedure Add_One_Required\n (Registry : in out Relationship_Registry;\n Name1 : String;\n Name2 : String);\n\n -- Adds a \"one required\" group of three\n procedure Add_One_Required\n (Registry : in out Relationship_Registry;\n Name1 : String;\n Name2 : String;\n Name3 : String);\n\n -- Adds a co-occurring group (all or none must be present)\n procedure Add_Co_Occurring\n (Registry : in out Relationship_Registry;\n Name1 : String;\n Name2 : String);\n\n -- Adds a co-occurring group of three\n procedure Add_Co_Occurring\n (Registry : in out Relationship_Registry;\n Name1 : String;\n Name2 : String;\n Name3 : String);\n\n ---------------------------------------------------------------------------\n -- Rule API - Adding Pairwise Relationships\n ---------------------------------------------------------------------------\n\n -- Adds a requires relationship (if Source present, Target must be too)\n procedure Add_Requires\n (Registry : in out Relationship_Registry;\n Source : String;\n Target : String);\n\n -- Adds a requires relationship with multiple targets\n procedure Add_Requires\n (Registry : in out Relationship_Registry;\n Source : String;\n Target1 : String;\n Target2 : String);\n\n -- Adds a conditional requires (if Source=Value, Target required)\n procedure Add_Requires_If\n (Registry : in out Relationship_Registry;\n Source : String;\n Source_Value : String;\n Target : String);\n\n -- Adds a conflicts relationship (bidirectional: if either present, other must NOT be)\n procedure Add_Conflicts\n (Registry : in out Relationship_Registry;\n Source : String;\n Target : String);\n\n ---------------------------------------------------------------------------\n -- Extended Rule API - Conditional Multi-Target Rules\n ---------------------------------------------------------------------------\n\n -- Array of target option names for multi-target rules\n type Target_Array is array (Positive range <>) of Argument_Name;\n\n -- Helper to create Target_Array from strings\n function To_Targets (S1 : String) return Target_Array;\n function To_Targets (S1, S2 : String) return Target_Array;\n function To_Targets (S1, S2, S3 : String) return Target_Array;\n function To_Targets (S1, S2, S3, S4 : String) return Target_Array;\n\n -- Adds a conditional requires-all rule (if Source=Value, all targets required)\n -- Example: If --login-method=Basic, require both --username and --password\n --\n -- Usage:\n -- Add_Requires_If_All (Registry, \"login-method\", \"basic\",\n -- To_Targets (\"username\", \"password\"));\n procedure Add_Requires_If_All\n (Registry : in out Relationship_Registry;\n Source : String;\n Source_Value : String;\n Targets : Target_Array);\n\n -- Adds a conditional conflicts rule (if Source=Value, target is forbidden)\n -- Example: If --mode=restricted, forbid --admin\n procedure Add_Conflicts_If\n (Registry : in out Relationship_Registry;\n Source : String;\n Source_Value : String;\n Target : String);\n\n ---------------------------------------------------------------------------\n -- Custom Validator API\n ---------------------------------------------------------------------------\n\n -- Adds a custom validator function for complex validation logic\n -- The function receives presence/value callbacks and can add any errors.\n -- Example usage:\n -- procedure Age_Rules\n -- (Is_Present : not null Argument_Present_Function;\n -- Get_Value : Argument_Value_Function;\n -- Result : in out Aggregate_Result)\n -- is\n -- Age : constant Natural := Natural'Value (Get_Value (\"age\"));\n -- begin\n -- if Age < 18 and then Is_Present (\"nightclub\") then\n -- Add_Error (Result, \"--nightclub forbidden when age < 18\");\n -- end if;\n -- end Age_Rules;\n --\n -- Add_Custom_Validator (Registry, Age_Rules'Access);\n procedure Add_Custom_Validator\n (Registry : in out Relationship_Registry;\n Validator : Custom_Validator_Function);\n\n ---------------------------------------------------------------------------\n -- Error Message Customization\n ---------------------------------------------------------------------------\n\n -- Sets a custom error message for the last added group\n procedure Set_Group_Error_Message\n (Registry : in out Relationship_Registry;\n Message : String);\n\n -- Sets a custom error message for the last added rule\n procedure Set_Rule_Error_Message\n (Registry : in out Relationship_Registry;\n Message : String);\n\n -- Sets a custom error message for the last added extended rule\n procedure Set_Extended_Rule_Error_Message\n (Registry : in out Relationship_Registry;\n Message : String);\n\n ---------------------------------------------------------------------------\n -- Relationship Validation\n ---------------------------------------------------------------------------\n\n -- Validates all relationship groups and rules\n function Validate_Relationships\n (Registry : Relationship_Registry;\n Is_Present : not null Argument_Present_Function;\n Get_Value : Argument_Value_Function := null)\n return Aggregate_Result;\n\n -- Returns the number of groups in the registry\n function Group_Count (Registry : Relationship_Registry) return Natural;\n\n -- Returns the number of rules in the registry\n function Rule_Count (Registry : Relationship_Registry) return Natural;\n\n -- Returns the number of extended rules in the registry\n function Extended_Rule_Count (Registry : Relationship_Registry) return Natural;\n\n -- Returns the number of custom validators in the registry\n function Validator_Count (Registry : Relationship_Registry) return Natural;\n\nend Aclida.CLI.Validation.Relationships;\n"}}}
[ALS.IN] {"jsonrpc":"2.0","id":1,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///Volumes/Data/programmation/Ada/Ada%20CLI%20Framework/project/aclida/libs/cli/src/aclida-cli-validation-relationships.ads"}}}
[ALS.MAIN] Exception while handling LSP.SERVER_NOTIFICATIONS.DIDOPEN.NOTIFICATION
[ALS.MAIN] raised CONSTRAINT_ERROR : Invalid URI: file:///Volumes/Data/programmation/Ada/Ada CLI Framework/project/aclida/libs/cli/src/aclida-cli-validation-relationships.ads
_ALS.MAIN_ Load address: 0x000000010A6D8000
_ALS.MAIN_ 0x000000010B673EE9 0x000000010B9156C7 0x000000010B8EBFFE 0x000000010AA5DD5C 0x000000010AA68F54 0x000000010B841756 0x000000010D93E542 0x00007FF815195E03
[ALS.MAIN] Load address: 0x000000010A6D8000
_ALS.MAIN_ 0x000000010B673EE9 0x000000010B9156C7 0x000000010B8EBFFE 0x000000010AA5DD5C 0x000000010AA68F54 0x000000010B841756 0x000000010D93E542 0x00007FF815195E03
[ALS.MAIN] Process_Message raised error!
[ALS.MAIN] raised CONSTRAINT_ERROR : lsp-ada_document_symbol.adb:168 access check failed
_ALS.MAIN_ Load address: 0x000000010A6D8000
_ALS.MAIN_ 0x000000010B92918D 0x000000010AA68BD4 0x000000010B841605 0x000000010D93E542 0x00007FF815195E03
[ALS.MAIN] Load address: 0x000000010A6D8000
_ALS.MAIN_ 0x000000010B92918D 0x000000010AA68BD4 0x000000010B841605 0x000000010D93E542 0x00007FF815195E03
[ALS.IN] {"jsonrpc":"2.0","id":2,"method":"shutdown","params":[null]}
[ALS.OUT] {"jsonrpc":"2.0","id":2,"result":null}
[ALS.IN] {"jsonrpc":"2.0","method":"exit","params":[null]}
[ALS.MAIN] Notification decoding failed:
[ALS.MAIN] {"jsonrpc":"2.0","method":"exit","params":[null]}Other VS Code Extensions
No response
Additional context
No response
Reactions are currently unavailable