From 05e74a4edc2546ea9d4ac3be44d27ba2e1da277a Mon Sep 17 00:00:00 2001 From: Filipe Rodrigues Date: Mon, 19 Sep 2022 02:01:43 +0100 Subject: [PATCH] Improved implementation of `expand_target`. --- src/build/expand_target.rs | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/build/expand_target.rs b/src/build/expand_target.rs index c3f8648..f68b8cc 100644 --- a/src/build/expand_target.rs +++ b/src/build/expand_target.rs @@ -7,38 +7,30 @@ use { anyhow::Context, }; -/// Expands a target +/// Expands a target expression pub fn expand_target( target: &Target, mut global_expr_visitor: expand_expr::GlobalVisitor, ) -> Result, anyhow::Error> { let target = match target { - // If we got a file, check which rule can make it - Target::File { file } => { - // Expand the file - let file = self::expand_expr_string(file, &mut global_expr_visitor) - .with_context(|| format!("Unable to expand expression {file:?}"))?; - - Target::File { file } + Target::File { file } => Target::File { + file: self::expand_expr_string(file, &mut global_expr_visitor) + .with_context(|| format!("Unable to expand file name {file:?}"))?, }, - Target::Rule { rule, pats } => { - // Expand the rule - let rule = self::expand_expr_string(rule, &mut global_expr_visitor) - .with_context(|| format!("Unable to expand expression {rule:?}"))?; - - // Expand all patterns - let pats = pats + Target::Rule { rule, pats } => Target::Rule { + rule: self::expand_expr_string(rule, &mut global_expr_visitor) + .with_context(|| format!("Unable to expand rule name {rule:?}"))?, + pats: pats .iter() .map(|(pat, expr)| { - let value = self::expand_expr_string(expr, &mut global_expr_visitor) - .with_context(|| format!("Unable to expand expression {expr:?}"))?; - - Ok((pat.to_owned(), value)) + Ok(( + pat.to_owned(), + self::expand_expr_string(expr, &mut global_expr_visitor) + .with_context(|| format!("Unable to expand pattern value {expr:?}"))?, + )) }) - .collect::>()?; - - Target::Rule { rule, pats } + .collect::>()?, }, };