@@ -234,6 +234,7 @@ func (f *file) RefreshIR(ctx context.Context) {
234234 // Opener creates a cached view of all files in the workspace.
235235 pathToFiles := f .workspace .PathToFile ()
236236 files := make ([]* file , 0 , len (pathToFiles ))
237+ paths := make ([]string , 0 , len (pathToFiles ))
237238 var evictQueryKeys []any
238239
239240 openerMap := f .lsp .opener .Get ()
@@ -249,6 +250,7 @@ func (f *file) RefreshIR(ctx context.Context) {
249250 }
250251 }
251252 files = append (files , file )
253+ paths = append (paths , path )
252254 }
253255 // Remove paths that are no longer in the current workspace and evict stale query keys.
254256 for path := range openerMap {
@@ -258,14 +260,14 @@ func (f *file) RefreshIR(ctx context.Context) {
258260 }
259261 f .lsp .queryExecutor .Evict (evictQueryKeys ... )
260262
261- queries := xslices .Map (files , func (file * file ) incremental.Query [* ir.File ] {
262- return file .queryIR ()
263- })
264-
265263 results , diagnosticReport , err := incremental .Run (
266264 ctx ,
267265 f .lsp .queryExecutor ,
268- queries ... ,
266+ queries.Workspace {
267+ Opener : f .lsp .opener ,
268+ Session : f .lsp .irSession ,
269+ Workspace : source .NewWorkspace (paths ),
270+ },
269271 )
270272 if err != nil {
271273 f .lsp .logger .Error (
@@ -276,8 +278,9 @@ func (f *file) RefreshIR(ctx context.Context) {
276278 )
277279 return
278280 }
281+ irFiles := results [0 ].Value
279282 for i , file := range files {
280- file .ir = results [i ]. Value
283+ file .ir = irFiles [i ]
281284 if f != file {
282285 // Update symbols for imports.
283286 file .IndexSymbols (ctx )
@@ -298,18 +301,6 @@ func (f *file) RefreshIR(ctx context.Context) {
298301 )
299302}
300303
301- // queryIR returns the [queries.IR] for the current file.
302- func (f * file ) queryIR () incremental.Query [* ir.File ] {
303- if f .objectInfo == nil {
304- return nil
305- }
306- return queries.IR {
307- Opener : f .lsp .opener ,
308- Path : f .objectInfo .Path (),
309- Session : f .lsp .irSession ,
310- }
311- }
312-
313304// queryFileKeys returns the keys for [queries.File] with ReportError set to true and false.
314305// This is because [queries.AST] depends on ReportError set to true and [queries.IR] depends
315306// on ReportError set to false, so we need both keys when evicting cached [queries.File]
0 commit comments