When you do `<Foo />` but Foo is not a valid string or function, we show an error message:

https://github.com/facebook/react/blob/92c84a6f37245f4fbe3ce5dc50845856201637fa/src/isomorphic/classic/element/ReactElementValidator.js#L196

We include the owner name ("Please check the render method of Bar.") but not the full parent stack which we show for some of our other warnings like key warnings and prop types. We should call into ReactComponentTreeHook to get the full stack if possible. 

expectDev(console.error.calls.argsFor(0)[0]).toContain(
      'Each child in an array or iterator should have a unique "key" prop. ' +
      'Check the render method of `InnerComponent`. ' +
      'It was passed a child from ComponentWrapper. '
    );
  });
  it('warns for keys for iterables of elements in rest args', () => {
    spyOn(console, 'error');
    var iterable = {
      '@@iterator': function() {
        var i = 0;
        return {
          next: function() {
            var done = ++i > 2;
            return {value: done ? undefined : <Component />, done: done};
          },
        };
      },
    };
    void <Component>{iterable}</Component>;
    expectDev(console.error.calls.count()).toBe(1);
    expectDev(console.error.calls.argsFor(0)[0]).toContain(
      'Each child in an array or iterator should have a unique "key" prop.'
    );
  });
  it('does not warns for arrays of elements with keys', () => {
    spyOn(console, 'error');
    void <Component>{[<Component key="#1" />, <Component key="#2" />]}</Component>;
    expectDev(console.error.calls.count()).toBe(0);
  });