chore: add test case for assoc func fix in unresolved_method diagnostic

This commit is contained in:
Young-Flash 2023-12-12 20:32:13 +08:00 committed by Young-Flash
parent 69410bb488
commit 481fab1591

View file

@ -202,6 +202,85 @@ fn assoc_func_fix(ctx: &DiagnosticsContext<'_>, d: &hir::UnresolvedMethodCall) -
mod tests { mod tests {
use crate::tests::{check_diagnostics, check_fix}; 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] #[test]
fn smoke_test() { fn smoke_test() {
check_diagnostics( check_diagnostics(