Serenity Operating System
1/*
2 * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <LibJS/Runtime/NativeFunction.h>
10
11namespace JS {
12
13class ArrayConstructor final : public NativeFunction {
14 JS_OBJECT(ArrayConstructor, NativeFunction);
15
16public:
17 virtual ThrowCompletionOr<void> initialize(Realm&) override;
18 virtual ~ArrayConstructor() override = default;
19
20 virtual ThrowCompletionOr<Value> call() override;
21 virtual ThrowCompletionOr<NonnullGCPtr<Object>> construct(FunctionObject& new_target) override;
22
23private:
24 explicit ArrayConstructor(Realm&);
25
26 virtual bool has_constructor() const override { return true; }
27
28 JS_DECLARE_NATIVE_FUNCTION(from);
29 JS_DECLARE_NATIVE_FUNCTION(is_array);
30 JS_DECLARE_NATIVE_FUNCTION(of);
31
32 JS_DECLARE_NATIVE_FUNCTION(symbol_species_getter);
33};
34
35}