function reportUnnecessaryCurly(JSXExpressionNode) {
      report(context, messages.unnecessaryCurly, 'unnecessaryCurly', {
        node: JSXExpressionNode,
        fix(fixer) {
          const expression = JSXExpressionNode.expression;

          let textToReplace;
          if (jsxUtil.isJSX(expression)) {
            textToReplace = getText(context, expression);
          } else {
            const expressionType = expression && expression.type;
            const parentType = JSXExpressionNode.parent.type;

            if (parentType === 'JSXAttribute') {
              if (expressionType !== 'TemplateLiteral' && /["]/.test(expression.raw.slice(1, -1))) {
                textToReplace = expression.raw;
              } else {
                textToReplace = `"${expressionType === 'TemplateLiteral'
                  ? expression.quasis[0].value.raw
                  : expression.raw.slice(1, -1)
                }"`;
              }
            } else if (jsxUtil.isJSX(expression)) {
              textToReplace = getText(context, expression);
            } else {
              textToReplace = expressionType === 'TemplateLiteral'
                ? expression.quasis[0].value.cooked : expression.value;
            }
          }

          return fixer.replaceText(JSXExpressionNode, textToReplace);
        },
      });
    }
Report and fix an unnecessary curly brace violation on a node
@param {ASTNode} JSXExpressionNode - The AST node with an unnecessary JSX expression