(&mut self)
| 645 | if !receiver_ok { |
| 646 | return Err(self.error(&format!( |
| 647 | "impl method `self` must be `{type_name}` or `{type_name}*`" |
| 648 | ))); |
| 649 | } |
| 650 | } |
| 651 | |
| 652 | // Owner generics apply to every function member; explicit member |
| 653 | // generics follow them. |
| 654 | let mut merged_generics = owner_generics.clone(); |
| 655 | for generic in generics { |
| 656 | if merged_generics.contains(&generic) { |
| 657 | return Err(self.error(&format!( |
| 658 | "method generic `{generic}` shadows an impl owner generic" |
| 659 | ))); |
| 660 | } |
| 661 | merged_generics.push(generic); |
| 662 | } |
| 663 | let mut merged_bounds = owner_bounds.clone(); |
| 664 | merged_bounds.extend(bounds); |
| 665 | |
| 666 | methods.push(Declaration { |
| 667 | decl: DeclNode::Function { |
| 668 | name: format!("{type_name}_{name}"), |
| 669 | generics: merged_generics, |
| 670 | bounds: merged_bounds, |
| 671 | params, |
no test coverage detected