From 4267c38db1b822ad169f08acb38c689412fefff1 Mon Sep 17 00:00:00 2001 From: Jonas Schievink <jonasschievink@gmail.com> Date: Fri, 23 Jul 2021 20:20:23 +0200 Subject: [PATCH 1/2] Add tests for tuple struct field completion --- crates/ide_completion/src/completions/dot.rs | 36 +++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/crates/ide_completion/src/completions/dot.rs b/crates/ide_completion/src/completions/dot.rs index 6208b89728d..7d7942429ed 100644 --- a/crates/ide_completion/src/completions/dot.rs +++ b/crates/ide_completion/src/completions/dot.rs @@ -213,6 +213,23 @@ fn foo(a: lib::m::A) { a.$0 } "#]], ); + check( + r#" +//- /lib.rs crate:lib new_source_root:library +pub mod m { + pub struct A( + i32, + pub f64, + ); +} +//- /main.rs crate:main deps:lib new_source_root:local +fn foo(a: lib::m::A) { a.$0 } +"#, + expect![[r#" + fd 1 f64 + "#]], + ); + check( r#" //- /lib.rs crate:lib new_source_root:local @@ -405,7 +422,24 @@ fn foo() { fd 0 i32 fd 1 f64 "#]], - ) + ); + } + + #[test] + fn test_tuple_struct_field_completion() { + check( + r#" +struct S(i32, f64); +fn foo() { + let b = S(0, 3.14); + b.$0 +} +"#, + expect![[r#" + fd 0 i32 + fd 1 f64 + "#]], + ); } #[test] From c495a7374f93a357bd2299d9f1910e9f678dadce Mon Sep 17 00:00:00 2001 From: Jonas Schievink <jonasschievink@gmail.com> Date: Fri, 23 Jul 2021 20:20:41 +0200 Subject: [PATCH 2/2] Resolve tuple field visibility FIXME --- crates/ide_completion/src/completions/dot.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide_completion/src/completions/dot.rs b/crates/ide_completion/src/completions/dot.rs index 7d7942429ed..fc3f9005e70 100644 --- a/crates/ide_completion/src/completions/dot.rs +++ b/crates/ide_completion/src/completions/dot.rs @@ -69,7 +69,7 @@ fn complete_fields( f(Either::Left(field), ty); } for (i, ty) in receiver.tuple_fields(ctx.db).into_iter().enumerate() { - // FIXME: Handle visibility + // Tuple fields are always public (tuple struct fields are handled above). f(Either::Right(i), ty); } }