Skip to content

Commit 14ec120

Browse files
committed
fix: Fix proc-macro server crashing when parsing a non-lexable string into a TokenStream
1 parent 3a14e30 commit 14ec120

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,13 @@ impl server::TokenStream for RaSpanServer {
142142
stream.is_empty()
143143
}
144144
fn from_str(&mut self, src: &str) -> Self::TokenStream {
145-
Self::TokenStream::from_str(src, self.call_site).expect("cannot parse string")
145+
Self::TokenStream::from_str(src, self.call_site).unwrap_or_else(|e| {
146+
Self::TokenStream::from_str(
147+
&format!("compile_error!(\"failed to parse str to token stream: {e}\")"),
148+
self.call_site,
149+
)
150+
.unwrap()
151+
})
146152
}
147153
fn to_string(&mut self, stream: &Self::TokenStream) -> String {
148154
stream.to_string()

src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/token_id.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,13 @@ impl server::TokenStream for TokenIdServer {
131131
stream.is_empty()
132132
}
133133
fn from_str(&mut self, src: &str) -> Self::TokenStream {
134-
Self::TokenStream::from_str(src, self.call_site).expect("cannot parse string")
134+
Self::TokenStream::from_str(src, self.call_site).unwrap_or_else(|e| {
135+
Self::TokenStream::from_str(
136+
&format!("compile_error!(\"failed to parse str to token stream: {e}\")"),
137+
self.call_site,
138+
)
139+
.unwrap()
140+
})
135141
}
136142
fn to_string(&mut self, stream: &Self::TokenStream) -> String {
137143
stream.to_string()

src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/token_stream.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ pub(super) mod token_stream {
131131
call_site,
132132
src,
133133
)
134-
.ok_or("lexing error")?;
134+
.ok_or_else(|| format!("lexing error: {src}"))?;
135135

136136
Ok(TokenStream::with_subtree(subtree))
137137
}

0 commit comments

Comments
 (0)