mirror of
https://github.com/denoland/deno.git
synced 2024-12-23 15:49:44 -05:00
fix(lsp): restart TS language service when caching dependencies (#14979)
This commit is contained in:
parent
b7bc221564
commit
34eaad4155
4 changed files with 31 additions and 3 deletions
|
@ -2814,9 +2814,16 @@ impl Inner {
|
|||
self.client.show_message(MessageType::WARNING, err).await;
|
||||
}
|
||||
|
||||
// now that we have dependencies loaded, we need to re-analyze them and
|
||||
// invalidate some diagnostics
|
||||
self.diagnostics_server.invalidate(&[referrer]);
|
||||
// Now that we have dependencies loaded, we need to re-analyze all the files.
|
||||
// For that we're invalidating all the existing diagnostics and restarting
|
||||
// the language server for TypeScript (as it might hold to some stale
|
||||
// documents).
|
||||
self.diagnostics_server.invalidate_all();
|
||||
let _: bool = self
|
||||
.ts_server
|
||||
.request(self.snapshot(), tsc::RequestMethod::Restart)
|
||||
.await
|
||||
.unwrap();
|
||||
self.send_diagnostics_update();
|
||||
self.send_testing_update();
|
||||
|
||||
|
|
|
@ -2871,6 +2871,9 @@ pub enum RequestMethod {
|
|||
ProvideCallHierarchyIncomingCalls((ModuleSpecifier, u32)),
|
||||
/// Resolve outgoing call hierarchy items for a specific position.
|
||||
ProvideCallHierarchyOutgoingCalls((ModuleSpecifier, u32)),
|
||||
|
||||
// Special request, used only internally by the LSP
|
||||
Restart,
|
||||
}
|
||||
|
||||
impl RequestMethod {
|
||||
|
@ -3084,6 +3087,10 @@ impl RequestMethod {
|
|||
"position": position
|
||||
})
|
||||
}
|
||||
RequestMethod::Restart => json!({
|
||||
"id": id,
|
||||
"method": "restart",
|
||||
}),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -589,11 +589,16 @@ delete Object.prototype.__proto__;
|
|||
*/
|
||||
function serverRequest({ id, ...request }) {
|
||||
debug(`serverRequest()`, { id, ...request });
|
||||
|
||||
// reset all memoized source files names
|
||||
scriptFileNamesCache = undefined;
|
||||
// evict all memoized source file versions
|
||||
scriptVersionCache.clear();
|
||||
switch (request.method) {
|
||||
case "restart": {
|
||||
serverRestart();
|
||||
return respond(id, true);
|
||||
}
|
||||
case "configure": {
|
||||
const { options, errors } = ts
|
||||
.convertCompilerOptionsFromJson(request.compilerOptions, "");
|
||||
|
@ -918,6 +923,11 @@ delete Object.prototype.__proto__;
|
|||
debug("serverInit()");
|
||||
}
|
||||
|
||||
function serverRestart() {
|
||||
languageService = ts.createLanguageService(host);
|
||||
debug("serverRestart()");
|
||||
}
|
||||
|
||||
let hasStarted = false;
|
||||
|
||||
/** Startup the runtime environment, setting various flags.
|
||||
|
|
4
cli/tsc/compiler.d.ts
vendored
4
cli/tsc/compiler.d.ts
vendored
|
@ -251,4 +251,8 @@ declare global {
|
|||
specifier: string;
|
||||
position: number;
|
||||
}
|
||||
|
||||
interface Restart {
|
||||
method: "restart";
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue