Skip to content

Commit 6100c2c

Browse files
committed
Add a check_assist_* overload and move tests under assists
1 parent ebe8c48 commit 6100c2c

File tree

3 files changed

+66
-37
lines changed

3 files changed

+66
-37
lines changed

src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_delegate_methods.rs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,9 @@ pub(crate) fn generate_delegate_methods(acc: &mut Assists, ctx: &AssistContext<'
217217

218218
#[cfg(test)]
219219
mod tests {
220-
use crate::tests::{check_assist, check_assist_not_applicable};
220+
use crate::tests::{
221+
check_assist, check_assist_not_applicable, check_assist_not_applicable_no_grouping,
222+
};
221223

222224
use super::*;
223225

@@ -721,4 +723,21 @@ impl Person {
721723
"#,
722724
);
723725
}
726+
727+
#[test]
728+
fn delegate_method_skipped_when_no_grouping() {
729+
check_assist_not_applicable_no_grouping(
730+
generate_delegate_methods,
731+
r#"
732+
struct Age(u8);
733+
impl Age {
734+
fn age(&self) -> u8 {
735+
self.0
736+
}
737+
}
738+
struct Person {
739+
ag$0e: Age,
740+
}"#,
741+
);
742+
}
724743
}

src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_delegate_trait.rs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,9 @@ fn qualified_path(qual_path_ty: ast::Path, path_expr_seg: ast::Path) -> ast::Pat
792792
mod test {
793793

794794
use super::*;
795-
use crate::tests::{check_assist, check_assist_not_applicable};
795+
use crate::tests::{
796+
check_assist, check_assist_not_applicable, check_assist_not_applicable_no_grouping,
797+
};
796798

797799
#[test]
798800
fn test_tuple_struct_basic() {
@@ -1840,4 +1842,33 @@ impl<D, T: C<A>> C<D> for B<T> {
18401842
"#,
18411843
)
18421844
}
1845+
1846+
#[test]
1847+
fn delegate_trait_skipped_when_no_grouping() {
1848+
check_assist_not_applicable_no_grouping(
1849+
generate_delegate_trait,
1850+
r#"
1851+
trait SomeTrait {
1852+
type T;
1853+
fn fn_(arg: u32) -> u32;
1854+
fn method_(&mut self) -> bool;
1855+
}
1856+
struct A;
1857+
impl SomeTrait for A {
1858+
type T = u32;
1859+
1860+
fn fn_(arg: u32) -> u32 {
1861+
42
1862+
}
1863+
1864+
fn method_(&mut self) -> bool {
1865+
false
1866+
}
1867+
}
1868+
struct B {
1869+
a$0 : A,
1870+
}
1871+
"#,
1872+
);
1873+
}
18431874
}

src/tools/rust-analyzer/crates/ide-assists/src/tests.rs

Lines changed: 14 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,20 @@ pub(crate) fn check_assist_not_applicable_for_import_one(
195195
);
196196
}
197197

198+
#[track_caller]
199+
pub(crate) fn check_assist_not_applicable_no_grouping(
200+
assist: Handler,
201+
#[rust_analyzer::rust_fixture] ra_fixture: &str,
202+
) {
203+
check_with_config(
204+
TEST_CONFIG_NO_GROUPING,
205+
assist,
206+
ra_fixture,
207+
ExpectedResult::NotApplicable,
208+
None,
209+
);
210+
}
211+
198212
/// Check assist in unresolved state. Useful to check assists for lazy computation.
199213
#[track_caller]
200214
pub(crate) fn check_assist_unresolved(
@@ -368,41 +382,6 @@ fn labels(assists: &[Assist]) -> String {
368382
labels.into_iter().collect::<String>()
369383
}
370384

371-
#[test]
372-
fn long_groups_are_skipped_under_skip_resolve_strategy() {
373-
let before = r#"
374-
trait SomeTrait {
375-
type T;
376-
fn fn_(arg: u32) -> u32;
377-
fn method_(&mut self) -> bool;
378-
}
379-
struct A;
380-
impl SomeTrait for A {
381-
type T = u32;
382-
383-
fn fn_(arg: u32) -> u32 {
384-
42
385-
}
386-
387-
fn method_(&mut self) -> bool {
388-
false
389-
}
390-
}
391-
struct B {
392-
a$0 : A,
393-
}
394-
"#;
395-
let (before_cursor_pos, before) = extract_offset(before);
396-
let (db, file_id) = with_single_file(&before);
397-
let frange = FileRange { file_id, range: TextRange::empty(before_cursor_pos) };
398-
let res = assists(&db, &TEST_CONFIG, AssistResolveStrategy::None, frange.into());
399-
assert!(res.iter().map(|a| &a.id).any(|a| { a.0 == "generate_delegate_trait" }));
400-
401-
let limited =
402-
assists(&db, &TEST_CONFIG_NO_GROUPING, AssistResolveStrategy::None, frange.into());
403-
assert!(!limited.iter().map(|a| &a.id).any(|a| { a.0 == "generate_delegate_trait" }));
404-
}
405-
406385
#[test]
407386
fn assist_order_field_struct() {
408387
let before = "struct Foo { $0bar: u32 }";

0 commit comments

Comments
 (0)