For consideration.

These warnings are already covered by renderers based on react-reconciler. Maybe we don't gain that much by mirroring them in the shallow renderer? Maybe it's not worth the added complexity? Particularly with more complicated warnings like the ones being added for #12419 and #12404.
render() {
        return null;
      }
    }
    shallowRenderer = createRenderer();
    expect(() => shallowRenderer.render(<WillReceiveProps />)).toWarnDev(
      'Unsafe legacy lifecycles will not be called for components using the new getDerivedStateFromProps() API.\n\n' +
        'WillReceiveProps uses getDerivedStateFromProps() but also contains the following legacy lifecycles:\n' +
        '  componentWillReceiveProps\n\n' +
        'The above lifecycles should be removed. Learn more about this warning here:\n' +
        'https://fb.me/react-async-component-lifecycle-hooks',
    );
  });
  it('should only render 1 level deep', () => {
    function Parent() {
      return (
        <div>
          <Child />
        </div>
      );
    }
    function Child() {
      throw Error('This component should not render');
    }
    const shallowRenderer = createRenderer();
    shallowRenderer.render(React.createElement(Parent));
  });
  it('should have shallow rendering', () => {
    class SomeComponent extends React.Component {