Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/path_transform.rs')
-rw-r--r--crates/ide-db/src/path_transform.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/crates/ide-db/src/path_transform.rs b/crates/ide-db/src/path_transform.rs
index 7cf8dff48b..101046cf54 100644
--- a/crates/ide-db/src/path_transform.rs
+++ b/crates/ide-db/src/path_transform.rs
@@ -415,16 +415,18 @@ impl Ctx<'_> {
editor.replace(path.syntax(), qualified.clone().syntax());
} else if let Some(path_ty) = ast::PathType::cast(parent) {
let old = path_ty.syntax();
+ let needs_paren = old.parent().is_some_and(|it| subst.needs_parens_in(&it));
+ let subst =
+ if needs_paren { make.ty_paren(subst.clone()) } else { subst.clone() };
if old.parent().is_some() {
- editor.replace(old, subst.clone().syntax());
+ editor.replace(old, subst.syntax());
} else {
let start = path_ty.syntax().first_child().map(NodeOrToken::Node)?;
let end = path_ty.syntax().last_child().map(NodeOrToken::Node)?;
editor.replace_all(
start..=end,
subst
- .clone()
.syntax()
.children()
.map(NodeOrToken::Node)