From 6ac71e9121459dd0f9c19d2f5e23cf2561b94619 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Tue, 1 Oct 2019 09:30:51 -0400 Subject: [PATCH] [Fix] `jsx-curly-brace-presence`: bail out on JSX inside props, for now Fixes #2423. --- lib/rules/jsx-curly-brace-presence.js | 15 ++++++++++----- tests/lib/rules/jsx-curly-brace-presence.js | 6 ++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/rules/jsx-curly-brace-presence.js b/lib/rules/jsx-curly-brace-presence.js index 2a95d57438..a4f1dbdc64 100755 --- a/lib/rules/jsx-curly-brace-presence.js +++ b/lib/rules/jsx-curly-brace-presence.js @@ -114,21 +114,26 @@ module.exports = { * @param {ASTNode} JSXExpressionNode - The AST node with an unnecessary JSX expression */ function reportUnnecessaryCurly(JSXExpressionNode) { + const expression = JSXExpressionNode.expression; + const expressionType = expression.type; + const parentType = JSXExpressionNode.parent.type; + const isJSX = jsxUtil.isJSX(expression); + + if (parentType === 'JSXAttribute' && isJSX) { + return; + } + context.report({ node: JSXExpressionNode, message: 'Curly braces are unnecessary here.', fix(fixer) { - const expression = JSXExpressionNode.expression; - const expressionType = expression.type; - const parentType = JSXExpressionNode.parent.type; - let textToReplace; if (parentType === 'JSXAttribute') { textToReplace = `"${expressionType === 'TemplateLiteral' ? expression.quasis[0].value.raw : expression.raw.substring(1, expression.raw.length - 1) }"`; - } else if (jsxUtil.isJSX(expression)) { + } else if (isJSX) { const sourceCode = context.getSourceCode(); textToReplace = sourceCode.getText(expression); diff --git a/tests/lib/rules/jsx-curly-brace-presence.js b/tests/lib/rules/jsx-curly-brace-presence.js index 05aa991097..246197c3d9 100755 --- a/tests/lib/rules/jsx-curly-brace-presence.js +++ b/tests/lib/rules/jsx-curly-brace-presence.js @@ -304,6 +304,12 @@ ruleTester.run('jsx-curly-brace-presence', rule, { `, parser: parsers.BABEL_ESLINT, options: [{children: 'never'}] + }, + { + code: ` + Bar}> + + ` } ],