@@ -14,7 +14,6 @@ pub use tower_lsp::{LspService, Server};
14
14
pub trait LSPLang : Language + Eq + Send + Sync + ' static { }
15
15
impl < T > LSPLang for T where T : Language + Eq + Send + Sync + ' static { }
16
16
17
- #[ derive( Clone ) ]
18
17
struct VersionedAst < L : Language > {
19
18
version : i32 ,
20
19
root : AstGrep < L > ,
@@ -223,17 +222,16 @@ impl<L: LSPLang> Backend<L> {
223
222
}
224
223
async fn on_open ( & self , params : DidOpenTextDocumentParams ) -> Option < ( ) > {
225
224
let text_doc = params. text_document ;
226
- let uri = text_doc. uri . as_str ( ) ;
225
+ let uri = text_doc. uri . as_str ( ) . to_owned ( ) ;
227
226
let text = text_doc. text ;
228
227
let lang = Self :: infer_lang_from_uri ( & text_doc. uri ) ?;
229
228
let root = AstGrep :: new ( text, lang) ;
230
229
let versioned = VersionedAst {
231
230
version : text_doc. version ,
232
231
root,
233
232
} ;
234
- let copied = versioned . clone ( ) ;
233
+ self . publish_diagnostics ( text_doc . uri , & versioned ) . await ;
235
234
self . map . insert ( uri. to_owned ( ) , versioned) ; // don't lock dashmap
236
- self . publish_diagnostics ( text_doc. uri , & copied) . await ;
237
235
Some ( ( ) )
238
236
}
239
237
async fn on_change ( & self , params : DidChangeTextDocumentParams ) -> Option < ( ) > {
@@ -251,9 +249,7 @@ impl<L: LSPLang> Backend<L> {
251
249
version : text_doc. version ,
252
250
root,
253
251
} ;
254
- let copied = versioned. clone ( ) ;
255
- drop ( versioned) ; // don't lock dashmap
256
- self . publish_diagnostics ( text_doc. uri , & copied) . await ;
252
+ self . publish_diagnostics ( text_doc. uri , & versioned) . await ;
257
253
Some ( ( ) )
258
254
}
259
255
async fn on_close ( & self , params : DidCloseTextDocumentParams ) {
0 commit comments