@@ -7,7 +7,6 @@ use ide_db::FxHashMap;
77use paths:: { AbsPathBuf , Utf8Path , Utf8PathBuf } ;
88use project_model:: ProjectJsonData ;
99use serde:: { Deserialize , Serialize } ;
10- use serde_json:: Value ;
1110use tracing:: { info_span, span:: EnteredSpan } ;
1211
1312use crate :: command:: { CargoParser , CommandHandle } ;
@@ -121,18 +120,19 @@ struct DiscoverProjectParser;
121120
122121impl CargoParser < DiscoverProjectMessage > for DiscoverProjectParser {
123122 fn from_line ( & self , line : & str , _error : & mut String ) -> Option < DiscoverProjectMessage > {
124- // can the line even be deserialized as JSON?
125- let Ok ( data) = serde_json:: from_str :: < Value > ( line) else {
126- let err = DiscoverProjectData :: Error { error : line. to_owned ( ) , source : None } ;
127- return Some ( DiscoverProjectMessage :: new ( err) ) ;
128- } ;
129-
130- let Ok ( data) = serde_json:: from_value :: < DiscoverProjectData > ( data) else {
131- return None ;
132- } ;
133-
134- let msg = DiscoverProjectMessage :: new ( data) ;
135- Some ( msg)
123+ match serde_json:: from_str :: < DiscoverProjectData > ( line) {
124+ Ok ( data) => {
125+ let msg = DiscoverProjectMessage :: new ( data) ;
126+ Some ( msg)
127+ }
128+ Err ( err) => {
129+ let err = DiscoverProjectData :: Error {
130+ error : format ! ( "{:#?}\n {}" , err, line) ,
131+ source : None ,
132+ } ;
133+ Some ( DiscoverProjectMessage :: new ( err) )
134+ }
135+ }
136136 }
137137
138138 fn from_eof ( & self ) -> Option < DiscoverProjectMessage > {
0 commit comments