Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/incorrect_generics_len.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/incorrect_generics_len.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/ide-diagnostics/src/handlers/incorrect_generics_len.rs b/crates/ide-diagnostics/src/handlers/incorrect_generics_len.rs
index 25220704e0..2a31a41fbc 100644
--- a/crates/ide-diagnostics/src/handlers/incorrect_generics_len.rs
+++ b/crates/ide-diagnostics/src/handlers/incorrect_generics_len.rs
@@ -43,6 +43,8 @@ struct Bar<T, U>(T, U);
fn foo() {
let _ = Bar::<()>;
// ^^^^^^ error: this struct takes 2 generic arguments but 1 generic argument was supplied
+ // ^^^^^^^^^ error: type annotations needed
+ // | full type: `fn Bar<(), {unknown}>((), {unknown}) -> Bar<(), {unknown}>`
}
"#,
@@ -51,6 +53,10 @@ fn foo() {
#[test]
fn enum_variant() {
+ // FIXME: We should not have a "type annotations needed" error here, but to do that
+ // we'll need to have access to the `InferenceContext` in `TyLoweringContext`, to
+ // generate the infer var with a dummy span (instead of inserting it after the fact
+ // with a non-dummy span).
check_diagnostics(
r#"
enum Enum<T, U> {
@@ -60,8 +66,12 @@ enum Enum<T, U> {
fn foo() {
let _ = Enum::<()>::Variant;
// ^^^^^^ error: this enum takes 2 generic arguments but 1 generic argument was supplied
+ // ^^^^^^^^^^^^^^^^^^^ error: type annotations needed
+ // | full type: `fn Variant<(), {unknown}>((), {unknown}) -> Enum<(), {unknown}>`
let _ = Enum::Variant::<()>;
// ^^^^^^ error: this enum takes 2 generic arguments but 1 generic argument was supplied
+ // ^^^^^^^^^^^^^^^^^^^ error: type annotations needed
+ // | full type: `fn Variant<(), {unknown}>((), {unknown}) -> Enum<(), {unknown}>`
}
"#,
@@ -127,6 +137,8 @@ struct Bar<T, const N: usize>(T);
fn bar() {
let _ = Bar::<()>;
// ^^^^^^ error: this struct takes 2 generic arguments but 1 generic argument was supplied
+ // ^^^^^^^^^ error: type annotations needed
+ // | full type: `fn Bar<(), _>(()) -> Bar<(), _>`
}
"#,
);