Skip to content

Commit

Permalink
chore: add test case for assoc func fix in unresolved_method diagno…
Browse files Browse the repository at this point in the history
…stic
  • Loading branch information
Young-Flash committed Dec 12, 2023
1 parent 15d8686 commit f9f3fd9
Showing 1 changed file with 79 additions and 0 deletions.
79 changes: 79 additions & 0 deletions crates/ide-diagnostics/src/handlers/unresolved_method.rs
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,85 @@ fn assoc_func_fix(ctx: &DiagnosticsContext<'_>, d: &hir::UnresolvedMethodCall) -
mod tests {
use crate::tests::{check_diagnostics, check_fix};

#[test]
fn test_assoc_func_fix() {
check_fix(
r#"
struct A {}
impl A {
fn hello() {}
}
fn main() {
let a = A{};
a.hello$0();
}
"#,
r#"
struct A {}
impl A {
fn hello() {}
}
fn main() {
let a = A{};
A::hello();
}
"#,
);
}

#[test]
fn test_assoc_func_diagnostic() {
check_diagnostics(
r#"
struct A {}
impl A {
fn hello() {}
}
fn main() {
let a = A{};
a.hello();
// ^^^^^^^^^ 💡 error: no method `hello` on type `A`, but an associated function with a similar name exists
}
"#,
);
}

#[test]
fn test_assoc_func_fix_with_generic() {
check_fix(
r#"
struct A<T, U> {
a: T,
b: U
}
impl<T, U> A<T, U> {
fn foo() {}
}
fn main() {
let a = A {a: 0, b: ""};
a.foo()$0;
}
"#,
r#"
struct A<T, U> {
a: T,
b: U
}
impl<T, U> A<T, U> {
fn foo() {}
}
fn main() {
let a = A {a: 0, b: ""};
A::<i32, &str>::foo();
}
"#,
);
}

#[test]
fn smoke_test() {
check_diagnostics(
Expand Down

0 comments on commit f9f3fd9

Please sign in to comment.