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

Function transformAndEmitIfStatement

test/fixtures/snapshot/typescript.js:102807–102841  ·  view source on GitHub ↗
(node)

Source from the content-addressed store, hash-verified

102805 return ts.setSourceMapRange(factory.createAssignment(ts.setSourceMapRange(factory.cloneNode(node.name), node.name), ts.visitNode(node.initializer, visitor, ts.isExpression)), node);
102806 }
102807 function transformAndEmitIfStatement(node) {
102808 if (containsYield(node)) {
102809 // [source]
102810 // if (x)
102811 // /*thenStatement*/
102812 // else
102813 // /*elseStatement*/
102814 //
102815 // [intermediate]
102816 // .brfalse elseLabel, (x)
102817 // /*thenStatement*/
102818 // .br endLabel
102819 // .mark elseLabel
102820 // /*elseStatement*/
102821 // .mark endLabel
102822 if (containsYield(node.thenStatement) || containsYield(node.elseStatement)) {
102823 var endLabel = defineLabel();
102824 var elseLabel = node.elseStatement ? defineLabel() : undefined;
102825 emitBreakWhenFalse(node.elseStatement ? elseLabel : endLabel, ts.visitNode(node.expression, visitor, ts.isExpression), /*location*/ node.expression);
102826 transformAndEmitEmbeddedStatement(node.thenStatement);
102827 if (node.elseStatement) {
102828 emitBreak(endLabel);
102829 markLabel(elseLabel);
102830 transformAndEmitEmbeddedStatement(node.elseStatement);
102831 }
102832 markLabel(endLabel);
102833 }
102834 else {
102835 emitStatement(ts.visitNode(node, visitor, ts.isStatement));
102836 }
102837 }
102838 else {
102839 emitStatement(ts.visitNode(node, visitor, ts.isStatement));
102840 }
102841 }
102842 function transformAndEmitDoStatement(node) {
102843 if (containsYield(node)) {
102844 // [source]

Callers 1

Calls 7

defineLabelFunction · 0.85
emitBreakWhenFalseFunction · 0.85
emitBreakFunction · 0.85
markLabelFunction · 0.85
emitStatementFunction · 0.85
containsYieldFunction · 0.70

Tested by

no test coverage detected