Skip to content

Commit b837ea4

Browse files
committed
Don't emit edits for postfix adjustment hints
1 parent 47d2359 commit b837ea4

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

crates/ide/src/inlay_hints/adjustment.rs

+28-23
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ pub(super) fn hints(
104104
};
105105
let iter: &mut dyn Iterator<Item = _> = iter.as_mut().either(|it| it as _, |it| it as _);
106106

107+
let mut allow_edit = !postfix;
107108
for Adjustment { source, target, kind } in iter {
108109
if source == target {
109110
cov_mark::hit!(same_type_adjustment);
@@ -113,6 +114,7 @@ pub(super) fn hints(
113114
// FIXME: Add some nicer tooltips to each of these
114115
let (text, coercion) = match kind {
115116
Adjust::NeverToAny if config.adjustment_hints == AdjustmentHints::Always => {
117+
allow_edit = false;
116118
("<never-to-any>", "never to any")
117119
}
118120
Adjust::Deref(None) => ("*", "dereference"),
@@ -133,6 +135,7 @@ pub(super) fn hints(
133135
// some of these could be represented via `as` casts, but that's not too nice and
134136
// handling everything as a prefix expr makes the `(` and `)` insertion easier
135137
Adjust::Pointer(cast) if config.adjustment_hints == AdjustmentHints::Always => {
138+
allow_edit = false;
136139
match cast {
137140
PointerCast::ReifyFnPointer => {
138141
("<fn-item-to-fn-pointer>", "fn item to fn pointer")
@@ -179,30 +182,32 @@ pub(super) fn hints(
179182
if pre.is_none() && post.is_none() {
180183
return None;
181184
}
182-
let edit = {
183-
let mut b = TextEditBuilder::default();
184-
if let Some(pre) = &pre {
185-
b.insert(
186-
pre.range.start(),
187-
pre.label.parts.iter().map(|part| &*part.text).collect::<String>(),
188-
);
189-
}
190-
if let Some(post) = &post {
191-
b.insert(
192-
post.range.end(),
193-
post.label.parts.iter().map(|part| &*part.text).collect::<String>(),
194-
);
195-
}
196-
b.finish()
197-
};
198-
match (&mut pre, &mut post) {
199-
(Some(pre), Some(post)) => {
200-
pre.text_edit = Some(edit.clone());
201-
post.text_edit = Some(edit);
185+
if allow_edit {
186+
let edit = {
187+
let mut b = TextEditBuilder::default();
188+
if let Some(pre) = &pre {
189+
b.insert(
190+
pre.range.start(),
191+
pre.label.parts.iter().map(|part| &*part.text).collect::<String>(),
192+
);
193+
}
194+
if let Some(post) = &post {
195+
b.insert(
196+
post.range.end(),
197+
post.label.parts.iter().map(|part| &*part.text).collect::<String>(),
198+
);
199+
}
200+
b.finish()
201+
};
202+
match (&mut pre, &mut post) {
203+
(Some(pre), Some(post)) => {
204+
pre.text_edit = Some(edit.clone());
205+
post.text_edit = Some(edit);
206+
}
207+
(Some(pre), None) => pre.text_edit = Some(edit),
208+
(None, Some(post)) => post.text_edit = Some(edit),
209+
(None, None) => (),
202210
}
203-
(Some(pre), None) => pre.text_edit = Some(edit),
204-
(None, Some(post)) => post.text_edit = Some(edit),
205-
(None, None) => (),
206211
}
207212
acc.extend(pre);
208213
acc.extend(post);

0 commit comments

Comments
 (0)