Unnamed repository; edit this file 'description' to name the repository.
Report the incorrect payload when failing to deserialize lsp messages
Lukas Wirth 9 months ago
parent 8d75311 · commit ae8b69f
-rw-r--r--crates/ide/src/inlay_hints.rs4
-rw-r--r--crates/ide/src/inlay_hints/param_name.rs6
-rw-r--r--lib/lsp-server/src/msg.rs2
3 files changed, 8 insertions, 4 deletions
diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs
index 7a8514c47a..8c2a2f6f72 100644
--- a/crates/ide/src/inlay_hints.rs
+++ b/crates/ide/src/inlay_hints.rs
@@ -228,9 +228,9 @@ fn hints(
chaining::hints(hints, famous_defs, config, display_target, &expr);
adjustment::hints(hints, famous_defs, config, display_target, &expr);
match expr {
- ast::Expr::CallExpr(it) => param_name::hints(hints, famous_defs, config, ast::Expr::from(it)),
+ ast::Expr::CallExpr(it) => param_name::hints(hints, famous_defs, config, file_id, ast::Expr::from(it)),
ast::Expr::MethodCallExpr(it) => {
- param_name::hints(hints, famous_defs, config, ast::Expr::from(it))
+ param_name::hints(hints, famous_defs, config, file_id, ast::Expr::from(it))
}
ast::Expr::ClosureExpr(it) => {
closure_captures::hints(hints, famous_defs, config, it.clone());
diff --git a/crates/ide/src/inlay_hints/param_name.rs b/crates/ide/src/inlay_hints/param_name.rs
index ec0a4c46c7..7547077840 100644
--- a/crates/ide/src/inlay_hints/param_name.rs
+++ b/crates/ide/src/inlay_hints/param_name.rs
@@ -7,7 +7,7 @@
use std::iter::zip;
use either::Either;
-use hir::Semantics;
+use hir::{EditionedFileId, Semantics};
use ide_db::{RootDatabase, famous_defs::FamousDefs};
use stdx::to_lower_snake_case;
@@ -19,6 +19,7 @@ pub(super) fn hints(
acc: &mut Vec<InlayHint>,
FamousDefs(sema, krate): &FamousDefs<'_, '_>,
config: &InlayHintsConfig,
+ file_id: EditionedFileId,
expr: ast::Expr,
) -> Option<()> {
if !config.parameter_hints {
@@ -39,6 +40,9 @@ pub(super) fn hints(
.filter_map(|(p, arg)| {
// Only annotate hints for expressions that exist in the original file
let range = sema.original_range_opt(arg.syntax())?;
+ if range.file_id != file_id {
+ return None;
+ }
let param_name = p.name(sema.db)?;
Some((p, param_name, arg, range))
})
diff --git a/lib/lsp-server/src/msg.rs b/lib/lsp-server/src/msg.rs
index 399d674e41..b20337fdbf 100644
--- a/lib/lsp-server/src/msg.rs
+++ b/lib/lsp-server/src/msg.rs
@@ -175,7 +175,7 @@ impl Message {
let msg = match serde_json::from_str(&text) {
Ok(msg) => msg,
Err(e) => {
- return Err(invalid_data!("malformed LSP payload: {:?}", e));
+ return Err(invalid_data!("malformed LSP payload `{e:?}`: {text:?}"));
}
};