Bug 1341256 - Fix module namespace object get handler r=anba

This commit is contained in:
Jon Coppeard 2017-02-21 17:17:34 +00:00
Родитель 0de0267fd3
Коммит 6f6fe80e74
2 изменённых файлов: 7 добавлений и 2 удалений

Просмотреть файл

@ -464,8 +464,10 @@ ModuleNamespaceObject::ProxyHandler::get(JSContext* cx, HandleObject proxy, Hand
ModuleEnvironmentObject* env; ModuleEnvironmentObject* env;
Shape* shape; Shape* shape;
if (!ns->bindings().lookup(id, &env, &shape)) if (!ns->bindings().lookup(id, &env, &shape)) {
return false; vp.setUndefined();
return true;
}
RootedValue value(cx, env->getSlot(shape->slot())); RootedValue value(cx, env->getSlot(shape->slot()));
if (value.isMagic(JS_UNINITIALIZED_LEXICAL)) { if (value.isMagic(JS_UNINITIALIZED_LEXICAL)) {

Просмотреть файл

@ -45,6 +45,9 @@ b.evaluation();
testHasNames(getModuleEnvironmentNames(b), ["ns", "x"]); testHasNames(getModuleEnvironmentNames(b), ["ns", "x"]);
let ns = getModuleEnvironmentValue(b, "ns"); let ns = getModuleEnvironmentValue(b, "ns");
testHasNames(Object.keys(ns), ["a", "b"]); testHasNames(Object.keys(ns), ["a", "b"]);
assertEq(ns.a, 1);
assertEq(ns.b, 2);
assertEq(ns.c, undefined);
assertEq(getModuleEnvironmentValue(b, "x"), 3); assertEq(getModuleEnvironmentValue(b, "x"), 3);
// Test module namespace internal methods as defined in 9.4.6 // Test module namespace internal methods as defined in 9.4.6