Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/inlay_hints/implicit_drop.rs')
-rw-r--r--crates/ide/src/inlay_hints/implicit_drop.rs38
1 files changed, 30 insertions, 8 deletions
diff --git a/crates/ide/src/inlay_hints/implicit_drop.rs b/crates/ide/src/inlay_hints/implicit_drop.rs
index 27c7c3d498..390139d214 100644
--- a/crates/ide/src/inlay_hints/implicit_drop.rs
+++ b/crates/ide/src/inlay_hints/implicit_drop.rs
@@ -54,7 +54,8 @@ pub(super) fn hints(
};
let range = match terminator.span {
MirSpan::ExprId(e) => match source_map.expr_syntax(e) {
- Ok(s) => {
+ // don't show inlay hint for macro
+ Ok(s) if !s.file_id.is_macro() => {
let root = &s.file_syntax(sema.db);
let expr = s.value.to_node(root);
let expr = expr.syntax();
@@ -69,11 +70,11 @@ pub(super) fn hints(
}
}
}
- Err(_) => continue,
+ _ => continue,
},
MirSpan::PatId(p) => match source_map.pat_syntax(p) {
- Ok(s) => s.value.text_range(),
- Err(_) => continue,
+ Ok(s) if !s.file_id.is_macro() => s.value.text_range(),
+ _ => continue,
},
MirSpan::BindingId(b) => {
match source_map
@@ -81,13 +82,13 @@ pub(super) fn hints(
.iter()
.find_map(|p| source_map.pat_syntax(*p).ok())
{
- Some(s) => s.value.text_range(),
- None => continue,
+ Some(s) if !s.file_id.is_macro() => s.value.text_range(),
+ _ => continue,
}
}
MirSpan::SelfParam => match source_map.self_param_syntax() {
- Some(s) => s.value.text_range(),
- None => continue,
+ Some(s) if !s.file_id.is_macro() => s.value.text_range(),
+ _ => continue,
},
MirSpan::Unknown => continue,
};
@@ -231,4 +232,25 @@ mod tests {
"#,
);
}
+
+ #[test]
+ fn ignore_inlay_hint_for_macro_call() {
+ check_with_config(
+ ONLY_DROP_CONFIG,
+ r#"
+ struct X;
+
+ macro_rules! my_macro {
+ () => {{
+ let bbb = X;
+ bbb
+ }};
+ }
+
+ fn test() -> X {
+ my_macro!()
+ }
+"#,
+ );
+ }
}