MCPcopy Index your code
hub / github.com/microsoft/typescript-go / emitBinaryExpression

Method emitBinaryExpression

internal/printer/printer.go:2859–2878  ·  view source on GitHub ↗
(node *ast.BinaryExpression)

Source from the content-addressed store, hash-verified

2857}
2858
2859func (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
2880func (p *Printer) emitShortCircuitExpression(node *ast.Expression) {
2881 if isBinaryOperation(ast.SkipPartiallyEmittedExpressions(node), ast.KindQuestionQuestionToken) {

Callers 1

emitExpressionMethod · 0.95

Calls 13

enterNodeMethod · 0.95
emitExpressionMethod · 0.95
getLinesBetweenNodesMethod · 0.95
writeLinesAndIndentMethod · 0.95
emitTokenNodeExMethod · 0.95
decreaseIndentIfMethod · 0.95
exitNodeMethod · 0.95
NodeIsSynthesizedFunction · 0.92
AsBinaryExpressionMethod · 0.80

Tested by

no test coverage detected