@@ -7930,7 +7930,7 @@ namespace ts {
79307930 }
79317931
79327932 function isStringConcatExpression(expr: Node): boolean {
7933- if (expr.kind === SyntaxKind.StringLiteral ) {
7933+ if (isStringLiteralLike( expr) ) {
79347934 return true;
79357935 }
79367936 else if (expr.kind === SyntaxKind.BinaryExpression) {
@@ -7947,6 +7947,7 @@ namespace ts {
79477947 switch (expr.kind) {
79487948 case SyntaxKind.StringLiteral:
79497949 case SyntaxKind.NumericLiteral:
7950+ case SyntaxKind.NoSubstitutionTemplateLiteral:
79507951 return true;
79517952 case SyntaxKind.PrefixUnaryExpression:
79527953 return (<PrefixUnaryExpression>expr).operator === SyntaxKind.MinusToken &&
@@ -7969,7 +7970,7 @@ namespace ts {
79697970 for (const declaration of symbol.declarations) {
79707971 if (declaration.kind === SyntaxKind.EnumDeclaration) {
79717972 for (const member of (<EnumDeclaration>declaration).members) {
7972- if (member.initializer && member.initializer.kind === SyntaxKind.StringLiteral ) {
7973+ if (member.initializer && isStringLiteralLike( member.initializer) ) {
79737974 return links.enumKind = EnumKind.Literal;
79747975 }
79757976 if (!isLiteralEnumMember(member)) {
@@ -17921,7 +17922,7 @@ namespace ts {
1792117922
1792217923 function getAccessedPropertyName(access: AccessExpression): __String | undefined {
1792317924 return access.kind === SyntaxKind.PropertyAccessExpression ? access.name.escapedText :
17924- isStringLiteral(access.argumentExpression) || isNumericLiteral (access.argumentExpression) ? escapeLeadingUnderscores(access.argumentExpression.text) :
17925+ isStringOrNumericLiteralLike (access.argumentExpression) ? escapeLeadingUnderscores(access.argumentExpression.text) :
1792517926 undefined;
1792617927 }
1792717928
@@ -18319,8 +18320,8 @@ namespace ts {
1831918320 const witnesses: (string | undefined)[] = [];
1832018321 for (const clause of switchStatement.caseBlock.clauses) {
1832118322 if (clause.kind === SyntaxKind.CaseClause) {
18322- if (clause.expression.kind === SyntaxKind.StringLiteral ) {
18323- witnesses.push(( clause.expression as StringLiteral) .text);
18323+ if (isStringLiteralLike( clause.expression) ) {
18324+ witnesses.push(clause.expression.text);
1832418325 continue;
1832518326 }
1832618327 return emptyArray;
@@ -22887,7 +22888,7 @@ namespace ts {
2288722888 return objectType;
2288822889 }
2288922890
22890- if (isConstEnumObjectType(objectType) && indexExpression.kind !== SyntaxKind.StringLiteral ) {
22891+ if (isConstEnumObjectType(objectType) && !isStringLiteralLike(indexExpression) ) {
2289122892 error(indexExpression, Diagnostics.A_const_enum_member_can_only_be_accessed_using_a_string_literal);
2289222893 return errorType;
2289322894 }
@@ -31603,7 +31604,8 @@ namespace ts {
3160331604 }
3160431605 break;
3160531606 case SyntaxKind.StringLiteral:
31606- return (<StringLiteral>expr).text;
31607+ case SyntaxKind.NoSubstitutionTemplateLiteral:
31608+ return (<StringLiteralLike>expr).text;
3160731609 case SyntaxKind.NumericLiteral:
3160831610 checkGrammarNumericLiteral(<NumericLiteral>expr);
3160931611 return +(<NumericLiteral>expr).text;
@@ -31656,7 +31658,7 @@ namespace ts {
3165631658 return node.kind === SyntaxKind.Identifier ||
3165731659 node.kind === SyntaxKind.PropertyAccessExpression && isConstantMemberAccess((<PropertyAccessExpression>node).expression) ||
3165831660 node.kind === SyntaxKind.ElementAccessExpression && isConstantMemberAccess((<ElementAccessExpression>node).expression) &&
31659- ( <ElementAccessExpression>node).argumentExpression.kind === SyntaxKind.StringLiteral ;
31661+ isStringLiteralLike(( <ElementAccessExpression>node).argumentExpression) ;
3166031662 }
3166131663
3166231664 function checkEnumDeclaration(node: EnumDeclaration) {
@@ -35239,7 +35241,7 @@ namespace ts {
3523935241 }
3524035242
3524135243 function isStringOrNumberLiteralExpression(expr: Expression) {
35242- return expr.kind === SyntaxKind.StringLiteral || expr.kind === SyntaxKind.NumericLiteral ||
35244+ return isStringOrNumericLiteralLike( expr) ||
3524335245 expr.kind === SyntaxKind.PrefixUnaryExpression && (<PrefixUnaryExpression>expr).operator === SyntaxKind.MinusToken &&
3524435246 (<PrefixUnaryExpression>expr).operand.kind === SyntaxKind.NumericLiteral;
3524535247 }
0 commit comments