(node *ast.BinaryExpression)
| 2857 | } |
| 2858 | |
| 2859 | func (p *Printer) emitBinaryExpression(node *ast.BinaryExpression) { |
| 2860 | leftPrec, rightPrec := p.getBinaryExpressionPrecedence(node) |
| 2861 | if emittedLeft := ast.SkipPartiallyEmittedExpressions(node.Left); ast.NodeIsSynthesized(emittedLeft) && emittedLeft.Kind == ast.KindBinaryExpression && mixingBinaryOperatorsRequiresParentheses(node.OperatorToken.Kind, emittedLeft.AsBinaryExpression().OperatorToken.Kind) { |
| 2862 | leftPrec = ast.OperatorPrecedenceHighest |
| 2863 | } |
| 2864 | if emittedRight := ast.SkipPartiallyEmittedExpressions(node.Right); ast.NodeIsSynthesized(emittedRight) && emittedRight.Kind == ast.KindBinaryExpression && mixingBinaryOperatorsRequiresParentheses(node.OperatorToken.Kind, emittedRight.AsBinaryExpression().OperatorToken.Kind) { |
| 2865 | rightPrec = ast.OperatorPrecedenceHighest |
| 2866 | } |
| 2867 | state := p.enterNode(node.AsNode()) |
| 2868 | p.emitExpression(node.Left, leftPrec) |
| 2869 | linesBeforeOperator := p.getLinesBetweenNodes(node.AsNode(), node.Left, node.OperatorToken) |
| 2870 | linesAfterOperator := p.getLinesBetweenNodes(node.AsNode(), node.OperatorToken, node.Right) |
| 2871 | p.writeLinesAndIndent(linesBeforeOperator, node.OperatorToken.Kind != ast.KindCommaToken /*writeSpaceIfNotIndenting*/) |
| 2872 | p.emitTokenNodeEx(node.OperatorToken, tefNoSourceMaps) |
| 2873 | p.writeLinesAndIndent(linesAfterOperator, true /*writeSpaceIfNotIndenting*/) // Binary operators should have a space before the comment starts |
| 2874 | p.emitExpression(node.Right, rightPrec) |
| 2875 | p.decreaseIndentIf(linesAfterOperator > 0) |
| 2876 | p.decreaseIndentIf(linesBeforeOperator > 0) |
| 2877 | p.exitNode(node.AsNode(), state) |
| 2878 | } |
| 2879 | |
| 2880 | func (p *Printer) emitShortCircuitExpression(node *ast.Expression) { |
| 2881 | if isBinaryOperation(ast.SkipPartiallyEmittedExpressions(node), ast.KindQuestionQuestionToken) { |
no test coverage detected