From 2de44d3fea66298e55ac98568e20b9baa2b601f3 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Wed, 27 Jan 2021 18:13:32 +0100 Subject: resolve: debug_assert task state more frequently --- src/resolve.rs | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/resolve.rs b/src/resolve.rs index d7ce52d..ec2ec1a 100644 --- a/src/resolve.rs +++ b/src/resolve.rs @@ -72,7 +72,16 @@ impl<'a> Resolver<'a> { } } - pub fn add_goal(&mut self, task: &TaskRef) -> Result<()> { + fn tasks_resolved(&self) -> bool { + for (_, resolved) in &self.resolve_state { + if *resolved != ResolveState::Resolved { + return false; + } + } + true + } + + pub fn add_task(&mut self, task: &TaskRef) -> Result<()> { match self.resolve_state.get(task) { Some(ResolveState::Resolving) => { return Err(Error::DependencyCycle(vec![task.clone()])) @@ -90,7 +99,7 @@ impl<'a> Resolver<'a> { .insert(task.clone(), ResolveState::Resolving); for dep in &task_def.depends { - let res = self.add_goal(dep); + let res = self.add_task(dep); if let Err(mut error) = res { self.resolve_state.remove(task); @@ -108,16 +117,14 @@ impl<'a> Resolver<'a> { Ok(()) } + pub fn add_goal(&mut self, task: &TaskRef) -> Result<()> { + self.add_task(task)?; + debug_assert!(self.tasks_resolved()); + Ok(()) + } + pub fn to_taskset(self) -> HashSet { - fn tasks_resolved(this: &Resolver) -> bool { - for (_, resolved) in &this.resolve_state { - if *resolved != ResolveState::Resolved { - return false; - } - } - true - } - debug_assert!(tasks_resolved(&self)); + debug_assert!(self.tasks_resolved()); self.resolve_state .into_iter() -- cgit v1.2.3