MCPcopy Index your code
hub / github.com/nodejs/node / checkBinaryLikeExpression

Function checkBinaryLikeExpression

test/fixtures/snapshot/typescript.js:79005–79019  ·  view source on GitHub ↗
(left, operatorToken, right, checkMode, errorNode)

Source from the content-addressed store, hash-verified

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) {

Callers 1

Calls 4

checkExpressionFunction · 0.70

Tested by

no test coverage detected