dotnet / vscode-csharp

Official C# support for Visual Studio Code
MIT License
2.83k stars 653 forks source link

Code action fails with null reference in AbstractFixAllSpanMappingService.GetFixAllSpansAsync #6417

Open dibarbet opened 9 months ago

dibarbet commented 9 months ago

Type: Bug

Issue Description

Steps to Reproduce

Steps to reproduce

  1. Open the attached project t1.zip
  2. Open Program.cs
  3. Hover over ToString on line 19

Expected Behavior

No error

Actual Behavior

Exception in the logs

[Error - 3:57:48 PM] [LanguageServerHost] System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.CodeAnalysis.CodeFixesAndRefactorings.AbstractFixAllSpanMappingService.GetFixAllSpansAsync(Document document, TextSpan span, Boolean fixAllInContainingMember, CancellationToken cancellationToken) in /_/src/Workspaces/Core/Portable/LanguageServices/FixAllSpanMappingService/AbstractFixAllSpanMappingService.cs:line 56
   at Microsoft.CodeAnalysis.UnifiedSuggestions.UnifiedSuggestedActionsSource.GetUnifiedFixAllSuggestedActionSetAsync(CodeAction action, Int32 actionCount, IFixAllState fixAllState, ImmutableArray`1 supportedScopes, Diagnostic firstDiagnostic, Workspace workspace, Solution originalSolution, CancellationToken cancellationToken) in /_/src/Features/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActionsSource.cs:line 267
   at Microsoft.CodeAnalysis.UnifiedSuggestions.UnifiedSuggestedActionsSource.<>c__DisplayClass4_0.<<AddCodeActionsAsync>g__GetUnifiedSuggestedActionAsync|0>d.MoveNext() in /_/src/Features/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActionsSource.cs:line 175
--- End of stack trace from previous location ---
   at Microsoft.CodeAnalysis.UnifiedSuggestions.UnifiedSuggestedActionsSource.<>c__DisplayClass4_0.<<AddCodeActionsAsync>g__GetUnifiedSuggestedActionAsync|0>d.MoveNext() in /_/src/Features/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActionsSource.cs:line 175
--- End of stack trace from previous location ---
   at Microsoft.CodeAnalysis.UnifiedSuggestions.UnifiedSuggestedActionsSource.AddCodeActionsAsync(Workspace workspace, Solution originalSolution, IDictionary`2 map, ArrayBuilder`1 order, CodeFixCollection fixCollection, Func`2 getFixAllSuggestedActionSetAsync, ImmutableArray`1 codeFixes) in /_/src/Features/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActionsSource.cs:line 140
   at Microsoft.CodeAnalysis.UnifiedSuggestions.UnifiedSuggestedActionsSource.ProcessFixCollectionAsync(Workspace workspace, Solution originalSolution, IDictionary`2 map, ArrayBuilder`1 order, CodeFixCollection fixCollection, CancellationToken cancellationToken) in /_/src/Features/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActionsSource.cs:line 117
   at Microsoft.CodeAnalysis.UnifiedSuggestions.UnifiedSuggestedActionsSource.GroupFixesAsync(Workspace workspace, Solution originalSolution, ImmutableArray`1 fixCollections, IDictionary`2 map, ArrayBuilder`1 order, CancellationToken cancellationToken) in /_/src/Features/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActionsSource.cs:line 96
   at Microsoft.CodeAnalysis.UnifiedSuggestions.UnifiedSuggestedActionsSource.OrganizeFixesAsync(Workspace workspace, Solution originalSolution, SourceText text, ImmutableArray`1 fixCollections, CancellationToken cancellationToken) in /_/src/Features/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActionsSource.cs:line 77
   at Microsoft.CodeAnalysis.UnifiedSuggestions.UnifiedSuggestedActionsSource.GetFilterAndOrderCodeFixesAsync(Workspace workspace, ICodeFixService codeFixService, TextDocument document, TextSpan selection, ICodeActionRequestPriorityProvider priorityProvider, CodeActionOptionsProvider fallbackOptions, Func`2 addOperationScope, CancellationToken cancellationToken) in /_/src/Features/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActionsSource.cs:line 58
   at Microsoft.CodeAnalysis.LanguageServer.Handler.CodeActions.CodeActionHelpers.GetActionSetsAsync(Document document, CodeActionOptionsProvider fallbackOptions, ICodeFixService codeFixService, ICodeRefactoringService codeRefactoringService, Range selection, CancellationToken cancellationToken) in /_/src/Features/LanguageServer/Protocol/Handler/CodeActions/CodeActionHelpers.cs:line 319
   at Microsoft.CodeAnalysis.LanguageServer.Handler.CodeActions.CodeActionHelpers.GetVSCodeActionsAsync(CodeActionParams request, Document document, CodeActionOptionsProvider fallbackOptions, ICodeFixService codeFixService, ICodeRefactoringService codeRefactoringService, Boolean hasVsLspCapability, CancellationToken cancellationToken) in /_/src/Features/LanguageServer/Protocol/Handler/CodeActions/CodeActionHelpers.cs:line 40
   at Microsoft.CodeAnalysis.LanguageServer.Handler.CodeActionsHandler.HandleRequestAsync(CodeActionParams request, RequestContext context, CancellationToken cancellationToken) in /_/src/Features/LanguageServer/Protocol/Handler/CodeActions/CodeActionsHandler.cs:line 61
   at Microsoft.CommonLanguageServerProtocol.Framework.QueueItem`3.StartRequestAsync(TRequestContext context, CancellationToken cancellationToken) in /_/src/Features/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs:line 176
[Error - 3:57:48 PM] Request textDocument/codeAction failed.

Logs

C# log

Post the output from Output-->C# here

C# LSP Trace Logs

Post the output from Output-->C# LSP Trace Logs here. Requires `dotnet.server.trace` to be set to `Trace`

Environment information

VSCode version: 1.82.2 C# Extension: 2.1.2 Using OmniSharp: false

Dotnet Information Error running dotnet --info: Error: Command failed: C:\Program Files\dotnet\dotnet.exe --info 'C:\Program' is not recognized as an internal or external command, operable program or batch file. 'C:\Program' is not recognized as an internal or external command, operable program or batch file.
Visual Studio Code Extensions |Extension|Author|Version|Folder Name| |---|---|---|---| |azure-account|ms-vscode|0.11.5|ms-vscode.azure-account-0.11.5| |copilot|GitHub|1.115.430|github.copilot-1.115.430| |copilot-chat|GitHub|0.7.1|github.copilot-chat-0.7.1| |csdevkit|ms-dotnettools|0.5.98|ms-dotnettools.csdevkit-0.5.98-win32-x64| |csharp|ms-dotnettools|2.1.2|ms-dotnettools.csharp-2.1.2-win32-x64| |net-compiler-developer-sdk|333fred|0.1.2|333fred.net-compiler-developer-sdk-0.1.2| |powershell|ms-vscode|2023.6.0|ms-vscode.powershell-2023.6.0| |prettier-vscode|esbenp|10.1.0|esbenp.prettier-vscode-10.1.0| |remote-containers|ms-vscode-remote|0.309.0|ms-vscode-remote.remote-containers-0.309.0| |remote-wsl|ms-vscode-remote|0.81.4|ms-vscode-remote.remote-wsl-0.81.4| |vscode-azurefunctions|ms-azuretools|1.13.0|ms-azuretools.vscode-azurefunctions-1.13.0| |vscode-azureresourcegroups|ms-azuretools|0.7.5|ms-azuretools.vscode-azureresourcegroups-0.7.5| |vscode-azurevirtualmachines|ms-azuretools|0.6.5|ms-azuretools.vscode-azurevirtualmachines-0.6.5| |vscode-dotnet-runtime|ms-dotnettools|1.7.3|ms-dotnettools.vscode-dotnet-runtime-1.7.3| |vscode-eslint|dbaeumer|2.4.2|dbaeumer.vscode-eslint-2.4.2| |vscode-jest|Orta|5.2.3|orta.vscode-jest-5.2.3| |vscode-language-pack-ja|MS-CEINTL|1.82.2023091309|ms-ceintl.vscode-language-pack-ja-1.82.2023091309| |vscodeintellicode-csharp|ms-dotnettools|0.1.26|ms-dotnettools.vscodeintellicode-csharp-0.1.26-win32-x64| |vstuc|visualstudiotoolsforunity|0.9.1|visualstudiotoolsforunity.vstuc-0.9.1|;

Extension version: 2.1.2 VS Code version: Code 1.82.2 (abd2f3db4bdb28f9e95536dfa84d8479f1eb312d, 2023-09-14T05:55:25.390Z) OS version: Windows_NT x64 10.0.22621 Modes:

System Info |Item|Value| |---|---| |CPUs|Intel(R) Core(TM) i9-10900K CPU @ 3.70GHz (20 x 3696)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled| |Load (avg)|undefined| |Memory (System)|127.78GB (65.40GB free)| |Process Argv|. --crash-reporter-id 01fb3570-3598-44a3-90fa-7ab8944b2a22| |Screen Reader|no| |VM|0%|
A/B Experiments ``` vsliv368cf:30146710 vsreu685:30147344 python383:30185418 vspor879:30202332 vspor708:30202333 vspor363:30204092 vslsvsres303:30308271 vserr242:30382549 pythontb:30283811 vsjup518:30340749 pythonptprofiler:30281270 vshan820:30294714 vstes263:30335439 vscod805cf:30301675 binariesv615:30325510 bridge0708:30335490 bridge0723:30353136 vsaa593:30376534 pythonvs932:30410667 py29gd2263:30792226 vsclangdf:30486550 c4g48928:30535728 dsvsc012:30540252 pynewext54:30695312 azure-dev_surveyone:30548225 2e4cg342:30602488 f6dab269:30613381 showlangstatbar:30737416 03d35959:30757346 pythonfmttext:30731395 fixshowwlkth:30771522 showindicator:30805244 pythongtdpath:30769146 i26e3531:30792625 pythonnosmt12:30797651 pythonidxptcf:30805731 pythonnoceb:30805159 copilotsettingc:30839828 asynctok:30821568 dsvsc013:30795093 dsvsc014:30804076 diffeditorv2:30821572 dsvsc015cf:30829746 ```
dibarbet commented 9 months ago

Error line is here - https://github.com/dotnet/roslyn/blob/main/src/Workspaces/Core/Portable/LanguageServices/FixAllSpanMappingService/AbstractFixAllSpanMappingService.cs#L56C1-L57C1