Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 32b67b93f05c00fd5fb8dfa4804d79198b3d0211..ca3af0c088a23ce6c46fbdd577a6a40d2582943f 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -19855,17 +19855,18 @@ Handle<Object> Module::LoadImport(Handle<Module> module, Handle<String> name, |
MaybeHandle<Cell> Module::ResolveImport(Handle<Module> module, |
Handle<String> name, int module_request, |
- bool must_resolve, |
+ MessageLocation loc, bool must_resolve, |
Module::ResolveSet* resolve_set) { |
Isolate* isolate = module->GetIsolate(); |
Handle<Module> requested_module( |
Module::cast(module->requested_modules()->get(module_request)), isolate); |
- return Module::ResolveExport(requested_module, name, must_resolve, |
+ return Module::ResolveExport(requested_module, name, loc, must_resolve, |
resolve_set); |
} |
MaybeHandle<Cell> Module::ResolveExport(Handle<Module> module, |
- Handle<String> name, bool must_resolve, |
+ Handle<String> name, |
+ MessageLocation loc, bool must_resolve, |
Module::ResolveSet* resolve_set) { |
Isolate* isolate = module->GetIsolate(); |
Handle<Object> object(module->exports()->Lookup(name), isolate); |
@@ -19887,10 +19888,10 @@ MaybeHandle<Cell> Module::ResolveExport(Handle<Module> module, |
} else if (name_set->count(name)) { |
// Cycle detected. |
if (must_resolve) { |
- THROW_NEW_ERROR( |
- isolate, |
- NewSyntaxError(MessageTemplate::kCyclicModuleDependency, name), |
- Cell); |
+ return isolate->Throw<Cell>( |
+ isolate->factory()->NewSyntaxError( |
+ MessageTemplate::kCyclicModuleDependency, name), |
+ &loc); |
} |
return MaybeHandle<Cell>(); |
} |
@@ -19902,9 +19903,14 @@ MaybeHandle<Cell> Module::ResolveExport(Handle<Module> module, |
Handle<ModuleInfoEntry> entry = Handle<ModuleInfoEntry>::cast(object); |
int module_request = Smi::cast(entry->module_request())->value(); |
Handle<String> import_name(String::cast(entry->import_name()), isolate); |
+ Handle<Script> script( |
+ Script::cast(JSFunction::cast(module->code())->shared()->script()), |
+ isolate); |
+ MessageLocation new_loc(script, entry->beg_pos(), entry->end_pos()); |
Handle<Cell> cell; |
- if (!ResolveImport(module, import_name, module_request, true, resolve_set) |
+ if (!ResolveImport(module, import_name, module_request, new_loc, true, |
+ resolve_set) |
.ToHandle(&cell)) { |
DCHECK(isolate->has_pending_exception()); |
return MaybeHandle<Cell>(); |
@@ -19921,13 +19927,13 @@ MaybeHandle<Cell> Module::ResolveExport(Handle<Module> module, |
} |
DCHECK(object->IsTheHole(isolate)); |
- return Module::ResolveExportUsingStarExports(module, name, must_resolve, |
+ return Module::ResolveExportUsingStarExports(module, name, loc, must_resolve, |
resolve_set); |
} |
MaybeHandle<Cell> Module::ResolveExportUsingStarExports( |
- Handle<Module> module, Handle<String> name, bool must_resolve, |
- Module::ResolveSet* resolve_set) { |
+ Handle<Module> module, Handle<String> name, MessageLocation loc, |
+ bool must_resolve, Module::ResolveSet* resolve_set) { |
Isolate* isolate = module->GetIsolate(); |
if (!name->Equals(isolate->heap()->default_string())) { |
// Go through all star exports looking for the given name. If multiple star |
@@ -19943,14 +19949,21 @@ MaybeHandle<Cell> Module::ResolveExportUsingStarExports( |
} |
int module_request = Smi::cast(entry->module_request())->value(); |
+ Handle<Script> script( |
+ Script::cast(JSFunction::cast(module->code())->shared()->script()), |
+ isolate); |
+ MessageLocation new_loc(script, entry->beg_pos(), entry->end_pos()); |
+ |
Handle<Cell> cell; |
- if (ResolveImport(module, name, module_request, false, resolve_set) |
+ if (ResolveImport(module, name, module_request, new_loc, false, |
+ resolve_set) |
.ToHandle(&cell)) { |
if (unique_cell.is_null()) unique_cell = cell; |
if (*unique_cell != *cell) { |
- THROW_NEW_ERROR( |
- isolate, NewSyntaxError(MessageTemplate::kAmbiguousExport, name), |
- Cell); |
+ return isolate->Throw<Cell>( |
+ isolate->factory()->NewSyntaxError( |
+ MessageTemplate::kAmbiguousExport, name), |
+ &loc); |
} |
} else if (isolate->has_pending_exception()) { |
return MaybeHandle<Cell>(); |
@@ -19969,9 +19982,9 @@ MaybeHandle<Cell> Module::ResolveExportUsingStarExports( |
// Unresolvable. |
if (must_resolve) { |
- THROW_NEW_ERROR(isolate, |
- NewSyntaxError(MessageTemplate::kUnresolvableExport, name), |
- Cell); |
+ return isolate->Throw<Cell>(isolate->factory()->NewSyntaxError( |
+ MessageTemplate::kUnresolvableExport, name), |
+ &loc); |
} |
return MaybeHandle<Cell>(); |
} |
@@ -20046,8 +20059,12 @@ bool Module::Instantiate(Handle<Module> module, v8::Local<v8::Context> context, |
ModuleInfoEntry::cast(regular_imports->get(i)), isolate); |
Handle<String> name(String::cast(entry->import_name()), isolate); |
int module_request = Smi::cast(entry->module_request())->value(); |
+ Handle<Script> script( |
+ Script::cast(JSFunction::cast(module->code())->shared()->script()), |
+ isolate); |
+ MessageLocation loc(script, entry->beg_pos(), entry->end_pos()); |
ResolveSet resolve_set(&zone); |
- if (ResolveImport(module, name, module_request, true, &resolve_set) |
+ if (ResolveImport(module, name, module_request, loc, true, &resolve_set) |
.is_null()) { |
return false; |
} |
@@ -20059,8 +20076,13 @@ bool Module::Instantiate(Handle<Module> module, v8::Local<v8::Context> context, |
ModuleInfoEntry::cast(special_exports->get(i)), isolate); |
Handle<Object> name(entry->export_name(), isolate); |
if (name->IsUndefined(isolate)) continue; // Star export. |
+ Handle<Script> script( |
+ Script::cast(JSFunction::cast(module->code())->shared()->script()), |
+ isolate); |
+ MessageLocation loc(script, entry->beg_pos(), entry->end_pos()); |
ResolveSet resolve_set(&zone); |
- if (ResolveExport(module, Handle<String>::cast(name), true, &resolve_set) |
+ if (ResolveExport(module, Handle<String>::cast(name), loc, true, |
+ &resolve_set) |
.is_null()) { |
return false; |
} |