Skip to content

Commit

Permalink
Auto merge of rust-lang#18073 - alibektas:immutable_tree_panics, r=ln…
Browse files Browse the repository at this point in the history
…icola

fix: Immutable tree panic in `generate_delegate_trait`

fixes rust-lang#17835
  • Loading branch information
bors committed Sep 13, 2024
2 parents 50b7185 + bd085df commit 004d646
Showing 1 changed file with 41 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -282,8 +282,11 @@ fn generate_impl(
ai.assoc_items()
.filter(|item| matches!(item, AssocItem::MacroCall(_)).not())
.for_each(|item| {
let assoc =
process_assoc_item(item, qualified_path_type.clone(), field_name);
let assoc = process_assoc_item(
item.clone_for_update(),
qualified_path_type.clone(),
field_name,
);
if let Some(assoc) = assoc {
delegate_assoc_items.add_item(assoc);
}
Expand Down Expand Up @@ -1797,4 +1800,40 @@ impl T for B {
"#,
);
}

#[test]
fn assoc_items_attributes_mutably_cloned() {
check_assist(
generate_delegate_trait,
r#"
pub struct A;
pub trait C<D> {
#[allow(clippy::dead_code)]
fn a_funk(&self) -> &D;
}
pub struct B<T: C<A>> {
has_dr$0ain: T,
}
"#,
r#"
pub struct A;
pub trait C<D> {
#[allow(clippy::dead_code)]
fn a_funk(&self) -> &D;
}
pub struct B<T: C<A>> {
has_drain: T,
}
impl<D, T: C<A>> C<D> for B<T> {
#[allow(clippy::dead_code)]
fn a_funk(&self) -> &D {
<T as C<D>>::a_funk(&self.has_drain)
}
}
"#,
)
}
}

0 comments on commit 004d646

Please sign in to comment.