diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp index 3d31c595f19b..d58f6fdca663 100644 --- a/js/src/builtin/TestingFunctions.cpp +++ b/js/src/builtin/TestingFunctions.cpp @@ -3979,7 +3979,15 @@ GetModuleEnvironmentValue(JSContext* cx, unsigned argc, Value* vp) if (!JS_StringToId(cx, name, &id)) return false; - return GetProperty(cx, env, env, id, args.rval()); + if (!GetProperty(cx, env, env, id, args.rval())) + return false; + + if (args.rval().isMagic(JS_UNINITIALIZED_LEXICAL)) { + ReportRuntimeLexicalError(cx, JSMSG_UNINITIALIZED_LEXICAL, id); + return false; + } + + return true; } #ifdef DEBUG diff --git a/js/src/jit-test/tests/modules/bug1394493.js b/js/src/jit-test/tests/modules/bug1394493.js new file mode 100644 index 000000000000..1fc189960285 --- /dev/null +++ b/js/src/jit-test/tests/modules/bug1394493.js @@ -0,0 +1,4 @@ +// |jit-test| error: ReferenceError + +let m = parseModule("export let r = y; y = 4;"); +getModuleEnvironmentValue(m, "r").toString()