When consuming React from source with the Google Closure Compiler, [this bit](https://github.com/facebook/react/blob/eca5b1d48e71218800156ce474ec79b990b09fbd/src/renderers/shared/stack/reconciler/instantiateReactComponent.js#L26-L32) of code isn't being run in the correct order.

It seems like the Google Closure Compiler transformation is changing the function to a `var` assignment. It messes up the behavior because the original `instantiateReactComponent` function is hoisted. My thought is it's related to the fact that the `instantiateReactComponent` function is exported from that module. 

Anyway, this produces an error because the assignment to `ReactCompositeComponentWrapper.prototype` is now in the wrong order (assignment -> function definition, when we want definition -> assignment).

This may also be related or the root cause of #8887.

The most straightforward solution is to bring the `Object.assign` call after the function is declared, which I've verified works correctly. I'm happy to submit a PR with the described approach.
var instance;
  if (node === null || node === false) {
    instance = ReactEmptyComponent.create(instantiateReactComponent);
  } else if (typeof node === 'object') {
    var element = node;
    var type = element.type;
    if (
      typeof type !== 'function' &&
      typeof type !== 'string'
    ) {
      var info = '';
      if (__DEV__) {
        if (
          type === undefined ||
          typeof type === 'object' &&
          type !== null &&
          Object.keys(type).length === 0
        ) {
          info +=
            ' You likely forgot to export your component from the file ' +
            'it\'s defined in.';
        }
      }
      info += getDeclarationErrorAddendum(element._owner);