* Serializes an entity name which may not exist at runtime, but whose access shouldn't throw * * @param node The entity name to serialize.
(node)
| 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 | * |
no test coverage detected