@@ -16,6 +16,7 @@ import scala.language.unsafeNulls
1616import  scala .meta .internal .metals .CompilerVirtualFileParams 
1717import  scala .meta .internal .metals .EmptyCancelToken 
1818import  scala .meta .internal .metals .EmptyReportContext 
19+ import  scala .meta .internal .metals .PcQueryContext 
1920import  scala .meta .internal .metals .ReportContext 
2021import  scala .meta .internal .metals .ReportLevel 
2122import  scala .meta .internal .metals .StdReportContext 
@@ -143,26 +144,26 @@ case class ScalaPresentationCompiler(
143144  override  def  semanticTokens (
144145      params : VirtualFileParams 
145146  ):  CompletableFuture [ju.List [Node ]] = 
146-     compilerAccess.withInterruptableCompiler(Some (params))( 
147+     compilerAccess.withInterruptableCompiler(
147148      new  ju.ArrayList [Node ](),
148149      params.token()
149150    ) { access => 
150151      val  driver  =  access.compiler()
151152      new  PcSemanticTokensProvider (driver, params).provide().asJava
152-     }
153+     }(params.toQueryContext) 
153154
154155  override  def  inlayHints (
155156      params : InlayHintsParams 
156157  ):  ju.concurrent.CompletableFuture [ju.List [l.InlayHint ]] = 
157-     compilerAccess.withInterruptableCompiler(Some (params))( 
158+     compilerAccess.withInterruptableCompiler(
158159      new  ju.ArrayList [l.InlayHint ](),
159160      params.token(),
160161    ) { access => 
161162      val  driver  =  access.compiler()
162163      new  PcInlayHintsProvider (driver, params, search)
163164        .provide()
164165        .asJava
165-     }
166+     }(params.toQueryContext) 
166167
167168  override  def  getTasty (
168169      targetUri : URI ,
@@ -173,7 +174,7 @@ case class ScalaPresentationCompiler(
173174    }
174175
175176  def  complete (params : OffsetParams ):  CompletableFuture [l.CompletionList ] = 
176-     compilerAccess.withInterruptableCompiler(Some (params))( 
177+     compilerAccess.withInterruptableCompiler(
177178      EmptyCompletionList (),
178179      params.token()
179180    ) { access => 
@@ -188,61 +189,60 @@ case class ScalaPresentationCompiler(
188189        folderPath,
189190        completionItemPriority
190191      ).completions()
191- 
192-     }
192+     }(params.toQueryContext)
193193
194194  def  definition (params : OffsetParams ):  CompletableFuture [DefinitionResult ] = 
195-     compilerAccess.withInterruptableCompiler(Some (params))( 
195+     compilerAccess.withInterruptableCompiler(
196196      DefinitionResultImpl .empty,
197197      params.token()
198198    ) { access => 
199199      val  driver  =  access.compiler()
200200      PcDefinitionProvider (driver, params, search).definitions()
201-     }
201+     }(params.toQueryContext) 
202202
203203  override  def  typeDefinition (
204204      params : OffsetParams 
205205  ):  CompletableFuture [DefinitionResult ] = 
206-     compilerAccess.withInterruptableCompiler(Some (params))( 
206+     compilerAccess.withInterruptableCompiler(
207207      DefinitionResultImpl .empty,
208208      params.token()
209209    ) { access => 
210210      val  driver  =  access.compiler()
211211      PcDefinitionProvider (driver, params, search).typeDefinitions()
212-     }
212+     }(params.toQueryContext) 
213213
214214  def  documentHighlight (
215215      params : OffsetParams 
216216  ):  CompletableFuture [ju.List [DocumentHighlight ]] = 
217-     compilerAccess.withInterruptableCompiler(Some (params))( 
217+     compilerAccess.withInterruptableCompiler(
218218      List .empty[DocumentHighlight ].asJava,
219219      params.token()
220220    ) { access => 
221221      val  driver  =  access.compiler()
222222      PcDocumentHighlightProvider (driver, params).highlights.asJava
223-     }
223+     }(params.toQueryContext) 
224224
225225  override  def  references (
226226      params : ReferencesRequest 
227227  ):  CompletableFuture [ju.List [ReferencesResult ]] = 
228-     compilerAccess.withNonInterruptableCompiler(Some (params.file()))( 
228+     compilerAccess.withNonInterruptableCompiler(
229229      List .empty[ReferencesResult ].asJava,
230230      params.file().token,
231231    ) { access => 
232232      val  driver  =  access.compiler()
233233      PcReferencesProvider (driver, params)
234234        .references()
235235        .asJava
236-     }
236+     }(params.file().toQueryContext) 
237237
238238  def  inferExpectedType (params : OffsetParams ):  CompletableFuture [ju.Optional [String ]] = 
239-     compilerAccess.withInterruptableCompiler(Some (params))( 
239+     compilerAccess.withInterruptableCompiler(
240240      Optional .empty(),
241241      params.token,
242242    ) { access => 
243243      val  driver  =  access.compiler()
244244      new  InferExpectedType (search, driver, params).infer().asJava
245-     }
245+     }(params.toQueryContext) 
246246
247247  def  shutdown ():  Unit  = 
248248    compilerAccess.shutdown()
@@ -257,44 +257,42 @@ case class ScalaPresentationCompiler(
257257      symbol : String 
258258  ):  CompletableFuture [Optional [IPcSymbolInformation ]] = 
259259    compilerAccess.withNonInterruptableCompiler[Optional [IPcSymbolInformation ]](
260-       None 
261-     )(
262260      Optional .empty(),
263261      EmptyCancelToken ,
264262    ) { access => 
265263      SymbolInformationProvider (using  access.compiler().currentCtx)
266264        .info(symbol)
267265        .map(_.asJava)
268266        .asJava
269-     }
267+     }(emptyQueryContext) 
270268
271269  def  semanticdbTextDocument (
272270      filename : URI ,
273271      code : String 
274272  ):  CompletableFuture [Array [Byte ]] = 
275273    val  virtualFile  =  CompilerVirtualFileParams (filename, code)
276-     compilerAccess.withNonInterruptableCompiler(Some (virtualFile))( 
274+     compilerAccess.withNonInterruptableCompiler(
277275      Array .empty[Byte ],
278276      EmptyCancelToken 
279277    ) { access => 
280278      val  driver  =  access.compiler()
281279      val  provider  =  SemanticdbTextDocumentProvider (driver, folderPath)
282280      provider.textDocument(filename, code)
283-     }
281+     }(virtualFile.toQueryContext) 
284282
285283  def  completionItemResolve (
286284      item : l.CompletionItem ,
287285      symbol : String 
288286  ):  CompletableFuture [l.CompletionItem ] = 
289-     compilerAccess.withNonInterruptableCompiler(None )( 
287+     compilerAccess.withNonInterruptableCompiler(
290288      item,
291289      EmptyCancelToken 
292290    ) { access => 
293291      val  driver  =  access.compiler()
294292      CompletionItemResolver .resolve(item, symbol, search, config)(using 
295293        driver.currentCtx
296294      )
297-     }
295+     }(emptyQueryContext) 
298296
299297  def  autoImports (
300298      name : String ,
@@ -303,7 +301,7 @@ case class ScalaPresentationCompiler(
303301  ):  CompletableFuture [
304302    ju.List [scala.meta.pc.AutoImportsResult ]
305303  ] = 
306-     compilerAccess.withNonInterruptableCompiler(Some (params))( 
304+     compilerAccess.withNonInterruptableCompiler(
307305      List .empty[scala.meta.pc.AutoImportsResult ].asJava,
308306      params.token()
309307    ) { access => 
@@ -318,13 +316,13 @@ case class ScalaPresentationCompiler(
318316      )
319317        .autoImports(isExtension)
320318        .asJava
321-     }
319+     }(params.toQueryContext) 
322320
323321  def  implementAbstractMembers (
324322      params : OffsetParams 
325323  ):  CompletableFuture [ju.List [l.TextEdit ]] = 
326324    val  empty :  ju.List [l.TextEdit ] =  new  ju.ArrayList [l.TextEdit ]()
327-     compilerAccess.withNonInterruptableCompiler(Some (params))( 
325+     compilerAccess.withNonInterruptableCompiler(
328326      empty,
329327      params.token()
330328    ) { pc => 
@@ -335,31 +333,31 @@ case class ScalaPresentationCompiler(
335333        search,
336334        config
337335      )
338-     }
336+     }(params.toQueryContext) 
339337  end  implementAbstractMembers 
340338
341339  override  def  insertInferredType (
342340      params : OffsetParams 
343341  ):  CompletableFuture [ju.List [l.TextEdit ]] = 
344342    val  empty :  ju.List [l.TextEdit ] =  new  ju.ArrayList [l.TextEdit ]()
345-     compilerAccess.withNonInterruptableCompiler(Some (params))( 
343+     compilerAccess.withNonInterruptableCompiler(
346344      empty,
347345      params.token()
348346    ) { pc => 
349347      new  InferredTypeProvider (params, pc.compiler(), config, search)
350348        .inferredTypeEdits()
351349        .asJava
352-     }
350+     }(params.toQueryContext) 
353351
354352  override  def  inlineValue (
355353      params : OffsetParams 
356354  ):  CompletableFuture [ju.List [l.TextEdit ]] = 
357355    val  empty :  Either [String , List [l.TextEdit ]] =  Right (List ())
358356    (compilerAccess
359-       .withInterruptableCompiler(Some (params))( empty, params.token()) { pc => 
357+       .withInterruptableCompiler(empty, params.token()) { pc => 
360358        new  PcInlineValueProviderImpl (pc.compiler(), params)
361359          .getInlineTextEdits()
362-       })
360+       }(params.toQueryContext) )
363361      .thenApply {
364362        case  Right (edits : List [TextEdit ]) =>  edits.asJava
365363        case  Left (error : String ) =>  throw  new  DisplayableException (error)
@@ -371,7 +369,7 @@ case class ScalaPresentationCompiler(
371369      extractionPos : OffsetParams 
372370  ):  CompletableFuture [ju.List [l.TextEdit ]] = 
373371    val  empty :  ju.List [l.TextEdit ] =  new  ju.ArrayList [l.TextEdit ]()
374-     compilerAccess.withInterruptableCompiler(Some (range))( empty, range.token()) {
372+     compilerAccess.withInterruptableCompiler(empty, range.token()) {
375373      pc => 
376374        new  ExtractMethodProvider (
377375          range,
@@ -382,7 +380,7 @@ case class ScalaPresentationCompiler(
382380        )
383381          .extractMethod()
384382          .asJava
385-     }
383+     }(range.toQueryContext) 
386384  end  extractMethod 
387385
388386  override  def  convertToNamedArguments (
@@ -397,13 +395,13 @@ case class ScalaPresentationCompiler(
397395  ):  CompletableFuture [ju.List [l.TextEdit ]] = 
398396    val  empty :  Either [String , List [l.TextEdit ]] =  Right (List ())
399397    (compilerAccess
400-       .withNonInterruptableCompiler(Some (params))( empty, params.token()) { pc => 
398+       .withNonInterruptableCompiler(empty, params.token()) { pc => 
401399        new  ConvertToNamedArgumentsProvider (
402400          pc.compiler(),
403401          params,
404402          argIndices
405403        ).convertToNamedArguments
406-       })
404+       }(params.toQueryContext) )
407405      .thenApplyAsync {
408406        case  Left (error : String ) =>  throw  new  DisplayableException (error)
409407        case  Right (edits : List [l.TextEdit ]) =>  edits.asJava
@@ -413,53 +411,53 @@ case class ScalaPresentationCompiler(
413411      params : ju.List [OffsetParams ]
414412  ):  CompletableFuture [ju.List [l.SelectionRange ]] = 
415413    CompletableFuture .completedFuture {
416-       compilerAccess.withSharedCompiler(params.asScala.headOption)( 
414+       compilerAccess.withSharedCompiler(
417415        List .empty[l.SelectionRange ].asJava
418416      ) { pc => 
419417        new  SelectionRangeProvider (
420418          pc.compiler(),
421419          params,
422420        ).selectionRange().asJava
423-       }
421+       }(params.asScala.headOption.map(_.toQueryContext).getOrElse(emptyQueryContext)) 
424422    }
425423  end  selectionRange 
426424
427425  def  hover (
428426      params : OffsetParams 
429427  ):  CompletableFuture [ju.Optional [HoverSignature ]] = 
430-     compilerAccess.withNonInterruptableCompiler(Some (params))( 
428+     compilerAccess.withNonInterruptableCompiler(
431429      ju.Optional .empty[HoverSignature ](),
432430      params.token()
433431    ) { access => 
434432      val  driver  =  access.compiler()
435433      HoverProvider .hover(params, driver, search, config.hoverContentType())
436-     }
434+     }(params.toQueryContext) 
437435  end  hover 
438436
439437  def  prepareRename (
440438      params : OffsetParams 
441439  ):  CompletableFuture [ju.Optional [l.Range ]] = 
442-     compilerAccess.withNonInterruptableCompiler(Some (params))( 
440+     compilerAccess.withNonInterruptableCompiler(
443441      Optional .empty[l.Range ](),
444442      params.token()
445443    ) { access => 
446444      val  driver  =  access.compiler()
447445      Optional .ofNullable(
448446        PcRenameProvider (driver, params, None ).prepareRename().orNull
449447      )
450-     }
448+     }(params.toQueryContext) 
451449
452450  def  rename (
453451      params : OffsetParams ,
454452      name : String 
455453  ):  CompletableFuture [ju.List [l.TextEdit ]] = 
456-     compilerAccess.withNonInterruptableCompiler(Some (params))( 
454+     compilerAccess.withNonInterruptableCompiler(
457455      List [l.TextEdit ]().asJava,
458456      params.token()
459457    ) { access => 
460458      val  driver  =  access.compiler()
461459      PcRenameProvider (driver, params, Some (name)).rename().asJava
462-     }
460+     }(params.toQueryContext) 
463461
464462  def  newInstance (
465463      buildTargetIdentifier : String ,
@@ -473,24 +471,24 @@ case class ScalaPresentationCompiler(
473471    )
474472
475473  def  signatureHelp (params : OffsetParams ):  CompletableFuture [l.SignatureHelp ] = 
476-     compilerAccess.withNonInterruptableCompiler(Some (params))( 
474+     compilerAccess.withNonInterruptableCompiler(
477475      new  l.SignatureHelp (),
478476      params.token()
479477    ) { access => 
480478      val  driver  =  access.compiler()
481479      SignatureHelpProvider .signatureHelp(driver, params, search)
482-     }
480+     }(params.toQueryContext) 
483481
484482  override  def  didChange (
485483      params : VirtualFileParams 
486484  ):  CompletableFuture [ju.List [l.Diagnostic ]] = 
487485    CompletableFuture .completedFuture(Nil .asJava)
488486
489487  override  def  didClose (uri : URI ):  Unit  = 
490-     compilerAccess.withNonInterruptableCompiler(None )( 
488+     compilerAccess.withNonInterruptableCompiler(
491489      (),
492490      EmptyCancelToken 
493-     ) { access =>  access.compiler().close(uri) }
491+     ) { access =>  access.compiler().close(uri) }(emptyQueryContext) 
494492
495493  override  def  withExecutorService (
496494      executorService : ExecutorService 
@@ -515,4 +513,19 @@ case class ScalaPresentationCompiler(
515513
516514  override  def  isLoaded () =  compilerAccess.isLoaded()
517515
516+   def  additionalReportData () = 
517+     s """ |Scala version:  $scalaVersion
518+         |Classpath: 
519+         | ${classpath
520+           .map(path =>  s " $path [ ${if  path.exists then  " exists"   else  " missing"  } ] " )
521+           .mkString(" , "  )}
522+         |Options: 
523+         | ${options.mkString("  "  )}
524+         | """ .stripMargin
525+ 
526+   extension  (params : VirtualFileParams )
527+     def  toQueryContext  =  PcQueryContext (Some (params), additionalReportData)
528+ 
529+   def  emptyQueryContext  =  PcQueryContext (None , additionalReportData)
530+ 
518531end  ScalaPresentationCompiler 
0 commit comments