Merge pull request #20255 from A4-Tacks/deref-intranstive
Fix ide-assist: generate Deref transitive
This commit is contained in:
commit
fa0320d077
2 changed files with 25 additions and 2 deletions
|
|
@ -10,7 +10,7 @@ use syntax::{
|
|||
use crate::{
|
||||
AssistId,
|
||||
assist_context::{AssistContext, Assists, SourceChangeBuilder},
|
||||
utils::generate_trait_impl_text,
|
||||
utils::generate_trait_impl_text_intransitive,
|
||||
};
|
||||
|
||||
// Assist: generate_deref
|
||||
|
|
@ -150,7 +150,7 @@ fn generate_edit(
|
|||
),
|
||||
};
|
||||
let strukt_adt = ast::Adt::Struct(strukt);
|
||||
let deref_impl = generate_trait_impl_text(
|
||||
let deref_impl = generate_trait_impl_text_intransitive(
|
||||
&strukt_adt,
|
||||
&trait_path.display(db, edition).to_string(),
|
||||
&impl_code,
|
||||
|
|
@ -227,6 +227,28 @@ impl core::ops::Deref for B {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_generate_record_deref_with_generic() {
|
||||
check_assist(
|
||||
generate_deref,
|
||||
r#"
|
||||
//- minicore: deref
|
||||
struct A<T>($0T);
|
||||
"#,
|
||||
r#"
|
||||
struct A<T>(T);
|
||||
|
||||
impl<T> core::ops::Deref for A<T> {
|
||||
type Target = T;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_generate_record_deref_short_path() {
|
||||
check_assist(
|
||||
|
|
|
|||
|
|
@ -567,6 +567,7 @@ pub(crate) fn generate_impl_text(adt: &ast::Adt, code: &str) -> String {
|
|||
///
|
||||
/// This is useful for traits like `PartialEq`, since `impl<T> PartialEq for U<T>` often requires `T: PartialEq`.
|
||||
// FIXME: migrate remaining uses to `generate_trait_impl`
|
||||
#[allow(dead_code)]
|
||||
pub(crate) fn generate_trait_impl_text(adt: &ast::Adt, trait_text: &str, code: &str) -> String {
|
||||
generate_impl_text_inner(adt, Some(trait_text), true, code)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue