Skip to content
This repository was archived by the owner on Dec 23, 2024. It is now read-only.

Commit c23e753

Browse files
dhwedcartermp
authored andcommitted
do not invalidate the BackgroundCompiler config on DocumentChanged (dotnet#4121)
1 parent 72236eb commit c23e753

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

LanguageService/LanguageService.fs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,12 @@ type internal FSharpProjectOptionsManager
143143
}
144144

145145
/// Update the info for a project in the project table
146-
member this.UpdateProjectInfo(tryGetOrCreateProjectId, projectId, site, userOpName) =
146+
member this.UpdateProjectInfo(tryGetOrCreateProjectId, projectId, site, userOpName, invalidateConfig) =
147147
projectOptionsTable.AddOrUpdateProject(projectId, (fun isRefresh ->
148148
let extraProjectInfo = Some(box workspace)
149149
let tryGetOptionsForReferencedProject f = f |> tryGetOrCreateProjectId |> Option.bind this.TryGetOptionsForProject |> Option.map(fun (_, _, projectOptions) -> projectOptions)
150150
let referencedProjects, projectOptions = ProjectSitesAndFiles.GetProjectOptionsForProjectSite(Settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, tryGetOptionsForReferencedProject, site, serviceProvider, (tryGetOrCreateProjectId (site.ProjectFileName)), site.ProjectFileName, extraProjectInfo, Some projectOptionsTable, true)
151-
checkerProvider.Checker.InvalidateConfiguration(projectOptions, startBackgroundCompileIfAlreadySeen = not isRefresh, userOpName = userOpName + ".UpdateProjectInfo")
151+
if invalidateConfig then checkerProvider.Checker.InvalidateConfiguration(projectOptions, startBackgroundCompileIfAlreadySeen = not isRefresh, userOpName = userOpName + ".UpdateProjectInfo")
152152
let referencedProjectIds = referencedProjects |> Array.choose tryGetOrCreateProjectId
153153
let parsingOptions, _ = checkerProvider.Checker.GetParsingOptionsFromProjectOptions(projectOptions)
154154
referencedProjectIds, parsingOptions, Some site, projectOptions))
@@ -205,7 +205,7 @@ type internal FSharpProjectOptionsManager
205205
member this.ProvideProjectSiteProvider(project:Project) = provideProjectSiteProvider(workspace, project, serviceProvider, Some projectOptionsTable)
206206

207207
/// Tell the checker to update the project info for the specified project id
208-
member this.UpdateProjectInfoWithProjectId(projectId:ProjectId, userOpName) =
208+
member this.UpdateProjectInfoWithProjectId(projectId:ProjectId, userOpName, invalidateConfig) =
209209
let hier = workspace.GetHierarchy(projectId)
210210
match hier with
211211
| null -> ()
@@ -215,13 +215,13 @@ type internal FSharpProjectOptionsManager
215215
let siteProvider = this.ProvideProjectSiteProvider(project)
216216
let projectSite = siteProvider.GetProjectSite()
217217
if projectSite.CompilationSourceFiles.Length <> 0 then
218-
this.UpdateProjectInfo(tryGetOrCreateProjectId, projectId, projectSite, userOpName)
218+
this.UpdateProjectInfo(tryGetOrCreateProjectId, projectId, projectSite, userOpName, invalidateConfig)
219219
| _ -> ()
220220

221221
/// Tell the checker to update the project info for the specified project id
222-
member this.UpdateDocumenttInfoWithProjectId(projectId:ProjectId, documentId:DocumentId, userOpName) =
222+
member this.UpdateDocumentInfoWithProjectId(projectId:ProjectId, documentId:DocumentId, userOpName, invalidateConfig) =
223223
if workspace.IsDocumentOpen(documentId) then
224-
this.UpdateProjectInfoWithProjectId(projectId, userOpName)
224+
this.UpdateProjectInfoWithProjectId(projectId, userOpName, invalidateConfig)
225225

226226
[<Export>]
227227
/// This handles commandline change notifications from the Dotnet Project-system
@@ -233,7 +233,7 @@ type internal FSharpProjectOptionsManager
233233
let referencePaths = references |> Seq.map(fun r -> fullPath r.Reference) |> Seq.toArray
234234
let projectId = workspace.ProjectTracker.GetOrCreateProjectIdForPath(path, projectDisplayNameOf path)
235235
projectOptionsTable.SetOptionsWithProjectId(projectId, sourcePaths, referencePaths, options.ToArray())
236-
this.UpdateProjectInfoWithProjectId(projectId, "HandleCommandLineChanges")
236+
this.UpdateProjectInfoWithProjectId(projectId, "HandleCommandLineChanges", invalidateConfig=true)
237237

238238
member __.Checker = checkerProvider.Checker
239239

@@ -341,11 +341,11 @@ type
341341

342342
let optionsAssociation = ConditionalWeakTable<IWorkspaceProjectContext, string[]>()
343343

344-
member private this.OnProjectAdded(projectId:ProjectId) = projectInfoManager.UpdateProjectInfoWithProjectId(projectId, "OnProjectAdded")
345-
member private this.OnProjectReloaded(projectId:ProjectId) = projectInfoManager.UpdateProjectInfoWithProjectId(projectId, "OnProjectReloaded")
346-
member private this.OnDocumentAdded(projectId:ProjectId, documentId:DocumentId) = projectInfoManager.UpdateDocumenttInfoWithProjectId(projectId, documentId, "OnDocumentAdded")
347-
member private this.OnDocumentChanged(projectId:ProjectId, documentId:DocumentId) = projectInfoManager.UpdateDocumenttInfoWithProjectId(projectId, documentId, "OnDocumentChanged")
348-
member private this.OnDocumentReloaded(projectId:ProjectId, documentId:DocumentId) = projectInfoManager.UpdateDocumenttInfoWithProjectId(projectId, documentId, "OnDocumentReloaded")
344+
member private this.OnProjectAdded(projectId:ProjectId) = projectInfoManager.UpdateProjectInfoWithProjectId(projectId, "OnProjectAdded", invalidateConfig=true)
345+
member private this.OnProjectReloaded(projectId:ProjectId) = projectInfoManager.UpdateProjectInfoWithProjectId(projectId, "OnProjectReloaded", invalidateConfig=true)
346+
member private this.OnDocumentAdded(projectId:ProjectId, documentId:DocumentId) = projectInfoManager.UpdateDocumentInfoWithProjectId(projectId, documentId, "OnDocumentAdded", invalidateConfig=true)
347+
member private this.OnDocumentChanged(projectId:ProjectId, documentId:DocumentId) = projectInfoManager.UpdateDocumentInfoWithProjectId(projectId, documentId, "OnDocumentChanged", invalidateConfig=false)
348+
member private this.OnDocumentReloaded(projectId:ProjectId, documentId:DocumentId) = projectInfoManager.UpdateDocumentInfoWithProjectId(projectId, documentId, "OnDocumentReloaded", invalidateConfig=true)
349349

350350
override this.Initialize() =
351351
base.Initialize()
@@ -473,7 +473,7 @@ type
473473

474474
// update the cached options
475475
if updated then
476-
projectInfoManager.UpdateProjectInfo(tryGetOrCreateProjectId workspace, project.Id, site, userOpName + ".SyncProject")
476+
projectInfoManager.UpdateProjectInfo(tryGetOrCreateProjectId workspace, project.Id, site, userOpName + ".SyncProject", invalidateConfig=true)
477477

478478
member this.SetupProjectFile(siteProvider: IProvideProjectSite, workspace: VisualStudioWorkspaceImpl, userOpName) =
479479
let userOpName = userOpName + ".SetupProjectFile"
@@ -583,7 +583,7 @@ type
583583
let fileContents = VsTextLines.GetFileContents(textLines, textViewAdapter)
584584
this.SetupStandAloneFile(filename, fileContents, this.Workspace, hier)
585585
| id ->
586-
projectInfoManager.UpdateProjectInfoWithProjectId(id.ProjectId, "SetupNewTextView")
586+
projectInfoManager.UpdateProjectInfoWithProjectId(id.ProjectId, "SetupNewTextView", invalidateConfig=true)
587587
| _ ->
588588
let fileContents = VsTextLines.GetFileContents(textLines, textViewAdapter)
589589
this.SetupStandAloneFile(filename, fileContents, this.Workspace, hier)

0 commit comments

Comments
 (0)