Currently, if you define `shouldComponentUpdate` on `React.PureComponent` nothing bad happens and it acts like `React.Component` https://jsfiddle.net/jekmdfva/

We should probably warn in dev since it defaults the point of `PureComponent`
*
   * @param {object} typeSpecs Map of context field to a ReactPropType
   * @param {object} values Runtime values that need to be type-checked
   * @param {string} location e.g. "prop", "context", "child context"
   * @private
   */
  _checkContextTypes: function(typeSpecs, values, location: string) {
    if (__DEV__) {
      ReactDebugCurrentFrame.current = this._debugID;
      checkPropTypes(
        typeSpecs,
        values,
        location,
        this.getName(),
        ReactDebugCurrentFrame.getStackAddendum,
      );
      ReactDebugCurrentFrame.current = null;
    }
  },
  receiveComponent: function(nextElement, transaction, nextContext) {
    var prevElement = this._currentElement;
    var prevContext = this._context;
    this._pendingElement = null;
    this.updateComponent(
      transaction,
      prevElement,
      nextElement,
      prevContext,
      nextContext,
    );