diff --git a/packages/babel-helper-builder-react-jsx/src/index.js b/packages/babel-helper-builder-react-jsx/src/index.js
index e0b4f5498e..4f2473ae50 100644
--- a/packages/babel-helper-builder-react-jsx/src/index.js
+++ b/packages/babel-helper-builder-react-jsx/src/index.js
@@ -89,14 +89,14 @@ You can turn on the 'throwIfNamespace' flag to bypass this warning.`,
}
}
- if (t.isValidIdentifier(node.name.name)) {
+ if (t.isJSXNamespacedName(node.name)) {
+ node.name = t.stringLiteral(
+ node.name.namespace.name + ":" + node.name.name.name,
+ );
+ } else if (esutils.keyword.isIdentifierNameES6(node.name.name)) {
node.name.type = "Identifier";
} else {
- node.name = t.stringLiteral(
- t.isJSXNamespacedName(node.name)
- ? node.name.namespace.name + ":" + node.name.name.name
- : node.name.name,
- );
+ node.name = t.stringLiteral(node.name.name);
}
return t.inherits(t.objectProperty(node.name, value), node);
diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/regressions/6276/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/regressions/6276/output.js
index c2f317566e..0eb30c15e3 100644
--- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/regressions/6276/output.js
+++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/regressions/6276/output.js
@@ -1,3 +1,3 @@
var test = babelHelpers.jsx(T, {
- "default": " some string "
+ default: " some string "
});
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/input.js
new file mode 100644
index 0000000000..a47734ffb3
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/input.js
@@ -0,0 +1 @@
+var es3 = ;
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/options.json
new file mode 100644
index 0000000000..81639b17e0
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/options.json
@@ -0,0 +1,3 @@
+{
+ "plugins": ["transform-react-jsx", "transform-property-literals"]
+}
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/output.js
new file mode 100644
index 0000000000..2306516ef5
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/output.js
@@ -0,0 +1,8 @@
+var es3 = React.createElement(F, {
+ aaa: true,
+ "new": true,
+ "const": true,
+ "var": true,
+ "default": true,
+ "foo-bar": true
+});
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/input.js
new file mode 100644
index 0000000000..44d58a60fe
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/input.js
@@ -0,0 +1 @@
+var e = ;
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/output.js
new file mode 100644
index 0000000000..b60eb0ba8e
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/output.js
@@ -0,0 +1,8 @@
+var e = React.createElement(F, {
+ aaa: true,
+ new: true,
+ const: true,
+ var: true,
+ default: true,
+ "foo-bar": true
+});