Skip to content

Commit 9adb46d

Browse files
committed
Remove references recursively.
1 parent 7f1aa28 commit 9adb46d

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

ReSharper.FSharp/src/FSharp/FSharp.Common/src/Checker/FcsCheckerService.fs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,19 @@ type FcsProject =
8080
type FcsSnapshotCache(fcsProjectProvider: IFcsProjectProvider, locks: IShellLocks) =
8181
let snapshots = Dictionary<FcsProjectKey, FSharpProjectSnapshot>()
8282

83-
let remove (psiModule: IPsiModule) =
84-
let projectKey = FcsProjectKey.Create(psiModule)
85-
snapshots.Remove(projectKey) |> ignore
86-
83+
let rec removeReferences (projectKey: FcsProjectKey) =
8784
match fcsProjectProvider.GetReferencedModule(projectKey) with
8885
| None -> ()
8986
| Some referencedModule ->
9087

91-
// todo: recursive update?
9288
for referencingProject in referencedModule.ReferencingProjects do
89+
removeReferences referencingProject
9390
snapshots.Remove(referencingProject) |> ignore
91+
92+
let remove (psiModule: IPsiModule) =
93+
let projectKey = FcsProjectKey.Create(psiModule)
94+
snapshots.Remove(projectKey) |> ignore
95+
removeReferences projectKey
9496

9597
member this.GetProjectSnapshot(projectKey: FcsProjectKey, options: FSharpProjectOptions) =
9698
// todo: use source files in file snapshots?

0 commit comments

Comments
 (0)