From b38091bfbd443a2de1fbfa3aacfec5e94f57ce08 Mon Sep 17 00:00:00 2001 From: Vasily Kirichenko Date: Sun, 13 Sep 2015 18:42:08 +0300 Subject: [PATCH] clean up IncrementalFSharpBuild.frameworkTcImportsCache in FSharpChecker.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients --- src/fsharp/vs/IncrementalBuild.fs | 2 +- src/fsharp/vs/IncrementalBuild.fsi | 3 ++- src/fsharp/vs/service.fs | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/fsharp/vs/IncrementalBuild.fs b/src/fsharp/vs/IncrementalBuild.fs index 63d52cbab1..77f76e30ac 100755 --- a/src/fsharp/vs/IncrementalBuild.fs +++ b/src/fsharp/vs/IncrementalBuild.fs @@ -1088,7 +1088,7 @@ module internal IncrementalFSharpBuild = /// Global service state type FrameworkImportsCacheKey = (*resolvedpath*)string list * string * (*ClrRoot*)string list* (*fsharpBinaries*)string let private frameworkTcImportsCache = AgedLookup(8, areSame=(fun (x,y) -> x = y)) - + let ClearFrameworkTcImportsCache() = frameworkTcImportsCache.Clear() /// This function strips the "System" assemblies from the tcConfig and returns a age-cached TcImports for them. let GetFrameworkTcImports(tcConfig:TcConfig) = // Split into installed and not installed. diff --git a/src/fsharp/vs/IncrementalBuild.fsi b/src/fsharp/vs/IncrementalBuild.fsi index 2a1d67824e..c5e56bd20b 100755 --- a/src/fsharp/vs/IncrementalBuild.fsi +++ b/src/fsharp/vs/IncrementalBuild.fsi @@ -50,7 +50,8 @@ module internal IncrementalFSharpBuild = /// Lookup the global static cache for building the FrameworkTcImports val GetFrameworkTcImports : TcConfig -> TcGlobals * TcImports * AssemblyResolution list * UnresolvedAssemblyReference list - + val ClearFrameworkTcImportsCache: unit -> unit + type PartialCheckResults = { TcState : TcState TcImports: TcImports diff --git a/src/fsharp/vs/service.fs b/src/fsharp/vs/service.fs index 741844d7f6..b7dc572c99 100755 --- a/src/fsharp/vs/service.fs +++ b/src/fsharp/vs/service.fs @@ -2999,6 +2999,7 @@ type FSharpChecker(projectCacheSize, keepAssemblyContents, keepAllBackgroundReso parseAndCheckFileInProjectCache.Clear() braceMatchCache.Clear() parseFileInProjectCache.Clear() + IncrementalFSharpBuild.ClearFrameworkTcImportsCache() for i in 0 .. 2 do System.GC.Collect() System.GC.WaitForPendingFinalizers()