diff --git a/lib/rules/jsx-curly-brace-presence.js b/lib/rules/jsx-curly-brace-presence.js
index 490e18bc2c..2a95d57438 100755
--- a/lib/rules/jsx-curly-brace-presence.js
+++ b/lib/rules/jsx-curly-brace-presence.js
@@ -128,6 +128,10 @@ module.exports = {
expression.quasis[0].value.raw :
expression.raw.substring(1, expression.raw.length - 1)
}"`;
+ } else if (jsxUtil.isJSX(expression)) {
+ const sourceCode = context.getSourceCode();
+
+ textToReplace = sourceCode.getText(expression);
} else {
textToReplace = expressionType === 'TemplateLiteral' ?
expression.quasis[0].value.cooked : expression.value;
@@ -190,6 +194,8 @@ module.exports = {
)
) {
reportUnnecessaryCurly(JSXExpressionNode);
+ } else if (jsxUtil.isJSX(expression)) {
+ reportUnnecessaryCurly(JSXExpressionNode);
}
}
diff --git a/tests/lib/rules/jsx-curly-brace-presence.js b/tests/lib/rules/jsx-curly-brace-presence.js
index baeff71ab4..05aa991097 100755
--- a/tests/lib/rules/jsx-curly-brace-presence.js
+++ b/tests/lib/rules/jsx-curly-brace-presence.js
@@ -96,7 +96,8 @@ ruleTester.run('jsx-curly-brace-presence', rule, {
options: [{props: 'never'}]
},
{
- code: '{}'
+ code: '{}',
+ options: [{children: 'always'}]
},
{
code: '{[]}'
@@ -313,6 +314,17 @@ ruleTester.run('jsx-curly-brace-presence', rule, {
options: [{props: 'never'}],
errors: [{message: unnecessaryCurlyMessage}]
},
+ {
+ code: '{}',
+ output: '',
+ options: [{children: 'never'}],
+ errors: [{message: unnecessaryCurlyMessage}]
+ },
+ {
+ code: '{}',
+ output: '',
+ errors: [{message: unnecessaryCurlyMessage}]
+ },
{
code: 'foo',
output: 'foo',