mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 15:28:11 +00:00
LibJS: Only check for duplicate exports if they have a name
Together with removing an incorrect VERIFY this allows multiple star imports in a single module.
This commit is contained in:
parent
3b56043612
commit
462c6df24b
4 changed files with 9 additions and 3 deletions
|
@ -4498,7 +4498,7 @@ bool ExportStatement::has_export(FlyString const& export_name) const
|
|||
{
|
||||
return any_of(m_entries.begin(), m_entries.end(), [&](auto& entry) {
|
||||
// Make sure that empty exported names does not overlap with anything
|
||||
if (entry.kind == ExportEntry::Kind::EmptyNamedExport)
|
||||
if (entry.kind != ExportEntry::Kind::NamedExport)
|
||||
return false;
|
||||
return entry.export_name == export_name;
|
||||
});
|
||||
|
|
|
@ -202,8 +202,6 @@ Result<NonnullRefPtr<SourceTextModule>, Vector<Parser::Error>> SourceTextModule:
|
|||
// 2. If ie.[[ImportName]] is namespace-object, then
|
||||
if (import_entry.is_namespace) {
|
||||
// a. NOTE: This is a re-export of an imported module namespace object.
|
||||
VERIFY(export_entry.is_module_request() && export_entry.kind != ExportStatement::ExportEntry::Kind::NamedExport);
|
||||
|
||||
// b. Append ee to localExportEntries.
|
||||
local_export_entries.empend(export_entry);
|
||||
}
|
||||
|
|
|
@ -186,6 +186,10 @@ describe("in- and exports", () => {
|
|||
test("namespace has expected ordering", () => {
|
||||
expectModulePassed("./namespace-order.mjs");
|
||||
});
|
||||
|
||||
test("can have multiple star imports even from the same file", () => {
|
||||
expectModulePassed("./multiple-star-imports.mjs");
|
||||
});
|
||||
});
|
||||
|
||||
describe("loops", () => {
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
import * as ns1 from "./default-and-star-export.mjs";
|
||||
import * as ns2 from "./default-and-star-export.mjs";
|
||||
|
||||
export const passed = ns1 === ns2;
|
Loading…
Add table
Add a link
Reference in a new issue