@@ -7,7 +7,6 @@ use ide_db::FxHashMap;
7
7
use paths:: { AbsPathBuf , Utf8Path , Utf8PathBuf } ;
8
8
use project_model:: ProjectJsonData ;
9
9
use serde:: { Deserialize , Serialize } ;
10
- use serde_json:: Value ;
11
10
use tracing:: { info_span, span:: EnteredSpan } ;
12
11
13
12
use crate :: command:: { CargoParser , CommandHandle } ;
@@ -121,18 +120,19 @@ struct DiscoverProjectParser;
121
120
122
121
impl CargoParser < DiscoverProjectMessage > for DiscoverProjectParser {
123
122
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
+ }
136
136
}
137
137
138
138
fn from_eof ( & self ) -> Option < DiscoverProjectMessage > {
0 commit comments