From 9513424f130897f0eaa4a7113e5f49460365b63a Mon Sep 17 00:00:00 2001 From: Petr Pokorny Date: Wed, 2 Aug 2023 11:38:09 +0200 Subject: [PATCH] Fix duplicate find references results (#15728) --- .../src/FSharp.Editor/Navigation/FindUsagesService.fs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/vsintegration/src/FSharp.Editor/Navigation/FindUsagesService.fs b/vsintegration/src/FSharp.Editor/Navigation/FindUsagesService.fs index 5ab7ba417b0..a681f2f9f8c 100644 --- a/vsintegration/src/FSharp.Editor/Navigation/FindUsagesService.fs +++ b/vsintegration/src/FSharp.Editor/Navigation/FindUsagesService.fs @@ -85,6 +85,10 @@ type internal FSharpFindUsagesService [] () = } |> liftAsync + let declarationSpans = + declarationSpans + |> List.distinctBy (fun x -> x.Document.FilePath, x.Document.Project.FilePath) + let isExternal = declarationSpans |> List.isEmpty let displayParts = @@ -98,7 +102,7 @@ type internal FSharpFindUsagesService [] () = let definitionItems = declarationSpans - |> List.map (fun span -> FSharpDefinitionItem.Create(tags, displayParts, span), span.Document.Project.Id) + |> List.map (fun span -> FSharpDefinitionItem.Create(tags, displayParts, span), span.Document.Project.FilePath) for definitionItem, _ in definitionItems do do! context.OnDefinitionFoundAsync(definitionItem) |> Async.AwaitTask |> liftAsync @@ -123,8 +127,8 @@ type internal FSharpFindUsagesService [] () = externalDefinitionItem else definitionItems - |> List.tryFind (fun (_, projectId) -> doc.Project.Id = projectId) - |> Option.map (fun (definitionItem, _) -> definitionItem) + |> List.tryFind (snd >> (=) doc.Project.FilePath) + |> Option.map fst |> Option.defaultValue externalDefinitionItem let referenceItem =