Skip to content

Commit 81ca2ac

Browse files
committed
test: add skip-block test; fix: cannot skip a${"b"}c
1 parent 22dd572 commit 81ca2ac

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

src/parser.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4273,6 +4273,7 @@ export class Parser extends DiagnosticEmitter {
42734273
// at '{': ... '}'
42744274
var depth = 1;
42754275
var again = true;
4276+
let readingTemplateString = false;
42764277
do {
42774278
switch (tn.next()) {
42784279
case Token.ENDOFFILE: {
@@ -4290,6 +4291,13 @@ export class Parser extends DiagnosticEmitter {
42904291
case Token.CLOSEBRACE: {
42914292
--depth;
42924293
if (!depth) again = false;
4294+
if (readingTemplateString) {
4295+
tn.readString(CharCode.BACKTICK);
4296+
readingTemplateString = tn.readingTemplateString;
4297+
if (readingTemplateString) {
4298+
++depth;
4299+
}
4300+
}
42934301
break;
42944302
}
42954303
case Token.IDENTIFIER: {
@@ -4301,13 +4309,10 @@ export class Parser extends DiagnosticEmitter {
43014309
break;
43024310
}
43034311
case Token.TEMPLATELITERAL: {
4304-
if (tn.readingTemplateString) {
4305-
tn.readString(CharCode.BACKTICK);
4306-
} else {
4307-
tn.readString();
4308-
}
4312+
tn.readString();
4313+
readingTemplateString = tn.readingTemplateString;
43094314
// in readString, tn.pos consume '${'
4310-
if (tn.readingTemplateString) {
4315+
if (readingTemplateString) {
43114316
++depth;
43124317
}
43134318
break;

tests/parser/skip-error-block.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
for () {
3+
`Some string`
4+
}
5+
6+
while () {
7+
`Some${11} string`
8+
}
9+
10+
if () {
11+
`Some${"11"} string`
12+
}
13+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{}
2+
// ERROR 1109: "Expression expected." in skip-error-block.ts(2,8+1)
3+
// ERROR 1109: "Expression expected." in skip-error-block.ts(6,10+1)
4+
// ERROR 1109: "Expression expected." in skip-error-block.ts(10,7+1)

0 commit comments

Comments
 (0)