Skip to content

Commit

Permalink
[Fix] jsx-curly-brace-presence: bail out on JSX inside props, for now
Browse files Browse the repository at this point in the history
  • Loading branch information
ljharb authored and stefanwullems committed Nov 30, 2019
1 parent 1c3b5a6 commit 6ac71e9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
15 changes: 10 additions & 5 deletions lib/rules/jsx-curly-brace-presence.js
Expand Up @@ -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);
Expand Down
6 changes: 6 additions & 0 deletions tests/lib/rules/jsx-curly-brace-presence.js
Expand Up @@ -304,6 +304,12 @@ ruleTester.run('jsx-curly-brace-presence', rule, {
`,
parser: parsers.BABEL_ESLINT,
options: [{children: 'never'}]
},
{
code: `
<MyComponent p={<Foo>Bar</Foo>}>
</MyComponent>
`
}
],

Expand Down

0 comments on commit 6ac71e9

Please sign in to comment.