module RSpec::Mocks::TargetDelegationClassMethods

def delegate_not_to(matcher_method, options={})

def delegate_not_to(matcher_method, options={})
  method_name = options.fetch(:from)
  define_method(method_name) do |matcher, &block|
    case matcher
    when Matchers::Receive, Matchers::HaveReceived
      define_matcher(matcher, matcher_method, &block)
    when Matchers::ReceiveMessages, Matchers::ReceiveMessageChain
      raise_negation_unsupported(method_name, matcher)
    else
      raise_unsupported_matcher(method_name, matcher)
    end
  end
end

def delegate_to(matcher_method)

def delegate_to(matcher_method)
  define_method(:to) do |matcher, &block|
    unless matcher_allowed?(matcher)
      raise_unsupported_matcher(:to, matcher)
    end
    define_matcher(matcher, matcher_method, &block)
  end
end

def disallow_negation(method_name)

def disallow_negation(method_name)
  define_method(method_name) do |matcher, *_args|
    raise_negation_unsupported(method_name, matcher)
  end
end