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

Function transformAccessorsToExpression

test/fixtures/snapshot/typescript.js:99676–99719  ·  view source on GitHub ↗

* Transforms a set of related get/set accessors into an expression for either a class * body function or an ObjectLiteralExpression with computed properties. * * @param receiver The receiver for the member.

(receiver, _a, container, startsOnNewLine)

Source from the content-addressed store, hash-verified

99674 * @param receiver The receiver for the member.
99675 */
99676 function transformAccessorsToExpression(receiver, _a, container, startsOnNewLine) {
99677 var firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor;
99678 // To align with source maps in the old emitter, the receiver and property name
99679 // arguments are both mapped contiguously to the accessor name.
99680 // TODO(rbuckton): Does this need to be parented?
99681 var target = ts.setParent(ts.setTextRange(factory.cloneNode(receiver), receiver), receiver.parent);
99682 ts.setEmitFlags(target, 1536 /* EmitFlags.NoComments */ | 32 /* EmitFlags.NoTrailingSourceMap */);
99683 ts.setSourceMapRange(target, firstAccessor.name);
99684 var visitedAccessorName = ts.visitNode(firstAccessor.name, visitor, ts.isPropertyName);
99685 if (ts.isPrivateIdentifier(visitedAccessorName)) {
99686 return ts.Debug.failBadSyntaxKind(visitedAccessorName, "Encountered unhandled private identifier while transforming ES2015.");
99687 }
99688 var propertyName = ts.createExpressionForPropertyName(factory, visitedAccessorName);
99689 ts.setEmitFlags(propertyName, 1536 /* EmitFlags.NoComments */ | 16 /* EmitFlags.NoLeadingSourceMap */);
99690 ts.setSourceMapRange(propertyName, firstAccessor.name);
99691 var properties = [];
99692 if (getAccessor) {
99693 var getterFunction = transformFunctionLikeToExpression(getAccessor, /*location*/ undefined, /*name*/ undefined, container);
99694 ts.setSourceMapRange(getterFunction, ts.getSourceMapRange(getAccessor));
99695 ts.setEmitFlags(getterFunction, 512 /* EmitFlags.NoLeadingComments */);
99696 var getter = factory.createPropertyAssignment("get", getterFunction);
99697 ts.setCommentRange(getter, ts.getCommentRange(getAccessor));
99698 properties.push(getter);
99699 }
99700 if (setAccessor) {
99701 var setterFunction = transformFunctionLikeToExpression(setAccessor, /*location*/ undefined, /*name*/ undefined, container);
99702 ts.setSourceMapRange(setterFunction, ts.getSourceMapRange(setAccessor));
99703 ts.setEmitFlags(setterFunction, 512 /* EmitFlags.NoLeadingComments */);
99704 var setter = factory.createPropertyAssignment("set", setterFunction);
99705 ts.setCommentRange(setter, ts.getCommentRange(setAccessor));
99706 properties.push(setter);
99707 }
99708 properties.push(factory.createPropertyAssignment("enumerable", getAccessor || setAccessor ? factory.createFalse() : factory.createTrue()), factory.createPropertyAssignment("configurable", factory.createTrue()));
99709 var call = factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier("Object"), "defineProperty"),
99710 /*typeArguments*/ undefined, [
99711 target,
99712 propertyName,
99713 factory.createObjectLiteralExpression(properties, /*multiLine*/ true)
99714 ]);
99715 if (startsOnNewLine) {
99716 ts.startOnNewLine(call);
99717 }
99718 return call;
99719 }
99720 /**
99721 * Visits an ArrowFunction and transforms it into a FunctionExpression.
99722 *

Callers 2

addObjectLiteralMembersFunction · 0.85

Calls 2

pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…