diff --git a/packages/babel-plugin-transform-react-inline-elements/src/index.js b/packages/babel-plugin-transform-react-inline-elements/src/index.js index 08dcd11a60..a2288ee9be 100644 --- a/packages/babel-plugin-transform-react-inline-elements/src/index.js +++ b/packages/babel-plugin-transform-react-inline-elements/src/index.js @@ -19,7 +19,11 @@ export default function() { const visitor = helper({ filter(node) { - return !hasRefOrSpread(node.openingElement.attributes); + return ( + // Regular JSX nodes have an `openingElement`. JSX fragments, however, don't have an + // `openingElement` which causes `node.openingElement.attributes` to throw. + node.openingElement && !hasRefOrSpread(node.openingElement.attributes) + ); }, pre(state) { const tagName = state.tagName; diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/actual.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/actual.js new file mode 100644 index 0000000000..f34cb095aa --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/actual.js @@ -0,0 +1 @@ +<>
> diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/expected.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/expected.js new file mode 100644 index 0000000000..55fbad164b --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/expected.js @@ -0,0 +1 @@ +React.createElement(React.Fragment, null, babelHelpers.jsx("span", {}), babelHelpers.jsx("div", {}));