mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-15 17:28:09 +00:00
Don't say "a reference to" for Copy types
This changes the generate getter assist to not say "a reference to" in the documentation stub if the type is Copy, as the getter does not return a reference.
This commit is contained in:
parent
d9b2291f54
commit
76b50f14f7
2 changed files with 21 additions and 6 deletions
|
@ -112,8 +112,12 @@ pub(crate) fn generate_getter_impl(
|
|||
}
|
||||
|
||||
let vis = strukt.visibility().map_or(String::new(), |v| format!("{} ", v));
|
||||
let (ty, body) = if mutable {
|
||||
(format!("&mut {}", field_ty), format!("&mut self.{}", field_name))
|
||||
let (ty, body, description) = if mutable {
|
||||
(
|
||||
format!("&mut {}", field_ty),
|
||||
format!("&mut self.{}", field_name),
|
||||
"a mutable reference to ",
|
||||
)
|
||||
} else {
|
||||
let famous_defs = &FamousDefs(&ctx.sema, ctx.sema.scope(field_ty.syntax()).krate());
|
||||
ctx.sema
|
||||
|
@ -124,18 +128,25 @@ pub(crate) fn generate_getter_impl(
|
|||
(
|
||||
conversion.convert_type(ctx.db()),
|
||||
conversion.getter(field_name.to_string()),
|
||||
if conversion.is_copy() { "" } else { "a reference to " },
|
||||
)
|
||||
})
|
||||
.unwrap_or_else(|| {
|
||||
(
|
||||
format!("&{}", field_ty),
|
||||
format!("&self.{}", field_name),
|
||||
"a reference to ",
|
||||
)
|
||||
})
|
||||
.unwrap_or_else(|| (format!("&{}", field_ty), format!("&self.{}", field_name)))
|
||||
};
|
||||
|
||||
format_to!(
|
||||
buf,
|
||||
" /// Get a {}reference to the {}'s {}.
|
||||
" /// Get {}the {}'s {}.
|
||||
{}fn {}(&{}self) -> {} {{
|
||||
{}
|
||||
}}",
|
||||
mutable.then(|| "mutable ").unwrap_or_default(),
|
||||
description,
|
||||
to_lower_snake_case(&strukt_name.to_string()).replace('_', " "),
|
||||
fn_name.trim_end_matches("_mut").replace('_', " "),
|
||||
vis,
|
||||
|
@ -349,7 +360,7 @@ struct S { foo: $0bool }
|
|||
struct S { foo: bool }
|
||||
|
||||
impl S {
|
||||
/// Get a reference to the s's foo.
|
||||
/// Get the s's foo.
|
||||
fn $0foo(&self) -> bool {
|
||||
self.foo
|
||||
}
|
||||
|
|
|
@ -572,6 +572,10 @@ impl ReferenceConversion {
|
|||
| ReferenceConversionType::Result => format!("self.{}.as_ref()", field_name),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn is_copy(&self) -> bool {
|
||||
matches!(self.conversion, ReferenceConversionType::Copy)
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME: It should return a new hir::Type, but currently constructing new types is too cumbersome
|
||||
|
|
Loading…
Reference in a new issue