diff options
Diffstat (limited to 'lua/clever_f')
| -rw-r--r-- | lua/clever_f/sequence_coordinator.lua | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/lua/clever_f/sequence_coordinator.lua b/lua/clever_f/sequence_coordinator.lua index 37657b2..bcb6689 100644 --- a/lua/clever_f/sequence_coordinator.lua +++ b/lua/clever_f/sequence_coordinator.lua @@ -204,6 +204,31 @@ function SequenceCoordinator:acquire_primary(descriptor, invocation) ) end +function SequenceCoordinator:fresh_primary_resolution( + initiating_descriptor, + acquisition_result, + invocation +) + initiating_descriptor = self:validate_primary_descriptor(initiating_descriptor) + if type(acquisition_result) ~= "table" + or acquisition_result.resolved ~= true + or not domain.TargetValue.is(acquisition_result.target) + or not domain.TargetPlan.is(acquisition_result.target_plan) + or not domain.ResolvedMotionPlan.is(acquisition_result.motion_plan) + then + fail("fresh primary resolution requires acquired motion plans", 2) + end + return { + kind = "fresh", + invocation = invocation, + acquisition_result = acquisition_result, + target = acquisition_result.target, + target_plan = acquisition_result.target_plan, + motion_plan = acquisition_result.motion_plan, + effective_descriptor = initiating_descriptor, + } +end + function SequenceCoordinator:resolve_acquisition(descriptor, invocation) local result = self:acquire_primary(descriptor, invocation) if type(result.has_outcome) ~= "function" then @@ -212,7 +237,7 @@ function SequenceCoordinator:resolve_acquisition(descriptor, invocation) if result:has_outcome() then return result.outcome end - return result + return self:fresh_primary_resolution(descriptor, result, invocation) end function SequenceCoordinator:primary(value) |
