Merge #9209
9209: Don't suggest Remove unused param in trait impls r=Veykril a=Maan2003 See the added test for description Co-authored-by: Maan2003 <manmeetmann2003@gmail.com>
This commit is contained in:
commit
de9e989cf4
@ -37,8 +37,20 @@ pub(crate) fn remove_unused_param(acc: &mut Assists, ctx: &AssistContext) -> Opt
|
|||||||
_ => return None,
|
_ => return None,
|
||||||
};
|
};
|
||||||
let func = param.syntax().ancestors().find_map(ast::Fn::cast)?;
|
let func = param.syntax().ancestors().find_map(ast::Fn::cast)?;
|
||||||
let param_position = func.param_list()?.params().position(|it| it == param)?;
|
|
||||||
|
|
||||||
|
// check if fn is in impl Trait for ..
|
||||||
|
if func
|
||||||
|
.syntax()
|
||||||
|
.parent() // AssocItemList
|
||||||
|
.and_then(|x| x.parent())
|
||||||
|
.and_then(ast::Impl::cast)
|
||||||
|
.map_or(false, |imp| imp.trait_().is_some())
|
||||||
|
{
|
||||||
|
cov_mark::hit!(trait_impl);
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
let param_position = func.param_list()?.params().position(|it| it == param)?;
|
||||||
let fn_def = {
|
let fn_def = {
|
||||||
let func = ctx.sema.to_def(&func)?;
|
let func = ctx.sema.to_def(&func)?;
|
||||||
Definition::ModuleDef(func.into())
|
Definition::ModuleDef(func.into())
|
||||||
@ -253,6 +265,22 @@ fn main() { foo(9, 2) }
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn trait_impl() {
|
||||||
|
cov_mark::check!(trait_impl);
|
||||||
|
check_assist_not_applicable(
|
||||||
|
remove_unused_param,
|
||||||
|
r#"
|
||||||
|
trait Trait {
|
||||||
|
fn foo(x: i32);
|
||||||
|
}
|
||||||
|
impl Trait for () {
|
||||||
|
fn foo($0x: i32) {}
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn remove_across_files() {
|
fn remove_across_files() {
|
||||||
check_assist(
|
check_assist(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user