From 555ee0cb518954f720f53c15a36f665bb65ba04d Mon Sep 17 00:00:00 2001 From: Andrew Levine Date: Mon, 24 Oct 2016 09:42:50 -0500 Subject: [PATCH] Don't treat JSXIdentifier in JSXMemberExpression as HTML tag. Closes #4027 (#4765) --- .../lowercase-member-expression/actual.js | 6 ++++++ .../lowercase-member-expression/expected.js | 7 +++++++ .../lowercase-member-expression/options.json | 9 +++++++++ packages/babel-traverse/src/path/lib/virtual-types.js | 2 +- 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/actual.js create mode 100644 packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/expected.js create mode 100644 packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/options.json diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/actual.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/actual.js new file mode 100644 index 0000000000..a9023ee025 --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/actual.js @@ -0,0 +1,6 @@ +//index.js file +import { form } from "./export"; + +function ParentComponent() { + return ; +} diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/expected.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/expected.js new file mode 100644 index 0000000000..6f90f33e19 --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/expected.js @@ -0,0 +1,7 @@ +"use strict"; + +var _export = require("./export"); + +function ParentComponent() { + return babelHelpers.jsx(_export.form.TestComponent, {}); +} //index.js file \ No newline at end of file diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/options.json b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/options.json new file mode 100644 index 0000000000..64873e2e87 --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/options.json @@ -0,0 +1,9 @@ +{ + "plugins": [ + "external-helpers", + "syntax-jsx", + "transform-react-inline-elements", + "transform-react-jsx", + "transform-es2015-modules-commonjs" + ] +} diff --git a/packages/babel-traverse/src/path/lib/virtual-types.js b/packages/babel-traverse/src/path/lib/virtual-types.js index cb598fe9a3..396be80b90 100644 --- a/packages/babel-traverse/src/path/lib/virtual-types.js +++ b/packages/babel-traverse/src/path/lib/virtual-types.js @@ -5,7 +5,7 @@ import * as t from "babel-types"; export let ReferencedIdentifier = { types: ["Identifier", "JSXIdentifier"], checkPath({ node, parent }: NodePath, opts?: Object): boolean { - if (!t.isIdentifier(node, opts)) { + if (!t.isIdentifier(node, opts) && !t.isJSXMemberExpression(parent, opts)) { if (t.isJSXIdentifier(node, opts)) { if (react.isCompatTag(node.name)) return false; } else {