/* * Copyright (c) 2021, Matthew Olsson * Copyright (c) 2021, Hunter Salyer * Copyright (c) 2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "DebuggerGlobalJSObject.h" #include #include #include #include namespace HackStudio { class DebuggerVariableJSObject final : public JS::Object { using Base = JS::Object; public: static DebuggerVariableJSObject* create(DebuggerGlobalJSObject&, Debug::DebugInfo::VariableInfo const& variable_info); DebuggerVariableJSObject(Debug::DebugInfo::VariableInfo const& variable_info, JS::Object& prototype); virtual ~DebuggerVariableJSObject() override = default; virtual StringView class_name() const override { return m_variable_info.type_name; } JS::ThrowCompletionOr internal_set(JS::PropertyKey const&, JS::Value value, JS::Value receiver) override; private: DebuggerGlobalJSObject& debugger_object() const; Debug::DebugInfo::VariableInfo const& m_variable_info; }; }