AdaCore / ada_language_server

Server implementing the Microsoft Language Protocol for Ada and SPARK
GNU General Public License v3.0
230 stars 54 forks source link

[Bug]: Hovering over Side_Effects aspect in SPARK code causes VSCode extension to throw error and the language server to raise CONSTRAINT_ERROR #1211

Open kittybwained opened 1 day ago

kittybwained commented 1 day ago

Environment

Bug Summary and Reproducer

Bug Summary: When I hover over a Side_Effects aspect in SPARK code, I get an error message saying "Request textDocument/hover failed." Going to the language server output reveals that the language server raised a CONSTRAINT_ERROR. I'm not sure if it actually crashes, as it seems to continue working on other parts of the code, but hovering Side_Effects always throws the error.

Steps to reproduce: Hover your cursor over a Side_Effects aspect.

Expected behavior: For the language server to not throw an error, even if it doesn't recognize the aspect (As I understand it, this aspect is a newer addition to the SPARK language).

Configuration and Logs

# "Show extension output" logs:

2024-10-02 17:24:52.280 [Ada Extension] INFO     Setting log level to: info 
2024-10-02 17:24:52.280 [Ada Extension] INFO     Starting Ada extension 
2024-10-02 17:24:52.282 [Ada Extension] INFO     Using ALS at: c:\Users\illegalcoding\.vscode\extensions\adacore.ada-25.0.20240915-win32-x64\x64\win32\ada_language_server.exe 
2024-10-02 17:24:52.291 [Ada Extension] INFO     Using ALS at: c:\Users\illegalcoding\.vscode\extensions\adacore.ada-25.0.20240915-win32-x64\x64\win32\ada_language_server.exe 
2024-10-02 17:24:52.504 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:24:52.688 [Ada Extension] INFO     Finished starting Ada extension 
2024-10-02 17:24:53.358 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:24:53.368 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:24:54.110 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:24:54.157 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:24:54.216 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:24:54.723 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:25:00.183 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:25:03.722 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:25:42.921 [Ada Extension] INFO     didChangeConfiguration event received 
2024-10-02 17:28:58.413 [Ada Extension] INFO     didChangeConfiguration event received

"Show Ada Language Server output" logs:

Log directory is C:\Users\illegalcoding\.als\ada_ls_log.2024-10-02T172452.log
[Error - 5:25:06 PM] Request textDocument/hover failed.
  Message: Exception: raised CONSTRAINT_ERROR : LSP.Structures.CompletionItem_Vectors.First_Element: Container is empty
[c:\Users\illegalcoding\.vscode\extensions\adacore.ada-25.0.20240915-win32-x64\x64\win32\ada_language_server.exe]
0x7ff7ec2486b8 Lsp.Ada_Driver at a-convec.adb:760
0x7ff7ec59f565 Lsp.Ada_Driver at lsp-predefined_completion.adb:324
0x7ff7ed3e0d14 Lsp.Ada_Driver at lsp-ada_hover.adb:119
0x7ff7ec4fedf1 Lsp.Ada_Driver at lsp-ada_request_jobs.adb:33
0x7ff7ec4feb91 Lsp.Ada_Driver at lsp-server_request_jobs.adb:46
0x7ff7ec4cf620 Lsp.Ada_Driver at lsp-job_schedulers.adb:183
0x7ff7ed36e644 Lsp.Ada_Driver at lsp-servers.adb:847
0x7ff7ef98e522 _ada_lsp__ada_driver at ???
[C:\Windows\System32\KERNEL32.DLL]
0x7ffadf217372
[C:\Windows\SYSTEM32\ntdll.dll]
0x7ffae0a1cc8f

  Code: -32603 
[Error - 5:27:21 PM] Request textDocument/hover failed.
  Message: Exception: raised CONSTRAINT_ERROR : LSP.Structures.CompletionItem_Vectors.First_Element: Container is empty
[c:\Users\illegalcoding\.vscode\extensions\adacore.ada-25.0.20240915-win32-x64\x64\win32\ada_language_server.exe]
0x7ff7ec2486b8 Lsp.Ada_Driver at a-convec.adb:760
0x7ff7ec59f565 Lsp.Ada_Driver at lsp-predefined_completion.adb:324
0x7ff7ed3e0d14 Lsp.Ada_Driver at lsp-ada_hover.adb:119
0x7ff7ec4fedf1 Lsp.Ada_Driver at lsp-ada_request_jobs.adb:33
0x7ff7ec4feb91 Lsp.Ada_Driver at lsp-server_request_jobs.adb:46
0x7ff7ec4cf620 Lsp.Ada_Driver at lsp-job_schedulers.adb:183
0x7ff7ed36e644 Lsp.Ada_Driver at lsp-servers.adb:847
0x7ff7ef98e522 _ada_lsp__ada_driver at ???
[C:\Windows\System32\KERNEL32.DLL]
0x7ffadf217372
[C:\Windows\SYSTEM32\ntdll.dll]
0x7ffae0a1cc8f

  Code: -32603 
[Error - 5:27:22 PM] Request textDocument/hover failed.
  Message: Exception: raised CONSTRAINT_ERROR : LSP.Structures.CompletionItem_Vectors.First_Element: Container is empty
[c:\Users\illegalcoding\.vscode\extensions\adacore.ada-25.0.20240915-win32-x64\x64\win32\ada_language_server.exe]
0x7ff7ec2486b8 Lsp.Ada_Driver at a-convec.adb:760
0x7ff7ec59f565 Lsp.Ada_Driver at lsp-predefined_completion.adb:324
0x7ff7ed3e0d14 Lsp.Ada_Driver at lsp-ada_hover.adb:119
0x7ff7ec4fedf1 Lsp.Ada_Driver at lsp-ada_request_jobs.adb:33
0x7ff7ec4feb91 Lsp.Ada_Driver at lsp-server_request_jobs.adb:46
0x7ff7ec4cf620 Lsp.Ada_Driver at lsp-job_schedulers.adb:183
0x7ff7ed36e644 Lsp.Ada_Driver at lsp-servers.adb:847
0x7ff7ef98e522 _ada_lsp__ada_driver at ???
[C:\Windows\System32\KERNEL32.DLL]
0x7ffadf217372
[C:\Windows\SYSTEM32\ntdll.dll]
0x7ffae0a1cc8f

  Code: -32603 
[Error - 5:32:58 PM] Request textDocument/hover failed.
  Message: Exception: raised CONSTRAINT_ERROR : LSP.Structures.CompletionItem_Vectors.First_Element: Container is empty
[c:\Users\illegalcoding\.vscode\extensions\adacore.ada-25.0.20240915-win32-x64\x64\win32\ada_language_server.exe]
0x7ff7ec2486b8 Lsp.Ada_Driver at a-convec.adb:760
0x7ff7ec59f565 Lsp.Ada_Driver at lsp-predefined_completion.adb:324
0x7ff7ed3e0d14 Lsp.Ada_Driver at lsp-ada_hover.adb:119
0x7ff7ec4fedf1 Lsp.Ada_Driver at lsp-ada_request_jobs.adb:33
0x7ff7ec4feb91 Lsp.Ada_Driver at lsp-server_request_jobs.adb:46
0x7ff7ec4cf620 Lsp.Ada_Driver at lsp-job_schedulers.adb:183
0x7ff7ed36e644 Lsp.Ada_Driver at lsp-servers.adb:847
0x7ff7ef98e522 _ada_lsp__ada_driver at ???
[C:\Windows\System32\KERNEL32.DLL]
0x7ffadf217372
[C:\Windows\SYSTEM32\ntdll.dll]
0x7ffae0a1cc8f

  Code: -32603 
[Error - 5:33:04 PM] Request textDocument/hover failed.
  Message: Exception: raised CONSTRAINT_ERROR : LSP.Structures.CompletionItem_Vectors.First_Element: Container is empty
[c:\Users\illegalcoding\.vscode\extensions\adacore.ada-25.0.20240915-win32-x64\x64\win32\ada_language_server.exe]
0x7ff7ec2486b8 Lsp.Ada_Driver at a-convec.adb:760
0x7ff7ec59f565 Lsp.Ada_Driver at lsp-predefined_completion.adb:324
0x7ff7ed3e0d14 Lsp.Ada_Driver at lsp-ada_hover.adb:119
0x7ff7ec4fedf1 Lsp.Ada_Driver at lsp-ada_request_jobs.adb:33
0x7ff7ec4feb91 Lsp.Ada_Driver at lsp-server_request_jobs.adb:46
0x7ff7ec4cf620 Lsp.Ada_Driver at lsp-job_schedulers.adb:183
0x7ff7ed36e644 Lsp.Ada_Driver at lsp-servers.adb:847
0x7ff7ef98e522 _ada_lsp__ada_driver at ???
[C:\Windows\System32\KERNEL32.DLL]
0x7ffadf217372
[C:\Windows\SYSTEM32\ntdll.dll]
0x7ffae0a1cc8f

  Code: -32603 
[Error - 5:35:24 PM] Request textDocument/hover failed.
  Message: Exception: raised CONSTRAINT_ERROR : LSP.Structures.CompletionItem_Vectors.First_Element: Container is empty
[c:\Users\illegalcoding\.vscode\extensions\adacore.ada-25.0.20240915-win32-x64\x64\win32\ada_language_server.exe]
0x7ff7ec2486b8 Lsp.Ada_Driver at a-convec.adb:760
0x7ff7ec59f565 Lsp.Ada_Driver at lsp-predefined_completion.adb:324
0x7ff7ed3e0d14 Lsp.Ada_Driver at lsp-ada_hover.adb:119
0x7ff7ec4fedf1 Lsp.Ada_Driver at lsp-ada_request_jobs.adb:33
0x7ff7ec4feb91 Lsp.Ada_Driver at lsp-server_request_jobs.adb:46
0x7ff7ec4cf620 Lsp.Ada_Driver at lsp-job_schedulers.adb:183
0x7ff7ed36e644 Lsp.Ada_Driver at lsp-servers.adb:847
0x7ff7ef98e522 _ada_lsp__ada_driver at ???
[C:\Windows\System32\KERNEL32.DLL]
0x7ffadf217372
[C:\Windows\SYSTEM32\ntdll.dll]
0x7ffae0a1cc8f

  Code: -32603 

The %USERPROFILE%.als folder has quite a few files, so I have attached a zip of the folder to the "Additional context" section (GitHub won't let me attach files in this text box for some reason).



### Other VS Code Extensions

_No response_

### Additional context

[.als.zip](https://github.com/user-attachments/files/17232351/default.als.zip)
raph-amiard commented 22 hours ago

The code is missing a path for the case where the predefined atribute/aspect is not found, see https://github.com/AdaCore/ada_language_server/blob/master/source/ada/lsp-predefined_completion.adb#L324