| 12345678910111213141516171819202122232425262728293031323334 | 'use strict';const isNewExpressionWithParentheses = require('../utils/is-new-expression-with-parentheses.js');const {isParenthesized} = require('../utils/parentheses.js');const isOnSameLine = require('../utils/is-on-same-line.js');const addParenthesizesToReturnOrThrowExpression = require('./add-parenthesizes-to-return-or-throw-expression.js');const removeSpaceAfter = require('./remove-spaces-after.js');function * switchNewExpressionToCallExpression(newExpression, sourceCode, fixer) {	const newToken = sourceCode.getFirstToken(newExpression);	yield fixer.remove(newToken);	yield removeSpaceAfter(newToken, sourceCode, fixer);	if (!isNewExpressionWithParentheses(newExpression, sourceCode)) {		yield fixer.insertTextAfter(newExpression, '()');	}	/*		Remove `new` from this code will makes the function return `undefined`		```js			() => {				return new // comment					Foo()			}		```	*/	if (!isOnSameLine(newToken, newExpression.callee) && !isParenthesized(newExpression, sourceCode)) {		// Ideally, we should use first parenthesis of the `callee`, and should check spaces after the `new` token		// But adding extra parentheses is harmless, no need to be too complicated		yield * addParenthesizesToReturnOrThrowExpression(fixer, newExpression.parent, sourceCode);	}}module.exports = switchNewExpressionToCallExpression;
 |