(left, operatorToken, right, checkMode, errorNode)
| 79003 | // Note that this and `checkBinaryExpression` above should behave mostly the same, except this elides some |
| 79004 | // expression-wide checks and does not use a work stack to fold nested binary expressions into the same callstack frame |
| 79005 | function checkBinaryLikeExpression(left, operatorToken, right, checkMode, errorNode) { |
| 79006 | var operator = operatorToken.kind; |
| 79007 | if (operator === 63 /* SyntaxKind.EqualsToken */ && (left.kind === 205 /* SyntaxKind.ObjectLiteralExpression */ || left.kind === 204 /* SyntaxKind.ArrayLiteralExpression */)) { |
| 79008 | return checkDestructuringAssignment(left, checkExpression(right, checkMode), checkMode, right.kind === 108 /* SyntaxKind.ThisKeyword */); |
| 79009 | } |
| 79010 | var leftType; |
| 79011 | if (operator === 55 /* SyntaxKind.AmpersandAmpersandToken */ || operator === 56 /* SyntaxKind.BarBarToken */ || operator === 60 /* SyntaxKind.QuestionQuestionToken */) { |
| 79012 | leftType = checkTruthinessExpression(left, checkMode); |
| 79013 | } |
| 79014 | else { |
| 79015 | leftType = checkExpression(left, checkMode); |
| 79016 | } |
| 79017 | var rightType = checkExpression(right, checkMode); |
| 79018 | return checkBinaryLikeExpressionWorker(left, operatorToken, right, leftType, rightType, errorNode); |
| 79019 | } |
| 79020 | function checkBinaryLikeExpressionWorker(left, operatorToken, right, leftType, rightType, errorNode) { |
| 79021 | var operator = operatorToken.kind; |
| 79022 | switch (operator) { |
no test coverage detected