Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: Support generics in extract_function assist
This change attempts to resolve issue rust-lang#7637: Extract into Function does not create a generic function with constraints when extracting generic code. In `FunctionBody::analyze_container`, when the ancestor matches `ast::Fn`, we can perserve both the `generic_param_list` and the `where_clause`. These can then be included in the newly extracted function output via `format_function`. From what I can tell, the only other ancestor type that could potentially have a generic param list would be `ast::ClosureExpr`. In this case, we perserve the `generic_param_list`, but no where clause is ever present. In this initial implementation, only generic type parameters (and their associated where clauses) which are referenced in the extracted function body are copied to the new function signature. Const and Lifetime params are ignored for now. I don't believe this implementation will work in contexts where the generic parameters and where clauses are defined multiple layers above the function being extracted, such as with nested function declarations. Resolving this seems like another obvious improvement, but one that will potentially require more significant changes to the structure of `analyze_container` that I wasn't comfortable trying to make as a first change.
- Loading branch information