It looks like this implementation will only cause the warning to be printed if the block is passed directly to `should_receive`, `stub` or `receive`.

However, most of the fluent interface methods accept an implementation block.  For example, if the block is passed like this:

``` ruby
MyClass.any_instance.should_receive(:foo).with(5) { :some_return_value }
```

or:

``` ruby
MyClass.any_instance.should_receive(:foo).exactly(3).times { :some_return_value }
```

or:

``` ruby
MyClass.any_instance.should_receive(:foo).at_least(2).times { :some_return_value }
```

or:

``` ruby
MyClass.any_instance.should_receive(:foo).ordered { :some_return_value }
```

...or any other way, the user won't get the warning, right?

So, I think we need to add a couple failing specs for these cases, and then update the implementation to get it to pass.  I suspect it'll be easiest to hook into `MessageExpectation#inner_implementation_action=` as that is the method that is used when an implementation block is passed to any of the fluent interface methods.