diff options
Diffstat (limited to 'crates/rebel/src/context.rs')
-rw-r--r-- | crates/rebel/src/context.rs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/crates/rebel/src/context.rs b/crates/rebel/src/context.rs index bf16546..b8090d1 100644 --- a/crates/rebel/src/context.rs +++ b/crates/rebel/src/context.rs @@ -437,19 +437,25 @@ impl Context { Ok(Cow::Owned(ret)) } - fn parent_ref<'ctx>(&'ctx self, dep: &'ctx ParentDep, args: &TaskArgs) -> Result<TaskRef> { - let id = dep.dep.id.as_ref(); + fn parent_ref<'ctx>( + &'ctx self, + dep_of: TaskIDRef<'ctx>, + dep: &'ctx ParentDep, + args: &TaskArgs, + ) -> Result<TaskRef> { + let id = dep.dep.id(dep_of.recipe); let mapped_args = Context::map_args(id, &dep.dep.args, args, false)?; self.task_ref(id, mapped_args.as_ref()) } pub fn output_ref<'ctx>( &'ctx self, + dep_of: TaskIDRef<'ctx>, dep: &'ctx OutputDep, args: &TaskArgs, build_dep: bool, ) -> Result<OutputRef<'ctx>> { - let id = dep.dep.id.as_ref(); + let id = dep.dep.id(dep_of.recipe); let mapped_args = Context::map_args(id, &dep.dep.args, args, build_dep)?; Ok(OutputRef { task: self.task_ref(id, mapped_args.as_ref())?, @@ -465,7 +471,7 @@ impl Context { let Some(parent) = &task.parent else { return Ok(None); }; - Some(self.parent_ref(parent, &task_ref.args)).transpose() + Some(self.parent_ref(task_ref.id, parent, &task_ref.args)).transpose() } fn ancestor_iter<'ctx>( @@ -504,7 +510,7 @@ impl Context { .build_depends .iter() .filter(|dep| allow_noinherit || !dep.noinherit) - .map(|dep| self.output_ref(dep, ¤t_ref.args, true)) + .map(|dep| self.output_ref(task_ref.id, dep, ¤t_ref.args, true)) .collect::<Result<Vec<_>>>()?; ret.extend(entries); @@ -528,7 +534,7 @@ impl Context { .depends .iter() .filter(|dep| allow_noinherit || !dep.noinherit) - .map(|dep| self.output_ref(dep, ¤t_ref.args, false)) + .map(|dep| self.output_ref(task_ref.id, dep, ¤t_ref.args, false)) .collect::<Result<Vec<_>>>()?; ret.extend(entries); |