Skip to content

Commit 0595fec

Browse files
TIHancartermp
authored andcommitted
Added keepAllBackgroundSymbolUses to FSharpChecker (#8256)
1 parent 45d9b1a commit 0595fec

File tree

6 files changed

+20
-12
lines changed

6 files changed

+20
-12
lines changed

src/fsharp/NameResolution.fs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1702,6 +1702,8 @@ type TcSymbolUses(g, capturedNameResolutions: ResizeArray<CapturedNameResolution
17021702

17031703
member this.GetFormatSpecifierLocationsAndArity() = formatSpecifierLocations
17041704

1705+
static member Empty = TcSymbolUses(Unchecked.defaultof<_>, ResizeArray(), Array.empty)
1706+
17051707
/// An accumulator for the results being emitted into the tcSink.
17061708
type TcResultsSinkImpl(g, ?sourceText: ISourceText) =
17071709
let capturedEnvs = ResizeArray<_>()

src/fsharp/NameResolution.fsi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,9 @@ type internal TcSymbolUses =
326326
/// Get the locations of all the printf format specifiers in the file
327327
member GetFormatSpecifierLocationsAndArity : unit -> (range * int)[]
328328

329+
/// Empty collection of symbol uses
330+
static member Empty : TcSymbolUses
331+
329332
/// Represents open declaration statement.
330333
type internal OpenDeclaration =
331334
{ /// Long identifier as it's presented in source code.

src/fsharp/service/IncrementalBuild.fs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,7 +1208,7 @@ type RawFSharpAssemblyDataBackedByLanguageService (tcConfig, tcGlobals, tcState:
12081208
type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInputs, nonFrameworkResolutions, unresolvedReferences, tcConfig: TcConfig, projectDirectory, outfile,
12091209
assemblyName, niceNameGen: NiceNameGenerator, lexResourceManager,
12101210
sourceFiles, loadClosureOpt: LoadClosure option,
1211-
keepAssemblyContents, keepAllBackgroundResolutions, maxTimeShareMilliseconds) =
1211+
keepAssemblyContents, keepAllBackgroundResolutions, maxTimeShareMilliseconds, keepAllBackgroundSymbolUses) =
12121212

12131213
let tcConfigP = TcConfigProvider.Constant tcConfig
12141214
let fileParsed = new Event<string>()
@@ -1386,7 +1386,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput
13861386
let implFile = if keepAssemblyContents then implFile else None
13871387
let tcResolutions = if keepAllBackgroundResolutions then sink.GetResolutions() else TcResolutions.Empty
13881388
let tcEnvAtEndOfFile = (if keepAllBackgroundResolutions then tcEnvAtEndOfFile else tcState.TcEnvFromImpls)
1389-
let tcSymbolUses = sink.GetSymbolUses()
1389+
let tcSymbolUses = if keepAllBackgroundSymbolUses then sink.GetSymbolUses() else TcSymbolUses.Empty
13901390

13911391
RequireCompilationThread ctok // Note: events get raised on the CompilationThread
13921392

@@ -1700,7 +1700,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput
17001700
projectReferences, projectDirectory,
17011701
useScriptResolutionRules, keepAssemblyContents,
17021702
keepAllBackgroundResolutions, maxTimeShareMilliseconds,
1703-
tryGetMetadataSnapshot, suggestNamesForErrors) =
1703+
tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses) =
17041704
let useSimpleResolutionSwitch = "--simpleresolution"
17051705

17061706
cancellable {
@@ -1820,7 +1820,8 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput
18201820
resourceManager, sourceFilesNew, loadClosureOpt,
18211821
keepAssemblyContents=keepAssemblyContents,
18221822
keepAllBackgroundResolutions=keepAllBackgroundResolutions,
1823-
maxTimeShareMilliseconds=maxTimeShareMilliseconds)
1823+
maxTimeShareMilliseconds=maxTimeShareMilliseconds,
1824+
keepAllBackgroundSymbolUses=keepAllBackgroundSymbolUses)
18241825
return Some builder
18251826
with e ->
18261827
errorRecoveryNoRange e

src/fsharp/service/IncrementalBuild.fsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ type internal IncrementalBuilder =
161161
/// This may be a marginally long-running operation (parses are relatively quick, only one file needs to be parsed)
162162
member GetParseResultsForFile : CompilationThreadToken * filename:string -> Cancellable<Ast.ParsedInput option * Range.range * string * (PhasedDiagnostic * FSharpErrorSeverity)[]>
163163

164-
static member TryCreateBackgroundBuilderForProjectOptions : CompilationThreadToken * ReferenceResolver.Resolver * defaultFSharpBinariesDir: string * FrameworkImportsCache * scriptClosureOptions:LoadClosure option * sourceFiles:string list * commandLineArgs:string list * projectReferences: IProjectReference list * projectDirectory:string * useScriptResolutionRules:bool * keepAssemblyContents: bool * keepAllBackgroundResolutions: bool * maxTimeShareMilliseconds: int64 * tryGetMetadataSnapshot: ILBinaryReader.ILReaderTryGetMetadataSnapshot * suggestNamesForErrors: bool -> Cancellable<IncrementalBuilder option * FSharpErrorInfo[]>
164+
static member TryCreateBackgroundBuilderForProjectOptions : CompilationThreadToken * ReferenceResolver.Resolver * defaultFSharpBinariesDir: string * FrameworkImportsCache * scriptClosureOptions:LoadClosure option * sourceFiles:string list * commandLineArgs:string list * projectReferences: IProjectReference list * projectDirectory:string * useScriptResolutionRules:bool * keepAssemblyContents: bool * keepAllBackgroundResolutions: bool * maxTimeShareMilliseconds: int64 * tryGetMetadataSnapshot: ILBinaryReader.ILReaderTryGetMetadataSnapshot * suggestNamesForErrors: bool * keepAllBackgroundSymbolUses: bool -> Cancellable<IncrementalBuilder option * FSharpErrorInfo[]>
165165

166166
/// Generalized Incremental Builder. This is exposed only for unit testing purposes.
167167
module internal IncrementalBuild =

src/fsharp/service/service.fs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ type ScriptClosureCacheToken() = interface LockToken
249249

250250

251251
// There is only one instance of this type, held in FSharpChecker
252-
type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors) as self =
252+
type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses) as self =
253253
// STATIC ROOT: FSharpLanguageServiceTestable.FSharpChecker.backgroundCompiler.reactor: The one and only Reactor
254254
let reactor = Reactor.Singleton
255255
let beforeFileChecked = Event<string * obj option>()
@@ -306,7 +306,7 @@ type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyC
306306
(ctok, legacyReferenceResolver, FSharpCheckerResultsSettings.defaultFSharpBinariesDir, frameworkTcImportsCache, loadClosure, Array.toList options.SourceFiles,
307307
Array.toList options.OtherOptions, projectReferences, options.ProjectDirectory,
308308
options.UseScriptResolutionRules, keepAssemblyContents, keepAllBackgroundResolutions, FSharpCheckerResultsSettings.maxTimeShareMilliseconds,
309-
tryGetMetadataSnapshot, suggestNamesForErrors)
309+
tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses)
310310

311311
match builderOpt with
312312
| None -> ()
@@ -905,9 +905,10 @@ type FSharpChecker(legacyReferenceResolver,
905905
keepAssemblyContents,
906906
keepAllBackgroundResolutions,
907907
tryGetMetadataSnapshot,
908-
suggestNamesForErrors) =
908+
suggestNamesForErrors,
909+
keepAllBackgroundSymbolUses) =
909910

910-
let backgroundCompiler = BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors)
911+
let backgroundCompiler = BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses)
911912

912913
static let globalInstance = lazy FSharpChecker.Create()
913914

@@ -924,7 +925,7 @@ type FSharpChecker(legacyReferenceResolver,
924925
let maxMemEvent = new Event<unit>()
925926

926927
/// Instantiate an interactive checker.
927-
static member Create(?projectCacheSize, ?keepAssemblyContents, ?keepAllBackgroundResolutions, ?legacyReferenceResolver, ?tryGetMetadataSnapshot, ?suggestNamesForErrors) =
928+
static member Create(?projectCacheSize, ?keepAssemblyContents, ?keepAllBackgroundResolutions, ?legacyReferenceResolver, ?tryGetMetadataSnapshot, ?suggestNamesForErrors, ?keepAllBackgroundSymbolUses) =
928929

929930
let legacyReferenceResolver =
930931
match legacyReferenceResolver with
@@ -936,7 +937,8 @@ type FSharpChecker(legacyReferenceResolver,
936937
let projectCacheSizeReal = defaultArg projectCacheSize projectCacheSizeDefault
937938
let tryGetMetadataSnapshot = defaultArg tryGetMetadataSnapshot (fun _ -> None)
938939
let suggestNamesForErrors = defaultArg suggestNamesForErrors false
939-
new FSharpChecker(legacyReferenceResolver, projectCacheSizeReal,keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors)
940+
let keepAllBackgroundSymbolUses = defaultArg keepAllBackgroundSymbolUses true
941+
new FSharpChecker(legacyReferenceResolver, projectCacheSizeReal,keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses)
940942

941943
member __.ReferenceResolver = legacyReferenceResolver
942944

src/fsharp/service/service.fsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ type public FSharpChecker =
7777
/// <param name="keepAllBackgroundResolutions">If false, do not keep full intermediate checking results from background checking suitable for returning from GetBackgroundCheckResultsForFileInProject. This reduces memory usage.</param>
7878
/// <param name="legacyReferenceResolver">An optional resolver for non-file references, for legacy purposes</param>
7979
/// <param name="tryGetMetadataSnapshot">An optional resolver to access the contents of .NET binaries in a memory-efficient way</param>
80-
static member Create : ?projectCacheSize: int * ?keepAssemblyContents: bool * ?keepAllBackgroundResolutions: bool * ?legacyReferenceResolver: ReferenceResolver.Resolver * ?tryGetMetadataSnapshot: ILReaderTryGetMetadataSnapshot * ?suggestNamesForErrors: bool -> FSharpChecker
80+
static member Create : ?projectCacheSize: int * ?keepAssemblyContents: bool * ?keepAllBackgroundResolutions: bool * ?legacyReferenceResolver: ReferenceResolver.Resolver * ?tryGetMetadataSnapshot: ILReaderTryGetMetadataSnapshot * ?suggestNamesForErrors: bool * ?keepAllBackgroundSymbolUses: bool -> FSharpChecker
8181

8282
/// <summary>
8383
/// Parse a source code file, returning information about brace matching in the file.

0 commit comments

Comments
 (0)