mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 05:37:43 +00:00
LibJS: Check type of ShadowRealm.prototype.importValue() 2nd argument
This is a normative change in the ShadowRealm spec.
See: 2b45a15
This commit is contained in:
parent
f1d744e11a
commit
68ee193464
2 changed files with 11 additions and 3 deletions
|
@ -65,8 +65,9 @@ JS_DEFINE_NATIVE_FUNCTION(ShadowRealmPrototype::import_value)
|
||||||
// 3. Let specifierString be ? ToString(specifier).
|
// 3. Let specifierString be ? ToString(specifier).
|
||||||
auto specifier_string = TRY(specifier.to_string(global_object));
|
auto specifier_string = TRY(specifier.to_string(global_object));
|
||||||
|
|
||||||
// 4. Let exportNameString be ? ToString(exportName).
|
// 4. If Type(exportName) is not String, throw a TypeError exception.
|
||||||
auto export_name_string = TRY(export_name.to_string(global_object));
|
if (!export_name.is_string())
|
||||||
|
return vm.throw_completion<TypeError>(global_object, ErrorType::NotAString, export_name.to_string_without_side_effects());
|
||||||
|
|
||||||
// 5. Let callerRealm be the current Realm Record.
|
// 5. Let callerRealm be the current Realm Record.
|
||||||
auto* caller_realm = vm.current_realm();
|
auto* caller_realm = vm.current_realm();
|
||||||
|
@ -78,7 +79,7 @@ JS_DEFINE_NATIVE_FUNCTION(ShadowRealmPrototype::import_value)
|
||||||
auto& eval_context = object->execution_context();
|
auto& eval_context = object->execution_context();
|
||||||
|
|
||||||
// 8. Return ? ShadowRealmImportValue(specifierString, exportNameString, callerRealm, evalRealm, evalContext).
|
// 8. Return ? ShadowRealmImportValue(specifierString, exportNameString, callerRealm, evalRealm, evalContext).
|
||||||
return shadow_realm_import_value(global_object, move(specifier_string), move(export_name_string), *caller_realm, eval_realm, eval_context);
|
return shadow_realm_import_value(global_object, move(specifier_string), export_name.as_string().string(), *caller_realm, eval_realm, eval_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,4 +70,11 @@ describe("errors", () => {
|
||||||
ShadowRealm.prototype.importValue.call("foo");
|
ShadowRealm.prototype.importValue.call("foo");
|
||||||
}).toThrowWithMessage(TypeError, "Not an object of type ShadowRealm");
|
}).toThrowWithMessage(TypeError, "Not an object of type ShadowRealm");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("export name must be string", () => {
|
||||||
|
const shadowRealm = new ShadowRealm();
|
||||||
|
expect(() => {
|
||||||
|
shadowRealm.importValue("./whatever.mjs", 123);
|
||||||
|
}).toThrowWithMessage(TypeError, "123 is not a string");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue