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

Function visitElements

test/fixtures/snapshot/typescript.js:102569–102607  ·  view source on GitHub ↗

* Visits an array of expressions containing one or more YieldExpression nodes * and returns an expression for the resulting value. * * @param elements The elements to visit. * @param multiLine Whether array literals created should be emitted on multiple lines.

(elements, leadingElement, location, multiLine)

Source from the content-addressed store, hash-verified

102567 * @param multiLine Whether array literals created should be emitted on multiple lines.
102568 */
102569 function visitElements(elements, leadingElement, location, multiLine) {
102570 // [source]
102571 // ar = [1, yield, 2];
102572 //
102573 // [intermediate]
102574 // .local _a
102575 // _a = [1];
102576 // .yield resumeLabel
102577 // .mark resumeLabel
102578 // ar = _a.concat([%sent%, 2]);
102579 var numInitialElements = countInitialNodesWithoutYield(elements);
102580 var temp;
102581 if (numInitialElements > 0) {
102582 temp = declareLocal();
102583 var initialElements = ts.visitNodes(elements, visitor, ts.isExpression, 0, numInitialElements);
102584 emitAssignment(temp, factory.createArrayLiteralExpression(leadingElement
102585 ? __spreadArray([leadingElement], initialElements, true) : initialElements));
102586 leadingElement = undefined;
102587 }
102588 var expressions = ts.reduceLeft(elements, reduceElement, [], numInitialElements);
102589 return temp
102590 ? factory.createArrayConcatCall(temp, [factory.createArrayLiteralExpression(expressions, multiLine)])
102591 : ts.setTextRange(factory.createArrayLiteralExpression(leadingElement ? __spreadArray([leadingElement], expressions, true) : expressions, multiLine), location);
102592 function reduceElement(expressions, element) {
102593 if (containsYield(element) && expressions.length > 0) {
102594 var hasAssignedTemp = temp !== undefined;
102595 if (!temp) {
102596 temp = declareLocal();
102597 }
102598 emitAssignment(temp, hasAssignedTemp
102599 ? factory.createArrayConcatCall(temp, [factory.createArrayLiteralExpression(expressions, multiLine)])
102600 : factory.createArrayLiteralExpression(leadingElement ? __spreadArray([leadingElement], expressions, true) : expressions, multiLine));
102601 leadingElement = undefined;
102602 expressions = [];
102603 }
102604 expressions.push(ts.visitNode(element, visitor, ts.isExpression));
102605 return expressions;
102606 }
102607 }
102608 function visitObjectLiteralExpression(node) {
102609 // [source]
102610 // o = {

Callers 3

visitCallExpressionFunction · 0.85
visitNewExpressionFunction · 0.85

Calls 3

declareLocalFunction · 0.85
emitAssignmentFunction · 0.85

Tested by

no test coverage detected