Skip to content

Commit bfcef25

Browse files
authored
Merge pull request #19684 from darichey/error-parse-discover
Always error when failed to parse DiscoverProjectMessage
2 parents dd41cda + 0a3e003 commit bfcef25

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

crates/rust-analyzer/src/discover.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use ide_db::FxHashMap;
77
use paths::{AbsPathBuf, Utf8Path, Utf8PathBuf};
88
use project_model::ProjectJsonData;
99
use serde::{Deserialize, Serialize};
10-
use serde_json::Value;
1110
use tracing::{info_span, span::EnteredSpan};
1211

1312
use crate::command::{CargoParser, CommandHandle};
@@ -121,18 +120,19 @@ struct DiscoverProjectParser;
121120

122121
impl 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

Comments
 (0)