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

Function serializeEntityNameAsExpressionFallback

test/fixtures/snapshot/typescript.js:92998–93012  ·  view source on GitHub ↗

* Serializes an entity name which may not exist at runtime, but whose access shouldn't throw * * @param node The entity name to serialize.

(node)

Source from the content-addressed store, hash-verified

92996 * @param node The entity name to serialize.
92997 */
92998 function serializeEntityNameAsExpressionFallback(node) {
92999 if (node.kind === 79 /* SyntaxKind.Identifier */) {
93000 // A -> typeof A !== undefined && A
93001 var copied = serializeEntityNameAsExpression(node);
93002 return createCheckedValue(copied, copied);
93003 }
93004 if (node.left.kind === 79 /* SyntaxKind.Identifier */) {
93005 // A.B -> typeof A !== undefined && A.B
93006 return createCheckedValue(serializeEntityNameAsExpression(node.left), serializeEntityNameAsExpression(node));
93007 }
93008 // A.B.C -> typeof A !== undefined && (_a = A.B) !== void 0 && _a.C
93009 var left = serializeEntityNameAsExpressionFallback(node.left);
93010 var temp = factory.createTempVariable(hoistVariableDeclaration);
93011 return factory.createLogicalAnd(factory.createLogicalAnd(left.left, factory.createStrictInequality(factory.createAssignment(temp, left.right), factory.createVoidZero())), factory.createPropertyAccessExpression(temp, node.right));
93012 }
93013 /**
93014 * Serializes an entity name as an expression for decorator type metadata.
93015 *

Callers 1

Calls 2

createCheckedValueFunction · 0.85

Tested by

no test coverage detected