class RSpec::Mocks::AndYieldImplementation

@private
Handles the implementation of an ‘and_yield` declaration.

def arity

def arity
  -1
end

def call(*args_to_ignore, &block)

def call(*args_to_ignore, &block)
  return if @args_to_yield.empty? && @eval_context.nil?
  @error_generator.raise_missing_block_error @args_to_yield unless block
  value = nil
  @args_to_yield.each do |args|
    if block.arity > -1 && args.length != block.arity
      @error_generator.raise_wrong_arity_error args, block.arity
    end
    value = @eval_context ? @eval_context.instance_exec(*args, &block) : block.call(*args)
  end
  value
end

def initialize(args_to_yield, eval_context, error_generator)

def initialize(args_to_yield, eval_context, error_generator)
  @args_to_yield = args_to_yield
  @eval_context = eval_context
  @error_generator = error_generator
end