parse import expressions correctly

fixes #5550
This commit is contained in:
alexlamsl 2022-07-08 09:15:35 +08:00
parent b2bc2e1173
commit b67e755a3f
2 changed files with 34 additions and 6 deletions

View File

@ -858,13 +858,11 @@ function parse($TEXT, options) {
next(); next();
return export_(); return export_();
case "import": case "import":
if (!toplevel && options.module !== "") unexpected();
var token = peek(); var token = peek();
if (!(token.type == "punc" && /^[(.]$/.test(token.value))) { if (token.type == "punc" && /^[(.]$/.test(token.value)) break;
next(); if (!toplevel && options.module !== "") unexpected();
return import_(); next();
} return import_();
break;
case "let": case "let":
if (is_vardefs()) { if (is_vardefs()) {
next(); next();

View File

@ -227,3 +227,33 @@ issue_4708_2: {
import a from "foo"; import a from "foo";
} }
} }
pr_5550_1: {
input: {
if (console)
import("foo");
else
import.meta.url.replace(/bar/g, console.log);
}
expect: {
if (console)
import("foo");
else
import.meta.url.replace(/bar/g, console.log);
}
}
pr_5550_2: {
input: {
L: {
import("foo");
import.meta.url.replace(/bar/g, console.log);
}
}
expect: {
L: {
import("foo");
import.meta.url.replace(/bar/g, console.log);
}
}
}