@@ -719,6 +719,8 @@ import {
719
719
isStringOrNumericLiteralLike,
720
720
isSuperCall,
721
721
isSuperProperty,
722
+ isSyntacticallyNumeric,
723
+ isSyntacticallyString,
722
724
isTaggedTemplateExpression,
723
725
isTemplateSpan,
724
726
isThisContainerOrFunctionBlock,
@@ -45595,44 +45597,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
45595
45597
return value;
45596
45598
}
45597
45599
45598
- function isSyntacticallyNumeric(expr: Expression): boolean {
45599
- switch (expr.kind) {
45600
- case SyntaxKind.PrefixUnaryExpression:
45601
- return isSyntacticallyNumeric((expr as PrefixUnaryExpression).operand);
45602
- case SyntaxKind.BinaryExpression:
45603
- return isSyntacticallyNumeric((expr as BinaryExpression).left) && isSyntacticallyNumeric((expr as BinaryExpression).right);
45604
- case SyntaxKind.ParenthesizedExpression:
45605
- return isSyntacticallyNumeric((expr as ParenthesizedExpression).expression);
45606
- case SyntaxKind.NumericLiteral:
45607
- return true;
45608
- }
45609
- return false;
45610
- }
45611
-
45612
- function isSyntacticallyString(expr: Expression): boolean {
45613
- switch (expr.kind) {
45614
- case SyntaxKind.BinaryExpression:
45615
- const left = (expr as BinaryExpression).left;
45616
- const right = (expr as BinaryExpression).right;
45617
- const leftIsNumeric = isSyntacticallyNumeric(left);
45618
- const rightIsNumeric = isSyntacticallyNumeric(right);
45619
- return (
45620
- !(leftIsNumeric && rightIsNumeric) &&
45621
- (isSyntacticallyString(left) || leftIsNumeric) &&
45622
- (isSyntacticallyString(right) || rightIsNumeric) &&
45623
- (expr as BinaryExpression).operatorToken.kind === SyntaxKind.PlusToken
45624
- );
45625
- case SyntaxKind.TemplateExpression:
45626
- return (expr as TemplateExpression).templateSpans.every(span => isSyntacticallyString(span.expression));
45627
- case SyntaxKind.ParenthesizedExpression:
45628
- return isSyntacticallyString((expr as ParenthesizedExpression).expression);
45629
- case SyntaxKind.StringLiteral:
45630
- case SyntaxKind.NoSubstitutionTemplateLiteral:
45631
- return true;
45632
- }
45633
- return false;
45634
- }
45635
-
45636
45600
function evaluate(expr: Expression, location?: Declaration): string | number | undefined {
45637
45601
switch (expr.kind) {
45638
45602
case SyntaxKind.PrefixUnaryExpression:
0 commit comments