Skip to content

Commit 984d088

Browse files
committed
Emit errors to octal escape sequences in template strings
1 parent 628580f commit 984d088

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

src/compiler/diagnosticMessages.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,6 +1196,10 @@
11961196
"category": "Error",
11971197
"code": 1391
11981198
},
1199+
"Octal escape sequences are not allowed in template strings.": {
1200+
"category": "Error",
1201+
"code": 1392
1202+
},
11991203
"The types of '{0}' are incompatible between these types.": {
12001204
"category": "Error",
12011205
"code": 2200

src/compiler/parser.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2582,7 +2582,6 @@ namespace ts {
25822582

25832583
function parseTemplateExpression(isTaggedTemplate: boolean, containsInvalidEscape: boolean): TemplateExpression {
25842584
const pos = getNodePos();
2585-
console.log({ isTaggedTemplate, containsInvalidEscape });
25862585
return finishNode(
25872586
factory.createTemplateExpression(
25882587
parseTemplateHead(isTaggedTemplate, containsInvalidEscape),

src/compiler/scanner.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1309,6 +1309,9 @@ namespace ts {
13091309
pos++;
13101310
return text.substring(start, pos);
13111311
}
1312+
if (shouldEmitInvalidEscapeError) {
1313+
error(Diagnostics.Octal_escape_sequences_are_not_allowed_in_template_strings);
1314+
}
13121315
}
13131316
return "\0";
13141317
case CharacterCodes.b:

tests/baselines/reference/templateLiteralInvalidEscape.errors.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ tests/cases/compiler/templateLiteralInvalidEscape.ts(11,4): error TS1125: Hexade
22
tests/cases/compiler/templateLiteralInvalidEscape.ts(12,5): error TS1125: Hexadecimal digit expected.
33
tests/cases/compiler/templateLiteralInvalidEscape.ts(13,6): error TS1125: Hexadecimal digit expected.
44
tests/cases/compiler/templateLiteralInvalidEscape.ts(14,5): error TS1125: Hexadecimal digit expected.
5+
tests/cases/compiler/templateLiteralInvalidEscape.ts(15,4): error TS1392: Octal escape sequences are not allowed in template strings.
56
tests/cases/compiler/templateLiteralInvalidEscape.ts(23,8): error TS1125: Hexadecimal digit expected.
67
tests/cases/compiler/templateLiteralInvalidEscape.ts(24,9): error TS1125: Hexadecimal digit expected.
78
tests/cases/compiler/templateLiteralInvalidEscape.ts(25,10): error TS1125: Hexadecimal digit expected.
89
tests/cases/compiler/templateLiteralInvalidEscape.ts(26,9): error TS1125: Hexadecimal digit expected.
10+
tests/cases/compiler/templateLiteralInvalidEscape.ts(27,8): error TS1392: Octal escape sequences are not allowed in template strings.
911

1012

11-
==== tests/cases/compiler/templateLiteralInvalidEscape.ts (8 errors) ====
13+
==== tests/cases/compiler/templateLiteralInvalidEscape.ts (10 errors) ====
1214
function raw(arr: TemplateStringsArray, ...args: unknown[]) {
1315
return arr.raw;
1416
}
@@ -32,6 +34,8 @@ tests/cases/compiler/templateLiteralInvalidEscape.ts(26,9): error TS1125: Hexade
3234

3335
!!! error TS1125: Hexadecimal digit expected.
3436
`\0123`;
37+
38+
!!! error TS1392: Octal escape sequences are not allowed in template strings.
3539

3640
raw`${0}\x`;
3741
raw`${0}\x0`;
@@ -52,4 +56,6 @@ tests/cases/compiler/templateLiteralInvalidEscape.ts(26,9): error TS1125: Hexade
5256

5357
!!! error TS1125: Hexadecimal digit expected.
5458
`${0}\0123`;
59+
60+
!!! error TS1392: Octal escape sequences are not allowed in template strings.
5561

0 commit comments

Comments
 (0)