diff --git a/src/isomorphic/classic/element/ReactElementValidator.js b/src/isomorphic/classic/element/ReactElementValidator.js index 731d72a708..2d2272e8a2 100644 --- a/src/isomorphic/classic/element/ReactElementValidator.js +++ b/src/isomorphic/classic/element/ReactElementValidator.js @@ -57,7 +57,7 @@ var loggedTypeFailures = {}; * @param {*} parentType element's parent's type. */ function validateExplicitKey(element, parentType) { - if (element._store.validated || element.key != null) { + if (!element._store || element._store.validated || element.key != null) { return; } element._store.validated = true; diff --git a/src/isomorphic/classic/element/__tests__/ReactElementValidator-test.js b/src/isomorphic/classic/element/__tests__/ReactElementValidator-test.js index f4905a724b..3200014289 100644 --- a/src/isomorphic/classic/element/__tests__/ReactElementValidator-test.js +++ b/src/isomorphic/classic/element/__tests__/ReactElementValidator-test.js @@ -467,4 +467,20 @@ describe('ReactElementValidator', function() { } }); + it('does not blow up with inlined children', function() { + // We don't suggest this since it silences all sorts of warnings, but we + // shouldn't blow up either. + + var child = { + $$typeof: (
).$$typeof, + type: 'span', + key: null, + ref: null, + props: {}, + _owner: null, + }; + + void
{[child]}
; + }); + });