File tree Expand file tree Collapse file tree 2 files changed +12
-3
lines changed Expand file tree Collapse file tree 2 files changed +12
-3
lines changed Original file line number Diff line number Diff line change @@ -44,6 +44,8 @@ pub struct LspError {
4444}
4545
4646impl LspError {
47+ pub const UNKNOWN_FILE : i32 = -32900 ;
48+
4749 pub fn new ( code : i32 , message : String ) -> LspError {
4850 LspError { code, message }
4951 }
@@ -805,7 +807,14 @@ where
805807 let response = match result {
806808 Ok ( resp) => Response :: new_ok ( id, & resp) ,
807809 Err ( e) => match e. downcast :: < LspError > ( ) {
808- Ok ( lsp_error) => Response :: new_err ( id, lsp_error. code , lsp_error. message ) ,
810+ Ok ( lsp_error) => {
811+ if lsp_error. code == LspError :: UNKNOWN_FILE {
812+ // Work-around for https://github.com/rust-analyzer/rust-analyzer/issues/1521
813+ Response :: new_ok ( id, ( ) )
814+ } else {
815+ Response :: new_err ( id, lsp_error. code , lsp_error. message )
816+ }
817+ }
809818 Err ( e) => {
810819 if is_canceled ( & e) {
811820 Response :: new_err (
Original file line number Diff line number Diff line change @@ -9,7 +9,6 @@ use std::{
99} ;
1010
1111use crossbeam_channel:: { unbounded, Receiver } ;
12- use lsp_server:: ErrorCode ;
1312use lsp_types:: Url ;
1413use parking_lot:: RwLock ;
1514use ra_cargo_watch:: { url_from_path_with_drive_lowercasing, CheckOptions , CheckWatcher } ;
@@ -252,8 +251,9 @@ impl WorldSnapshot {
252251 let path = uri. to_file_path ( ) . map_err ( |( ) | format ! ( "invalid uri: {}" , uri) ) ?;
253252 let file = self . vfs . read ( ) . path2file ( & path) . ok_or_else ( || {
254253 // Show warning as this file is outside current workspace
254+ // FIXME: just handle such files, and remove `LspError::UNKNOWN_FILE`.
255255 LspError {
256- code : ErrorCode :: InvalidRequest as i32 ,
256+ code : LspError :: UNKNOWN_FILE ,
257257 message : "Rust file outside current workspace is not supported yet." . to_string ( ) ,
258258 }
259259 } ) ?;
You can’t perform that action at this time.
0 commit comments