def invoke(*args, &block)
if @expected_received_count == 0
@failed_fast = true
@actual_received_count += 1
@error_generator.raise_expectation_error(@sym, @expected_received_count, @actual_received_count, *args)
end
@order_group.handle_order_constraint self
begin
Kernel::raise @exception_to_raise unless @exception_to_raise.nil?
Kernel::throw @symbol_to_throw unless @symbol_to_throw.nil?
default_return_val = if !@method_block.nil?
invoke_method_block(*args, &block)
elsif !@args_to_yield.empty? || @eval_context
invoke_with_yield(&block)
else
nil
end
if @consecutive
invoke_consecutive_return_block(*args, &block)
elsif @return_block
invoke_return_block(*args, &block)
else
default_return_val
end
ensure
@actual_received_count += 1
end
end