(expr)
| 84747 | } |
| 84748 | return value; |
| 84749 | function evaluate(expr) { |
| 84750 | switch (expr.kind) { |
| 84751 | case 219 /* SyntaxKind.PrefixUnaryExpression */: |
| 84752 | var value_2 = evaluate(expr.operand); |
| 84753 | if (typeof value_2 === "number") { |
| 84754 | switch (expr.operator) { |
| 84755 | case 39 /* SyntaxKind.PlusToken */: return value_2; |
| 84756 | case 40 /* SyntaxKind.MinusToken */: return -value_2; |
| 84757 | case 54 /* SyntaxKind.TildeToken */: return ~value_2; |
| 84758 | } |
| 84759 | } |
| 84760 | break; |
| 84761 | case 221 /* SyntaxKind.BinaryExpression */: |
| 84762 | var left = evaluate(expr.left); |
| 84763 | var right = evaluate(expr.right); |
| 84764 | if (typeof left === "number" && typeof right === "number") { |
| 84765 | switch (expr.operatorToken.kind) { |
| 84766 | case 51 /* SyntaxKind.BarToken */: return left | right; |
| 84767 | case 50 /* SyntaxKind.AmpersandToken */: return left & right; |
| 84768 | case 48 /* SyntaxKind.GreaterThanGreaterThanToken */: return left >> right; |
| 84769 | case 49 /* SyntaxKind.GreaterThanGreaterThanGreaterThanToken */: return left >>> right; |
| 84770 | case 47 /* SyntaxKind.LessThanLessThanToken */: return left << right; |
| 84771 | case 52 /* SyntaxKind.CaretToken */: return left ^ right; |
| 84772 | case 41 /* SyntaxKind.AsteriskToken */: return left * right; |
| 84773 | case 43 /* SyntaxKind.SlashToken */: return left / right; |
| 84774 | case 39 /* SyntaxKind.PlusToken */: return left + right; |
| 84775 | case 40 /* SyntaxKind.MinusToken */: return left - right; |
| 84776 | case 44 /* SyntaxKind.PercentToken */: return left % right; |
| 84777 | case 42 /* SyntaxKind.AsteriskAsteriskToken */: return Math.pow(left, right); |
| 84778 | } |
| 84779 | } |
| 84780 | else if (typeof left === "string" && typeof right === "string" && expr.operatorToken.kind === 39 /* SyntaxKind.PlusToken */) { |
| 84781 | return left + right; |
| 84782 | } |
| 84783 | break; |
| 84784 | case 10 /* SyntaxKind.StringLiteral */: |
| 84785 | case 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */: |
| 84786 | return expr.text; |
| 84787 | case 8 /* SyntaxKind.NumericLiteral */: |
| 84788 | checkGrammarNumericLiteral(expr); |
| 84789 | return +expr.text; |
| 84790 | case 212 /* SyntaxKind.ParenthesizedExpression */: |
| 84791 | return evaluate(expr.expression); |
| 84792 | case 79 /* SyntaxKind.Identifier */: |
| 84793 | var identifier = expr; |
| 84794 | if (ts.isInfinityOrNaNString(identifier.escapedText)) { |
| 84795 | return +(identifier.escapedText); |
| 84796 | } |
| 84797 | return ts.nodeIsMissing(expr) ? 0 : evaluateEnumMember(expr, getSymbolOfNode(member.parent), identifier.escapedText); |
| 84798 | case 207 /* SyntaxKind.ElementAccessExpression */: |
| 84799 | case 206 /* SyntaxKind.PropertyAccessExpression */: |
| 84800 | if (isConstantMemberAccess(expr)) { |
| 84801 | var type = getTypeOfExpression(expr.expression); |
| 84802 | if (type.symbol && type.symbol.flags & 384 /* SymbolFlags.Enum */) { |
| 84803 | var name = void 0; |
| 84804 | if (expr.kind === 206 /* SyntaxKind.PropertyAccessExpression */) { |
| 84805 | name = expr.name.escapedText; |
| 84806 | } |
no test coverage detected
searching dependent graphs…