From d5c96672aac6fd4ac25474814879af2c04bd798b Mon Sep 17 00:00:00 2001 From: Dawer <7803845+iDawer@users.noreply.github.com> Date: Fri, 21 May 2021 11:27:41 +0500 Subject: Test `fill_match_arms` for lazy computation. This also adds `ide_assists::tests::check_assist_unresolved` function. --- crates/ide_assists/src/handlers/fill_match_arms.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'crates/ide_assists/src/handlers/fill_match_arms.rs') diff --git a/crates/ide_assists/src/handlers/fill_match_arms.rs b/crates/ide_assists/src/handlers/fill_match_arms.rs index 3532759bf..97435f021 100644 --- a/crates/ide_assists/src/handlers/fill_match_arms.rs +++ b/crates/ide_assists/src/handlers/fill_match_arms.rs @@ -105,6 +105,7 @@ pub(crate) fn fill_match_arms(acc: &mut Assists, ctx: &AssistContext) -> Option< let missing_pats = variants_of_enums .into_iter() .multi_cartesian_product() + .inspect(|_| cov_mark::hit!(fill_match_arms_lazy_computation)) .map(|variants| { let patterns = variants.into_iter().filter_map(|variant| build_pat(ctx.db(), module, variant)); @@ -279,7 +280,9 @@ fn build_pat(db: &RootDatabase, module: hir::Module, var: ExtendedVariant) -> Op mod tests { use ide_db::helpers::FamousDefs; - use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target}; + use crate::tests::{ + check_assist, check_assist_not_applicable, check_assist_target, check_assist_unresolved, + }; use super::fill_match_arms; @@ -1058,4 +1061,19 @@ fn foo(t: Test) { }"#, ); } + + #[test] + fn lazy_computation() { + // Computing a single missing arm is enough to determine applicability of the assist. + cov_mark::check_count!(fill_match_arms_lazy_computation, 1); + check_assist_unresolved( + fill_match_arms, + r#" +enum A { One, Two, } +fn foo(tuple: (A, A)) { + match $0tuple {}; +} +"#, + ); + } } -- cgit v1.2.3