mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 17:58:18 +03:00
LibJS: Don't suppress GlobalObject variable lookup exceptions
In HackStudio's Debugger a custom GlobalObject is used to reflect debugger variables into the JS scope by overriding GlobalObject's get method. However, when throwing a custom error during that lookup it was replaced with the generic "not found" js exception. This patch makes it instead pass along the custom error.
This commit is contained in:
parent
6c2ec4c1a4
commit
bee16bb83a
Notes:
sideshowbarker
2024-07-18 19:06:17 +09:00
Author: https://github.com/FalseHonesty Commit: https://github.com/SerenityOS/serenity/commit/bee16bb83ac Pull-request: https://github.com/SerenityOS/serenity/pull/6285 Reviewed-by: https://github.com/itamar8910 ✅ Reviewed-by: https://github.com/linusg
@ -1251,7 +1251,8 @@ Value Identifier::execute(Interpreter& interpreter, GlobalObject& global_object)
|
||||
|
||||
auto value = interpreter.vm().get_variable(string(), global_object);
|
||||
if (value.is_empty()) {
|
||||
interpreter.vm().throw_exception<ReferenceError>(global_object, ErrorType::UnknownIdentifier, string());
|
||||
if (!interpreter.exception())
|
||||
interpreter.vm().throw_exception<ReferenceError>(global_object, ErrorType::UnknownIdentifier, string());
|
||||
return {};
|
||||
}
|
||||
return value;
|
||||
|
@ -173,6 +173,8 @@ Value VM::get_variable(const FlyString& name, GlobalObject& global_object)
|
||||
|
||||
for (auto* scope = current_scope(); scope; scope = scope->parent()) {
|
||||
auto possible_match = scope->get_from_scope(name);
|
||||
if (exception())
|
||||
return {};
|
||||
if (possible_match.has_value())
|
||||
return possible_match.value().value;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user