eslint-plugin-unicorn
Version:
Various awesome ESLint rules
43 lines (36 loc) • 1.2 kB
JavaScript
;
const isNewExpressionWithParentheses = require('./is-new-expression-with-parentheses.js');
const {isDecimalIntegerNode} = require('./numeric.js');
/**
Check if parentheses should to be added to a `node` when it's used as an `object` of `MemberExpression`.
@param {Node} node - The AST node to check.
@param {SourceCode} sourceCode - The source code object.
@returns {boolean}
*/
function shouldAddParenthesesToMemberExpressionObject(node, sourceCode) {
switch (node.type) {
// This is not a full list. Some other nodes like `FunctionDeclaration` don't need parentheses,
// but it's not possible to be in the place we are checking at this point.
case 'Identifier':
case 'MemberExpression':
case 'CallExpression':
case 'ChainExpression':
case 'TemplateLiteral':
case 'ThisExpression':
case 'ArrayExpression':
case 'FunctionExpression':
return false;
case 'NewExpression':
return !isNewExpressionWithParentheses(node, sourceCode);
case 'Literal': {
/* c8 ignore next */
if (isDecimalIntegerNode(node)) {
return true;
}
return false;
}
default:
return true;
}
}
module.exports = shouldAddParenthesesToMemberExpressionObject;