summaryrefslogtreecommitdiff
path: root/Userland/Libraries
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries')
-rw-r--r--Userland/Libraries/LibJS/Contrib/Test262/$262Object.h3
-rw-r--r--Userland/Libraries/LibJS/Contrib/Test262/AgentObject.h3
-rw-r--r--Userland/Libraries/LibJS/Contrib/Test262/GlobalObject.h9
-rw-r--r--Userland/Libraries/LibJS/Contrib/Test262/IsHTMLDDA.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Accessor.h12
-rw-r--r--Userland/Libraries/LibJS/Runtime/AggregateError.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/AggregateErrorConstructor.h2
-rw-r--r--Userland/Libraries/LibJS/Runtime/AggregateErrorPrototype.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/ArgumentsObject.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/Array.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ArrayBuffer.h5
-rw-r--r--Userland/Libraries/LibJS/Runtime/ArrayBufferConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ArrayBufferPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ArrayConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ArrayIterator.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ArrayIteratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ArrayPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncFromSyncIterator.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncFromSyncIteratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncFunctionConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncFunctionDriverWrapper.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncFunctionPrototype.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncGenerator.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionPrototype.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncGeneratorPrototype.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/AsyncIteratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/AtomicsObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/BigInt.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/BigIntConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/BigIntObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/BigIntPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/BooleanConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/BooleanObject.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/BooleanPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/BoundFunction.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ConsoleObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/DataView.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/DataViewConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/DataViewPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Date.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/DateConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/DatePrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.h7
-rw-r--r--Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Error.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/ErrorConstructor.h11
-rw-r--r--Userland/Libraries/LibJS/Runtime/ErrorPrototype.h7
-rw-r--r--Userland/Libraries/LibJS/Runtime/FinalizationRegistry.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/FinalizationRegistryConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/FunctionConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/FunctionEnvironment.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/FunctionPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/GeneratorFunctionConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/GeneratorFunctionPrototype.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/GeneratorObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/GeneratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/GlobalEnvironment.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/GlobalObject.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/Collator.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/CollatorCompareFunction.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/CollatorConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/CollatorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatFunction.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DisplayNames.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DurationFormatConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DurationFormatPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/Intl.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/ListFormat.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/ListFormatConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/ListFormatPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/Locale.h5
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/LocaleConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/LocalePrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.h7
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/NumberFormatConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/NumberFormatFunction.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/NumberFormatPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/PluralRules.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/PluralRulesPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormat.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/SegmentIterator.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/SegmentIteratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/Segmenter.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/SegmenterConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/SegmenterPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/Segments.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/SegmentsPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intrinsics.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/IteratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/JSONObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Map.h5
-rw-r--r--Userland/Libraries/LibJS/Runtime/MapConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/MapIterator.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/MapIteratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/MapPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/MathObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ModuleEnvironment.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/ModuleNamespaceObject.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/NativeFunction.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/NumberConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/NumberObject.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/NumberPrototype.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/Object.h7
-rw-r--r--Userland/Libraries/LibJS/Runtime/ObjectConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ObjectEnvironment.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ObjectPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/PrimitiveString.h7
-rw-r--r--Userland/Libraries/LibJS/Runtime/PrivateEnvironment.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/Promise.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/PromiseConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/PromisePrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/PromiseReaction.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/PromiseResolvingElementFunctions.h23
-rw-r--r--Userland/Libraries/LibJS/Runtime/PromiseResolvingFunction.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ProxyConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ProxyObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Realm.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/ReflectObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/RegExpConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/RegExpObject.h6
-rw-r--r--Userland/Libraries/LibJS/Runtime/RegExpPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/RegExpStringIterator.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/RegExpStringIteratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Set.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/SetConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/SetIterator.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/SetIteratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/SetPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ShadowRealm.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ShadowRealmConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/ShadowRealmPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Shape.h8
-rw-r--r--Userland/Libraries/LibJS/Runtime/StringConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/StringIterator.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/StringIteratorPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/StringObject.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/Symbol.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/SymbolConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/SymbolObject.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/SymbolPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/Calendar.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/CalendarConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/CalendarPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/Duration.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/DurationConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/DurationPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/Instant.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/InstantConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/InstantPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/Now.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainDateConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainDatePrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTime.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimeConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDay.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainTime.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainTimeConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/Temporal.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/TimeZoneConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/TimeZonePrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimeConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimePrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/TypedArray.h12
-rw-r--r--Userland/Libraries/LibJS/Runtime/TypedArrayConstructor.h4
-rw-r--r--Userland/Libraries/LibJS/Runtime/TypedArrayPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/WeakMap.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/WeakMapConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/WeakMapPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/WeakRef.h5
-rw-r--r--Userland/Libraries/LibJS/Runtime/WeakRefConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/WeakRefPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/WeakSet.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/WeakSetConstructor.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/WeakSetPrototype.h3
-rw-r--r--Userland/Libraries/LibJS/Runtime/WrappedFunction.h3
196 files changed, 455 insertions, 241 deletions
diff --git a/Userland/Libraries/LibJS/Contrib/Test262/$262Object.h b/Userland/Libraries/LibJS/Contrib/Test262/$262Object.h
index aa586f58dc..ac4a21d947 100644
--- a/Userland/Libraries/LibJS/Contrib/Test262/$262Object.h
+++ b/Userland/Libraries/LibJS/Contrib/Test262/$262Object.h
@@ -17,11 +17,12 @@ class $262Object final : public Object {
JS_OBJECT($262Object, Object);
public:
- explicit $262Object(Realm&);
virtual void initialize(JS::Realm&) override;
virtual ~$262Object() override = default;
private:
+ explicit $262Object(Realm&);
+
virtual void visit_edges(Visitor&) override;
AgentObject* m_agent { nullptr };
diff --git a/Userland/Libraries/LibJS/Contrib/Test262/AgentObject.h b/Userland/Libraries/LibJS/Contrib/Test262/AgentObject.h
index 262d939994..3daf6e166d 100644
--- a/Userland/Libraries/LibJS/Contrib/Test262/AgentObject.h
+++ b/Userland/Libraries/LibJS/Contrib/Test262/AgentObject.h
@@ -15,11 +15,12 @@ class AgentObject final : public Object {
JS_OBJECT(AgentObject, Object);
public:
- explicit AgentObject(Realm&);
virtual void initialize(JS::Realm&) override;
virtual ~AgentObject() override = default;
private:
+ explicit AgentObject(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(monotonic_now);
JS_DECLARE_NATIVE_FUNCTION(sleep);
};
diff --git a/Userland/Libraries/LibJS/Contrib/Test262/GlobalObject.h b/Userland/Libraries/LibJS/Contrib/Test262/GlobalObject.h
index f095233c1a..84cbdb5889 100644
--- a/Userland/Libraries/LibJS/Contrib/Test262/GlobalObject.h
+++ b/Userland/Libraries/LibJS/Contrib/Test262/GlobalObject.h
@@ -15,16 +15,17 @@ class GlobalObject final : public JS::GlobalObject {
JS_OBJECT(GlobalObject, JS::GlobalObject);
public:
- GlobalObject(JS::Realm& realm)
- : JS::GlobalObject(realm)
- {
- }
virtual void initialize(Realm&) override;
virtual ~GlobalObject() override = default;
$262Object* $262() const { return m_$262; }
private:
+ GlobalObject(JS::Realm& realm)
+ : JS::GlobalObject(realm)
+ {
+ }
+
virtual void visit_edges(Visitor&) override;
$262Object* m_$262 { nullptr };
diff --git a/Userland/Libraries/LibJS/Contrib/Test262/IsHTMLDDA.h b/Userland/Libraries/LibJS/Contrib/Test262/IsHTMLDDA.h
index f34322e4ea..f8b1788b0a 100644
--- a/Userland/Libraries/LibJS/Contrib/Test262/IsHTMLDDA.h
+++ b/Userland/Libraries/LibJS/Contrib/Test262/IsHTMLDDA.h
@@ -14,12 +14,13 @@ class IsHTMLDDA final : public NativeFunction {
JS_OBJECT(IsHTMLDDA, NativeFunction);
public:
- explicit IsHTMLDDA(Realm&);
virtual ~IsHTMLDDA() override = default;
virtual ThrowCompletionOr<Value> call() override;
private:
+ explicit IsHTMLDDA(Realm&);
+
virtual bool is_htmldda() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/Accessor.h b/Userland/Libraries/LibJS/Runtime/Accessor.h
index a665a64e10..1ed693df4f 100644
--- a/Userland/Libraries/LibJS/Runtime/Accessor.h
+++ b/Userland/Libraries/LibJS/Runtime/Accessor.h
@@ -22,12 +22,6 @@ public:
return vm.heap().allocate_without_realm<Accessor>(getter, setter);
}
- Accessor(FunctionObject* getter, FunctionObject* setter)
- : m_getter(getter)
- , m_setter(setter)
- {
- }
-
FunctionObject* getter() const { return m_getter; }
void set_getter(FunctionObject* getter) { m_getter = getter; }
@@ -41,6 +35,12 @@ public:
}
private:
+ Accessor(FunctionObject* getter, FunctionObject* setter)
+ : m_getter(getter)
+ , m_setter(setter)
+ {
+ }
+
FunctionObject* m_getter { nullptr };
FunctionObject* m_setter { nullptr };
};
diff --git a/Userland/Libraries/LibJS/Runtime/AggregateError.h b/Userland/Libraries/LibJS/Runtime/AggregateError.h
index 23e74be65f..d1ff1af061 100644
--- a/Userland/Libraries/LibJS/Runtime/AggregateError.h
+++ b/Userland/Libraries/LibJS/Runtime/AggregateError.h
@@ -16,9 +16,10 @@ class AggregateError : public Error {
public:
static AggregateError* create(Realm&);
+ virtual ~AggregateError() override = default;
+private:
explicit AggregateError(Object& prototype);
- virtual ~AggregateError() override = default;
};
}
diff --git a/Userland/Libraries/LibJS/Runtime/AggregateErrorConstructor.h b/Userland/Libraries/LibJS/Runtime/AggregateErrorConstructor.h
index c2d6a7c2a4..7d3492d5b9 100644
--- a/Userland/Libraries/LibJS/Runtime/AggregateErrorConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/AggregateErrorConstructor.h
@@ -14,7 +14,6 @@ class AggregateErrorConstructor final : public NativeFunction {
JS_OBJECT(AggregateErrorConstructor, NativeFunction);
public:
- explicit AggregateErrorConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~AggregateErrorConstructor() override = default;
@@ -22,6 +21,7 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit AggregateErrorConstructor(Realm&);
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/AggregateErrorPrototype.h b/Userland/Libraries/LibJS/Runtime/AggregateErrorPrototype.h
index b1aae1b60d..420a0864f0 100644
--- a/Userland/Libraries/LibJS/Runtime/AggregateErrorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/AggregateErrorPrototype.h
@@ -14,9 +14,11 @@ class AggregateErrorPrototype final : public Object {
JS_OBJECT(AggregateErrorPrototype, Object);
public:
- explicit AggregateErrorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~AggregateErrorPrototype() override = default;
+
+private:
+ explicit AggregateErrorPrototype(Realm&);
};
}
diff --git a/Userland/Libraries/LibJS/Runtime/ArgumentsObject.h b/Userland/Libraries/LibJS/Runtime/ArgumentsObject.h
index ce23d81e92..c3c9f30801 100644
--- a/Userland/Libraries/LibJS/Runtime/ArgumentsObject.h
+++ b/Userland/Libraries/LibJS/Runtime/ArgumentsObject.h
@@ -16,8 +16,6 @@ class ArgumentsObject final : public Object {
JS_OBJECT(ArgumentsObject, Object);
public:
- ArgumentsObject(Realm&, Environment&);
-
virtual void initialize(Realm&) override;
virtual ~ArgumentsObject() override = default;
@@ -33,6 +31,8 @@ public:
Object& parameter_map() { return *m_parameter_map; }
private:
+ ArgumentsObject(Realm&, Environment&);
+
virtual void visit_edges(Cell::Visitor&) override;
Environment& m_environment;
diff --git a/Userland/Libraries/LibJS/Runtime/Array.h b/Userland/Libraries/LibJS/Runtime/Array.h
index 5ccb0e8d65..dd988309b7 100644
--- a/Userland/Libraries/LibJS/Runtime/Array.h
+++ b/Userland/Libraries/LibJS/Runtime/Array.h
@@ -44,6 +44,9 @@ public:
[[nodiscard]] bool length_is_writable() const { return m_length_writable; };
+protected:
+ explicit Array(Object& prototype);
+
private:
ThrowCompletionOr<bool> set_length(PropertyDescriptor const&);
diff --git a/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h b/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h
index 830f899d5a..34f4655654 100644
--- a/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h
+++ b/Userland/Libraries/LibJS/Runtime/ArrayBuffer.h
@@ -29,8 +29,6 @@ public:
static ArrayBuffer* create(Realm&, ByteBuffer);
static ArrayBuffer* create(Realm&, ByteBuffer*);
- ArrayBuffer(ByteBuffer buffer, Object& prototype);
- ArrayBuffer(ByteBuffer* buffer, Object& prototype);
virtual ~ArrayBuffer() override = default;
size_t byte_length() const { return buffer_impl().size(); }
@@ -58,6 +56,9 @@ public:
Value get_modify_set_value(size_t byte_index, Value value, ReadWriteModifyFunction operation, bool is_little_endian = true);
private:
+ ArrayBuffer(ByteBuffer buffer, Object& prototype);
+ ArrayBuffer(ByteBuffer* buffer, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
ByteBuffer& buffer_impl()
diff --git a/Userland/Libraries/LibJS/Runtime/ArrayBufferConstructor.h b/Userland/Libraries/LibJS/Runtime/ArrayBufferConstructor.h
index 3d5d2b5f1d..4befd09841 100644
--- a/Userland/Libraries/LibJS/Runtime/ArrayBufferConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/ArrayBufferConstructor.h
@@ -14,7 +14,6 @@ class ArrayBufferConstructor final : public NativeFunction {
JS_OBJECT(ArrayBufferConstructor, NativeFunction);
public:
- explicit ArrayBufferConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~ArrayBufferConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit ArrayBufferConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(is_view);
diff --git a/Userland/Libraries/LibJS/Runtime/ArrayBufferPrototype.h b/Userland/Libraries/LibJS/Runtime/ArrayBufferPrototype.h
index 62b0e2b5b2..5cec046f5c 100644
--- a/Userland/Libraries/LibJS/Runtime/ArrayBufferPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/ArrayBufferPrototype.h
@@ -15,11 +15,12 @@ class ArrayBufferPrototype final : public PrototypeObject<ArrayBufferPrototype,
JS_PROTOTYPE_OBJECT(ArrayBufferPrototype, ArrayBuffer, ArrayBuffer);
public:
- explicit ArrayBufferPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~ArrayBufferPrototype() override = default;
private:
+ explicit ArrayBufferPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(slice);
JS_DECLARE_NATIVE_FUNCTION(byte_length_getter);
};
diff --git a/Userland/Libraries/LibJS/Runtime/ArrayConstructor.h b/Userland/Libraries/LibJS/Runtime/ArrayConstructor.h
index 24021c6c19..dd972edf50 100644
--- a/Userland/Libraries/LibJS/Runtime/ArrayConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/ArrayConstructor.h
@@ -14,7 +14,6 @@ class ArrayConstructor final : public NativeFunction {
JS_OBJECT(ArrayConstructor, NativeFunction);
public:
- explicit ArrayConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~ArrayConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit ArrayConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/ArrayIterator.h b/Userland/Libraries/LibJS/Runtime/ArrayIterator.h
index fca149fb16..e296a85d0d 100644
--- a/Userland/Libraries/LibJS/Runtime/ArrayIterator.h
+++ b/Userland/Libraries/LibJS/Runtime/ArrayIterator.h
@@ -16,7 +16,6 @@ class ArrayIterator final : public Object {
public:
static ArrayIterator* create(Realm&, Value array, Object::PropertyKind iteration_kind);
- explicit ArrayIterator(Value array, Object::PropertyKind iteration_kind, Object& prototype);
virtual ~ArrayIterator() override = default;
Value array() const { return m_array; }
@@ -26,6 +25,8 @@ public:
private:
friend class ArrayIteratorPrototype;
+ ArrayIterator(Value array, Object::PropertyKind iteration_kind, Object& prototype);
+
virtual void visit_edges(Cell::Visitor&) override;
Value m_array;
diff --git a/Userland/Libraries/LibJS/Runtime/ArrayIteratorPrototype.h b/Userland/Libraries/LibJS/Runtime/ArrayIteratorPrototype.h
index ad48f8e372..25c53bdcec 100644
--- a/Userland/Libraries/LibJS/Runtime/ArrayIteratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/ArrayIteratorPrototype.h
@@ -15,11 +15,12 @@ class ArrayIteratorPrototype final : public PrototypeObject<ArrayIteratorPrototy
JS_PROTOTYPE_OBJECT(ArrayIteratorPrototype, ArrayIterator, ArrayIterator);
public:
- ArrayIteratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~ArrayIteratorPrototype() override = default;
private:
+ explicit ArrayIteratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(next);
};
diff --git a/Userland/Libraries/LibJS/Runtime/ArrayPrototype.h b/Userland/Libraries/LibJS/Runtime/ArrayPrototype.h
index e204a30aa0..1b29a08b5a 100644
--- a/Userland/Libraries/LibJS/Runtime/ArrayPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/ArrayPrototype.h
@@ -15,11 +15,12 @@ class ArrayPrototype final : public Array {
JS_OBJECT(ArrayPrototype, Array);
public:
- ArrayPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~ArrayPrototype() override = default;
private:
+ explicit ArrayPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(at);
JS_DECLARE_NATIVE_FUNCTION(concat);
JS_DECLARE_NATIVE_FUNCTION(copy_within);
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncFromSyncIterator.h b/Userland/Libraries/LibJS/Runtime/AsyncFromSyncIterator.h
index 89dc61663d..451d3ac953 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncFromSyncIterator.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncFromSyncIterator.h
@@ -19,7 +19,6 @@ class AsyncFromSyncIterator final : public Object {
public:
static AsyncFromSyncIterator* create(Realm&, Iterator sync_iterator_record);
- explicit AsyncFromSyncIterator(Realm&, Iterator sync_iterator_record);
virtual void initialize(Realm&) override;
virtual ~AsyncFromSyncIterator() override = default;
@@ -29,6 +28,8 @@ public:
Iterator const& sync_iterator_record() const { return m_sync_iterator_record; }
private:
+ AsyncFromSyncIterator(Realm&, Iterator sync_iterator_record);
+
Iterator m_sync_iterator_record; // [[SyncIteratorRecord]]
};
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncFromSyncIteratorPrototype.h b/Userland/Libraries/LibJS/Runtime/AsyncFromSyncIteratorPrototype.h
index 1f1e5fda69..dd941b9784 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncFromSyncIteratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncFromSyncIteratorPrototype.h
@@ -19,11 +19,12 @@ class AsyncFromSyncIteratorPrototype final : public PrototypeObject<AsyncFromSyn
JS_PROTOTYPE_OBJECT(AsyncFromSyncIteratorPrototype, AsyncFromSyncIterator, AsyncFromSyncIterator);
public:
- explicit AsyncFromSyncIteratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~AsyncFromSyncIteratorPrototype() override = default;
private:
+ explicit AsyncFromSyncIteratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(next);
JS_DECLARE_NATIVE_FUNCTION(return_);
JS_DECLARE_NATIVE_FUNCTION(throw_);
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncFunctionConstructor.h b/Userland/Libraries/LibJS/Runtime/AsyncFunctionConstructor.h
index 1cc9865eb5..38fa14f9cf 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncFunctionConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncFunctionConstructor.h
@@ -15,7 +15,6 @@ class AsyncFunctionConstructor final : public NativeFunction {
JS_OBJECT(AsyncFunctionConstructor, NativeFunction);
public:
- explicit AsyncFunctionConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~AsyncFunctionConstructor() override = default;
@@ -23,6 +22,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit AsyncFunctionConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncFunctionDriverWrapper.h b/Userland/Libraries/LibJS/Runtime/AsyncFunctionDriverWrapper.h
index 40f92034a5..c1f34c8d65 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncFunctionDriverWrapper.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncFunctionDriverWrapper.h
@@ -19,7 +19,6 @@ class AsyncFunctionDriverWrapper final : public Promise {
public:
static ThrowCompletionOr<Value> create(Realm&, GeneratorObject*);
- explicit AsyncFunctionDriverWrapper(Realm&, GeneratorObject*);
virtual ~AsyncFunctionDriverWrapper() override = default;
void visit_edges(Cell::Visitor&) override;
@@ -27,6 +26,8 @@ public:
ThrowCompletionOr<Value> react_to_async_task_completion(VM&, Value, bool is_successful);
private:
+ AsyncFunctionDriverWrapper(Realm&, GeneratorObject*);
+
GeneratorObject* m_generator_object { nullptr };
NativeFunction* m_on_fulfillment { nullptr };
NativeFunction* m_on_rejection { nullptr };
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncFunctionPrototype.h b/Userland/Libraries/LibJS/Runtime/AsyncFunctionPrototype.h
index 04f731dbbc..44a532f8bc 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncFunctionPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncFunctionPrototype.h
@@ -14,9 +14,11 @@ class AsyncFunctionPrototype final : public Object {
JS_OBJECT(AsyncFunctionPrototype, Object);
public:
- explicit AsyncFunctionPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~AsyncFunctionPrototype() override = default;
+
+private:
+ explicit AsyncFunctionPrototype(Realm&);
};
}
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncGenerator.h b/Userland/Libraries/LibJS/Runtime/AsyncGenerator.h
index 7154b851e1..d43df4f8e0 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncGenerator.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncGenerator.h
@@ -26,10 +26,11 @@ public:
Completed,
};
- explicit AsyncGenerator(Object& prototype);
virtual ~AsyncGenerator() override = default;
private:
+ explicit AsyncGenerator(Object& prototype);
+
virtual void visit_edges(Cell::Visitor&) override;
// At the time of constructing an AsyncGenerator, we still need to point to an
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionConstructor.h b/Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionConstructor.h
index d59fcbb089..f3c474e36e 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionConstructor.h
@@ -14,7 +14,6 @@ class AsyncGeneratorFunctionConstructor final : public NativeFunction {
JS_OBJECT(AsyncGeneratorFunctionConstructor, NativeFunction);
public:
- explicit AsyncGeneratorFunctionConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~AsyncGeneratorFunctionConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit AsyncGeneratorFunctionConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionPrototype.h b/Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionPrototype.h
index 558f53cbbd..602a947d94 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncGeneratorFunctionPrototype.h
@@ -14,9 +14,11 @@ class AsyncGeneratorFunctionPrototype final : public PrototypeObject<AsyncGenera
JS_PROTOTYPE_OBJECT(AsyncGeneratorFunctionPrototype, AsyncGeneratorFunction, AsyncGeneratorFunction);
public:
- explicit AsyncGeneratorFunctionPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~AsyncGeneratorFunctionPrototype() override = default;
+
+private:
+ explicit AsyncGeneratorFunctionPrototype(Realm&);
};
}
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncGeneratorPrototype.h b/Userland/Libraries/LibJS/Runtime/AsyncGeneratorPrototype.h
index 24026c3962..03f7d627b0 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncGeneratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncGeneratorPrototype.h
@@ -15,9 +15,11 @@ class AsyncGeneratorPrototype final : public PrototypeObject<AsyncGeneratorProto
JS_PROTOTYPE_OBJECT(AsyncGeneratorPrototype, AsyncGenerator, AsyncGenerator)
public:
- explicit AsyncGeneratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~AsyncGeneratorPrototype() override = default;
+
+private:
+ explicit AsyncGeneratorPrototype(Realm&);
};
}
diff --git a/Userland/Libraries/LibJS/Runtime/AsyncIteratorPrototype.h b/Userland/Libraries/LibJS/Runtime/AsyncIteratorPrototype.h
index 16d545acad..07f2f962aa 100644
--- a/Userland/Libraries/LibJS/Runtime/AsyncIteratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/AsyncIteratorPrototype.h
@@ -14,11 +14,12 @@ class AsyncIteratorPrototype final : public Object {
JS_OBJECT(AsyncIteratorPrototype, Object)
public:
- explicit AsyncIteratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~AsyncIteratorPrototype() override = default;
private:
+ explicit AsyncIteratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(symbol_async_iterator);
};
diff --git a/Userland/Libraries/LibJS/Runtime/AtomicsObject.h b/Userland/Libraries/LibJS/Runtime/AtomicsObject.h
index 8beb801ec8..1e245d8590 100644
--- a/Userland/Libraries/LibJS/Runtime/AtomicsObject.h
+++ b/Userland/Libraries/LibJS/Runtime/AtomicsObject.h
@@ -14,11 +14,12 @@ class AtomicsObject : public Object {
JS_OBJECT(AtomicsObject, Object);
public:
- explicit AtomicsObject(Realm&);
virtual void initialize(Realm&) override;
virtual ~AtomicsObject() override = default;
private:
+ explicit AtomicsObject(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(add);
JS_DECLARE_NATIVE_FUNCTION(and_);
JS_DECLARE_NATIVE_FUNCTION(compare_exchange);
diff --git a/Userland/Libraries/LibJS/Runtime/BigInt.h b/Userland/Libraries/LibJS/Runtime/BigInt.h
index a9ea12d7d6..00365aa58a 100644
--- a/Userland/Libraries/LibJS/Runtime/BigInt.h
+++ b/Userland/Libraries/LibJS/Runtime/BigInt.h
@@ -16,13 +16,14 @@ class BigInt final : public Cell {
JS_CELL(BigInt, Cell);
public:
- explicit BigInt(Crypto::SignedBigInteger);
virtual ~BigInt() override = default;
Crypto::SignedBigInteger const& big_integer() const { return m_big_integer; }
const String to_string() const { return String::formatted("{}n", m_big_integer.to_base(10)); }
private:
+ explicit BigInt(Crypto::SignedBigInteger);
+
Crypto::SignedBigInteger m_big_integer;
};
diff --git a/Userland/Libraries/LibJS/Runtime/BigIntConstructor.h b/Userland/Libraries/LibJS/Runtime/BigIntConstructor.h
index 62452b084b..a5448f5156 100644
--- a/Userland/Libraries/LibJS/Runtime/BigIntConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/BigIntConstructor.h
@@ -14,7 +14,6 @@ class BigIntConstructor final : public NativeFunction {
JS_OBJECT(BigIntConstructor, NativeFunction);
public:
- explicit BigIntConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~BigIntConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit BigIntConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(as_int_n);
diff --git a/Userland/Libraries/LibJS/Runtime/BigIntObject.h b/Userland/Libraries/LibJS/Runtime/BigIntObject.h
index 2eb03f5c90..e8fcf6268e 100644
--- a/Userland/Libraries/LibJS/Runtime/BigIntObject.h
+++ b/Userland/Libraries/LibJS/Runtime/BigIntObject.h
@@ -17,13 +17,14 @@ class BigIntObject final : public Object {
public:
static BigIntObject* create(Realm&, BigInt&);
- BigIntObject(BigInt&, Object& prototype);
virtual ~BigIntObject() override = default;
BigInt const& bigint() const { return m_bigint; }
BigInt& bigint() { return m_bigint; }
private:
+ BigIntObject(BigInt&, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
BigInt& m_bigint;
diff --git a/Userland/Libraries/LibJS/Runtime/BigIntPrototype.h b/Userland/Libraries/LibJS/Runtime/BigIntPrototype.h
index d1e3b59a5e..ca95f9684b 100644
--- a/Userland/Libraries/LibJS/Runtime/BigIntPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/BigIntPrototype.h
@@ -14,11 +14,12 @@ class BigIntPrototype final : public Object {
JS_OBJECT(BigIntPrototype, Object);
public:
- explicit BigIntPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~BigIntPrototype() override = default;
private:
+ explicit BigIntPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(to_string);
JS_DECLARE_NATIVE_FUNCTION(to_locale_string);
JS_DECLARE_NATIVE_FUNCTION(value_of);
diff --git a/Userland/Libraries/LibJS/Runtime/BooleanConstructor.h b/Userland/Libraries/LibJS/Runtime/BooleanConstructor.h
index fa2c8a825f..71cd414339 100644
--- a/Userland/Libraries/LibJS/Runtime/BooleanConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/BooleanConstructor.h
@@ -14,7 +14,6 @@ class BooleanConstructor final : public NativeFunction {
JS_OBJECT(BooleanConstructor, NativeFunction);
public:
- explicit BooleanConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~BooleanConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit BooleanConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/BooleanObject.h b/Userland/Libraries/LibJS/Runtime/BooleanObject.h
index 4be928dcd7..308e3e8dac 100644
--- a/Userland/Libraries/LibJS/Runtime/BooleanObject.h
+++ b/Userland/Libraries/LibJS/Runtime/BooleanObject.h
@@ -16,11 +16,13 @@ class BooleanObject : public Object {
public:
static BooleanObject* create(Realm&, bool);
- BooleanObject(bool, Object& prototype);
virtual ~BooleanObject() override = default;
bool boolean() const { return m_value; }
+protected:
+ BooleanObject(bool, Object& prototype);
+
private:
bool m_value { false };
};
diff --git a/Userland/Libraries/LibJS/Runtime/BooleanPrototype.h b/Userland/Libraries/LibJS/Runtime/BooleanPrototype.h
index 269b572319..83af2e841d 100644
--- a/Userland/Libraries/LibJS/Runtime/BooleanPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/BooleanPrototype.h
@@ -14,11 +14,12 @@ class BooleanPrototype final : public BooleanObject {
JS_OBJECT(BooleanPrototype, BooleanObject);
public:
- explicit BooleanPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~BooleanPrototype() override = default;
private:
+ explicit BooleanPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(to_string);
JS_DECLARE_NATIVE_FUNCTION(value_of);
};
diff --git a/Userland/Libraries/LibJS/Runtime/BoundFunction.h b/Userland/Libraries/LibJS/Runtime/BoundFunction.h
index 85425be94a..a5e11c6498 100644
--- a/Userland/Libraries/LibJS/Runtime/BoundFunction.h
+++ b/Userland/Libraries/LibJS/Runtime/BoundFunction.h
@@ -17,7 +17,6 @@ class BoundFunction final : public FunctionObject {
public:
static ThrowCompletionOr<BoundFunction*> create(Realm&, FunctionObject& target_function, Value bound_this, Vector<Value> bound_arguments);
- BoundFunction(Realm&, FunctionObject& target_function, Value bound_this, Vector<Value> bound_arguments, Object* prototype);
virtual ~BoundFunction() override = default;
virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override;
@@ -32,6 +31,8 @@ public:
Vector<Value> const& bound_arguments() const { return m_bound_arguments; }
private:
+ BoundFunction(Realm&, FunctionObject& target_function, Value bound_this, Vector<Value> bound_arguments, Object* prototype);
+
virtual void visit_edges(Visitor&) override;
FunctionObject* m_bound_target_function { nullptr }; // [[BoundTargetFunction]]
diff --git a/Userland/Libraries/LibJS/Runtime/ConsoleObject.h b/Userland/Libraries/LibJS/Runtime/ConsoleObject.h
index 405f02bf56..a4bb63f273 100644
--- a/Userland/Libraries/LibJS/Runtime/ConsoleObject.h
+++ b/Userland/Libraries/LibJS/Runtime/ConsoleObject.h
@@ -14,13 +14,14 @@ class ConsoleObject final : public Object {
JS_OBJECT(ConsoleObject, Object);
public:
- explicit ConsoleObject(Realm&);
virtual void initialize(Realm&) override;
virtual ~ConsoleObject() override = default;
Console& console() { return *m_console; }
private:
+ explicit ConsoleObject(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(log);
JS_DECLARE_NATIVE_FUNCTION(debug);
JS_DECLARE_NATIVE_FUNCTION(info);
diff --git a/Userland/Libraries/LibJS/Runtime/DataView.h b/Userland/Libraries/LibJS/Runtime/DataView.h
index 4edb44cc88..a3c866023c 100644
--- a/Userland/Libraries/LibJS/Runtime/DataView.h
+++ b/Userland/Libraries/LibJS/Runtime/DataView.h
@@ -18,7 +18,6 @@ class DataView : public Object {
public:
static DataView* create(Realm&, ArrayBuffer*, size_t byte_length, size_t byte_offset);
- explicit DataView(ArrayBuffer*, size_t byte_length, size_t byte_offset, Object& prototype);
virtual ~DataView() override = default;
ArrayBuffer* viewed_array_buffer() const { return m_viewed_array_buffer; }
@@ -26,6 +25,8 @@ public:
size_t byte_offset() const { return m_byte_offset; }
private:
+ DataView(ArrayBuffer*, size_t byte_length, size_t byte_offset, Object& prototype);
+
virtual void visit_edges(Visitor& visitor) override;
ArrayBuffer* m_viewed_array_buffer { nullptr };
diff --git a/Userland/Libraries/LibJS/Runtime/DataViewConstructor.h b/Userland/Libraries/LibJS/Runtime/DataViewConstructor.h
index 20d77f0dcf..e2b067a5b1 100644
--- a/Userland/Libraries/LibJS/Runtime/DataViewConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/DataViewConstructor.h
@@ -14,7 +14,6 @@ class DataViewConstructor final : public NativeFunction {
JS_OBJECT(DataViewConstructor, NativeFunction);
public:
- explicit DataViewConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~DataViewConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject&) override;
private:
+ explicit DataViewConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/DataViewPrototype.h b/Userland/Libraries/LibJS/Runtime/DataViewPrototype.h
index 979c7a3f32..7138918922 100644
--- a/Userland/Libraries/LibJS/Runtime/DataViewPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/DataViewPrototype.h
@@ -15,11 +15,12 @@ class DataViewPrototype final : public PrototypeObject<DataViewPrototype, DataVi
JS_PROTOTYPE_OBJECT(DataViewPrototype, DataView, DataView);
public:
- DataViewPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~DataViewPrototype() override = default;
private:
+ explicit DataViewPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(get_big_int_64);
JS_DECLARE_NATIVE_FUNCTION(get_big_uint_64);
JS_DECLARE_NATIVE_FUNCTION(get_float_32);
diff --git a/Userland/Libraries/LibJS/Runtime/Date.h b/Userland/Libraries/LibJS/Runtime/Date.h
index 93207b3aa3..86f259e30b 100644
--- a/Userland/Libraries/LibJS/Runtime/Date.h
+++ b/Userland/Libraries/LibJS/Runtime/Date.h
@@ -18,7 +18,6 @@ public:
static Date* create(Realm&, double date_value);
static Date* now(VM&);
- Date(double date_value, Object& prototype);
virtual ~Date() override = default;
double date_value() const { return m_date_value; }
@@ -27,6 +26,8 @@ public:
String iso_date_string() const;
private:
+ Date(double date_value, Object& prototype);
+
double m_date_value { 0 }; // [[DateValue]]
};
diff --git a/Userland/Libraries/LibJS/Runtime/DateConstructor.h b/Userland/Libraries/LibJS/Runtime/DateConstructor.h
index f7777c43f4..ba67fbabee 100644
--- a/Userland/Libraries/LibJS/Runtime/DateConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/DateConstructor.h
@@ -14,7 +14,6 @@ class DateConstructor final : public NativeFunction {
JS_OBJECT(DateConstructor, NativeFunction);
public:
- explicit DateConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~DateConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit DateConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(now);
diff --git a/Userland/Libraries/LibJS/Runtime/DatePrototype.h b/Userland/Libraries/LibJS/Runtime/DatePrototype.h
index 452fca295f..aaa63634bd 100644
--- a/Userland/Libraries/LibJS/Runtime/DatePrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/DatePrototype.h
@@ -15,11 +15,12 @@ class DatePrototype final : public PrototypeObject<DatePrototype, Date> {
JS_PROTOTYPE_OBJECT(DatePrototype, Date, Date);
public:
- explicit DatePrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~DatePrototype() override = default;
private:
+ explicit DatePrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(get_date);
JS_DECLARE_NATIVE_FUNCTION(get_day);
JS_DECLARE_NATIVE_FUNCTION(get_full_year);
diff --git a/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.h b/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.h
index 8191663aba..0110f57d59 100644
--- a/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.h
+++ b/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.h
@@ -29,9 +29,6 @@ class DeclarativeEnvironment : public Environment {
public:
static DeclarativeEnvironment* create_for_per_iteration_bindings(Badge<ForStatement>, DeclarativeEnvironment& other, size_t bindings_size);
- DeclarativeEnvironment();
- explicit DeclarativeEnvironment(Environment* parent_environment);
- explicit DeclarativeEnvironment(Environment* parent_environment, Span<Binding const> bindings);
virtual ~DeclarativeEnvironment() override = default;
virtual ThrowCompletionOr<bool> has_binding(FlyString const& name, Optional<size_t>* = nullptr) const override;
@@ -62,6 +59,10 @@ public:
ThrowCompletionOr<void> set_mutable_binding_direct(VM&, size_t index, Value, bool strict);
protected:
+ DeclarativeEnvironment();
+ explicit DeclarativeEnvironment(Environment* parent_environment);
+ DeclarativeEnvironment(Environment* parent_environment, Span<Binding const> bindings);
+
virtual void visit_edges(Visitor&) override;
private:
diff --git a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h
index 29d7fcc5a7..038ab5f9c1 100644
--- a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h
+++ b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h
@@ -35,7 +35,6 @@ public:
static ECMAScriptFunctionObject* create(Realm&, FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {});
static ECMAScriptFunctionObject* create(Realm&, FlyString name, Object& prototype, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {});
- ECMAScriptFunctionObject(FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, Object& prototype, FunctionKind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name);
virtual void initialize(Realm&) override;
virtual ~ECMAScriptFunctionObject() override = default;
@@ -94,6 +93,8 @@ protected:
virtual Completion ordinary_call_evaluate_body();
private:
+ ECMAScriptFunctionObject(FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, Object& prototype, FunctionKind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name);
+
virtual bool is_ecmascript_function_object() const override { return true; }
virtual void visit_edges(Visitor&) override;
diff --git a/Userland/Libraries/LibJS/Runtime/Error.h b/Userland/Libraries/LibJS/Runtime/Error.h
index 761dee42d4..74a16db8f5 100644
--- a/Userland/Libraries/LibJS/Runtime/Error.h
+++ b/Userland/Libraries/LibJS/Runtime/Error.h
@@ -26,7 +26,6 @@ public:
static Error* create(Realm&);
static Error* create(Realm&, String const& message);
- explicit Error(Object& prototype);
virtual ~Error() override = default;
[[nodiscard]] String stack_string() const;
@@ -35,6 +34,9 @@ public:
Vector<TracebackFrame, 32> const& traceback() const { return m_traceback; }
+protected:
+ explicit Error(Object& prototype);
+
private:
void populate_stack();
Vector<TracebackFrame, 32> m_traceback;
diff --git a/Userland/Libraries/LibJS/Runtime/ErrorConstructor.h b/Userland/Libraries/LibJS/Runtime/ErrorConstructor.h
index caaf3022e1..98d3bea32d 100644
--- a/Userland/Libraries/LibJS/Runtime/ErrorConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/ErrorConstructor.h
@@ -15,7 +15,6 @@ class ErrorConstructor final : public NativeFunction {
JS_OBJECT(ErrorConstructor, NativeFunction);
public:
- explicit ErrorConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~ErrorConstructor() override = default;
@@ -23,6 +22,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit ErrorConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
@@ -31,14 +32,18 @@ private:
JS_OBJECT(ConstructorName, NativeFunction); \
\
public: \
- explicit ConstructorName(Realm&); \
virtual void initialize(Realm&) override; \
virtual ~ConstructorName() override; \
virtual ThrowCompletionOr<Value> call() override; \
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override; \
\
private: \
- virtual bool has_constructor() const override { return true; } \
+ explicit ConstructorName(Realm&); \
+ \
+ virtual bool has_constructor() const override \
+ { \
+ return true; \
+ } \
};
#define __JS_ENUMERATE(ClassName, snake_name, PrototypeName, ConstructorName, ArrayType) \
diff --git a/Userland/Libraries/LibJS/Runtime/ErrorPrototype.h b/Userland/Libraries/LibJS/Runtime/ErrorPrototype.h
index 285e786ec4..7be8d62fa4 100644
--- a/Userland/Libraries/LibJS/Runtime/ErrorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/ErrorPrototype.h
@@ -16,11 +16,12 @@ class ErrorPrototype final : public PrototypeObject<ErrorPrototype, Error> {
JS_PROTOTYPE_OBJECT(ErrorPrototype, Error, Error);
public:
- explicit ErrorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~ErrorPrototype() override = default;
private:
+ explicit ErrorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(to_string);
JS_DECLARE_NATIVE_FUNCTION(stack_getter);
JS_DECLARE_NATIVE_FUNCTION(stack_setter);
@@ -31,9 +32,11 @@ private:
JS_PROTOTYPE_OBJECT(PrototypeName, ClassName, ClassName); \
\
public: \
- explicit PrototypeName(Realm&); \
virtual void initialize(Realm&) override; \
virtual ~PrototypeName() override = default; \
+ \
+ private: \
+ explicit PrototypeName(Realm&); \
};
#define __JS_ENUMERATE(ClassName, snake_name, PrototypeName, ConstructorName, ArrayType) \
diff --git a/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.h b/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.h
index 83903c4b1b..39a2573a3f 100644
--- a/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.h
+++ b/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.h
@@ -22,7 +22,6 @@ class FinalizationRegistry final
JS_OBJECT(FinalizationRegistry, Object);
public:
- explicit FinalizationRegistry(Realm&, JobCallback, Object& prototype);
virtual ~FinalizationRegistry() override = default;
void add_finalization_record(Cell& target, Value held_value, Cell* unregister_token);
@@ -38,6 +37,8 @@ public:
JobCallback const& cleanup_callback() const { return m_cleanup_callback; }
private:
+ FinalizationRegistry(Realm&, JobCallback, Object& prototype);
+
virtual void visit_edges(Visitor& visitor) override;
Handle<Realm> m_realm;
diff --git a/Userland/Libraries/LibJS/Runtime/FinalizationRegistryConstructor.h b/Userland/Libraries/LibJS/Runtime/FinalizationRegistryConstructor.h
index 39c6c32649..d857c7bd4d 100644
--- a/Userland/Libraries/LibJS/Runtime/FinalizationRegistryConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/FinalizationRegistryConstructor.h
@@ -14,7 +14,6 @@ class FinalizationRegistryConstructor final : public NativeFunction {
JS_OBJECT(FinalizationRegistryConstructor, NativeFunction);
public:
- explicit FinalizationRegistryConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~FinalizationRegistryConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject&) override;
private:
+ explicit FinalizationRegistryConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h b/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h
index 29f2aac192..a63e759ca7 100644
--- a/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/FinalizationRegistryPrototype.h
@@ -15,11 +15,12 @@ class FinalizationRegistryPrototype final : public PrototypeObject<FinalizationR
JS_PROTOTYPE_OBJECT(FinalizationRegistryPrototype, FinalizationRegistry, FinalizationRegistry);
public:
- FinalizationRegistryPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~FinalizationRegistryPrototype() override = default;
private:
+ explicit FinalizationRegistryPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(cleanup_some);
JS_DECLARE_NATIVE_FUNCTION(register_);
JS_DECLARE_NATIVE_FUNCTION(unregister);
diff --git a/Userland/Libraries/LibJS/Runtime/FunctionConstructor.h b/Userland/Libraries/LibJS/Runtime/FunctionConstructor.h
index 54907c8bcb..0366034232 100644
--- a/Userland/Libraries/LibJS/Runtime/FunctionConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/FunctionConstructor.h
@@ -17,7 +17,6 @@ class FunctionConstructor final : public NativeFunction {
public:
static ThrowCompletionOr<ECMAScriptFunctionObject*> create_dynamic_function(VM&, FunctionObject& constructor, FunctionObject* new_target, FunctionKind kind, MarkedVector<Value> const& args);
- explicit FunctionConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~FunctionConstructor() override = default;
@@ -25,6 +24,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit FunctionConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.h b/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.h
index 8501a75239..679b5908d0 100644
--- a/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.h
+++ b/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.h
@@ -22,7 +22,6 @@ public:
Uninitialized,
};
- explicit FunctionEnvironment(Environment* parent_environment);
virtual ~FunctionEnvironment() override = default;
ThisBindingStatus this_binding_status() const { return m_this_binding_status; }
@@ -47,6 +46,8 @@ public:
ThrowCompletionOr<Value> bind_this_value(VM&, Value);
private:
+ explicit FunctionEnvironment(Environment* parent_environment);
+
virtual bool is_function_environment() const override { return true; }
virtual void visit_edges(Visitor&) override;
diff --git a/Userland/Libraries/LibJS/Runtime/FunctionPrototype.h b/Userland/Libraries/LibJS/Runtime/FunctionPrototype.h
index 91ce61e648..b9b1c92642 100644
--- a/Userland/Libraries/LibJS/Runtime/FunctionPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/FunctionPrototype.h
@@ -14,7 +14,6 @@ class FunctionPrototype final : public FunctionObject {
JS_OBJECT(FunctionPrototype, FunctionObject);
public:
- explicit FunctionPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~FunctionPrototype() override = default;
@@ -22,6 +21,8 @@ public:
virtual FlyString const& name() const override { return m_name; }
private:
+ explicit FunctionPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(apply);
JS_DECLARE_NATIVE_FUNCTION(bind);
JS_DECLARE_NATIVE_FUNCTION(call);
diff --git a/Userland/Libraries/LibJS/Runtime/GeneratorFunctionConstructor.h b/Userland/Libraries/LibJS/Runtime/GeneratorFunctionConstructor.h
index 49a9af4649..d4bc8eca2a 100644
--- a/Userland/Libraries/LibJS/Runtime/GeneratorFunctionConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/GeneratorFunctionConstructor.h
@@ -15,7 +15,6 @@ class GeneratorFunctionConstructor final : public NativeFunction {
JS_OBJECT(GeneratorFunctionConstructor, NativeFunction);
public:
- explicit GeneratorFunctionConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~GeneratorFunctionConstructor() override = default;
@@ -23,6 +22,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit GeneratorFunctionConstructor(Realm&);
+
bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/GeneratorFunctionPrototype.h b/Userland/Libraries/LibJS/Runtime/GeneratorFunctionPrototype.h
index dedd61c4f1..84c3483458 100644
--- a/Userland/Libraries/LibJS/Runtime/GeneratorFunctionPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/GeneratorFunctionPrototype.h
@@ -16,9 +16,11 @@ class GeneratorFunctionPrototype final : public Object {
JS_OBJECT(GeneratorFunctionPrototype, Object);
public:
- explicit GeneratorFunctionPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~GeneratorFunctionPrototype() override = default;
+
+private:
+ explicit GeneratorFunctionPrototype(Realm&);
};
}
diff --git a/Userland/Libraries/LibJS/Runtime/GeneratorObject.h b/Userland/Libraries/LibJS/Runtime/GeneratorObject.h
index 9432f87805..3beb777ce1 100644
--- a/Userland/Libraries/LibJS/Runtime/GeneratorObject.h
+++ b/Userland/Libraries/LibJS/Runtime/GeneratorObject.h
@@ -17,7 +17,6 @@ class GeneratorObject final : public Object {
public:
static ThrowCompletionOr<GeneratorObject*> create(Realm&, Value, ECMAScriptFunctionObject*, ExecutionContext, Bytecode::RegisterWindow);
- GeneratorObject(Realm&, Object& prototype, ExecutionContext);
virtual void initialize(Realm&) override;
virtual ~GeneratorObject() override = default;
void visit_edges(Cell::Visitor&) override;
@@ -26,6 +25,8 @@ public:
void set_done() { m_done = true; }
private:
+ GeneratorObject(Realm&, Object& prototype, ExecutionContext);
+
ExecutionContext m_execution_context;
ECMAScriptFunctionObject* m_generating_function { nullptr };
Value m_previous_value;
diff --git a/Userland/Libraries/LibJS/Runtime/GeneratorPrototype.h b/Userland/Libraries/LibJS/Runtime/GeneratorPrototype.h
index 1272c202f4..079e76c5ca 100644
--- a/Userland/Libraries/LibJS/Runtime/GeneratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/GeneratorPrototype.h
@@ -16,11 +16,12 @@ class GeneratorPrototype final : public PrototypeObject<GeneratorPrototype, Gene
JS_PROTOTYPE_OBJECT(GeneratorPrototype, GeneratorObject, Generator);
public:
- explicit GeneratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~GeneratorPrototype() override = default;
private:
+ explicit GeneratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(next);
JS_DECLARE_NATIVE_FUNCTION(return_);
JS_DECLARE_NATIVE_FUNCTION(throw_);
diff --git a/Userland/Libraries/LibJS/Runtime/GlobalEnvironment.h b/Userland/Libraries/LibJS/Runtime/GlobalEnvironment.h
index bed905d76f..8f7cf688f7 100644
--- a/Userland/Libraries/LibJS/Runtime/GlobalEnvironment.h
+++ b/Userland/Libraries/LibJS/Runtime/GlobalEnvironment.h
@@ -14,8 +14,6 @@ class GlobalEnvironment final : public Environment {
JS_ENVIRONMENT(GlobalEnvironment, Environment);
public:
- GlobalEnvironment(Object&, Object& this_value);
-
virtual bool has_this_binding() const final { return true; }
virtual ThrowCompletionOr<Value> get_this_binding(VM&) const final;
@@ -40,6 +38,8 @@ public:
ThrowCompletionOr<void> create_global_function_binding(FlyString const& name, Value, bool can_be_deleted);
private:
+ GlobalEnvironment(Object&, Object& this_value);
+
virtual bool is_global_environment() const override { return true; }
virtual void visit_edges(Visitor&) override;
diff --git a/Userland/Libraries/LibJS/Runtime/GlobalObject.h b/Userland/Libraries/LibJS/Runtime/GlobalObject.h
index 7fc1a24ab9..c40a1f8296 100644
--- a/Userland/Libraries/LibJS/Runtime/GlobalObject.h
+++ b/Userland/Libraries/LibJS/Runtime/GlobalObject.h
@@ -19,10 +19,12 @@ class GlobalObject : public Object {
friend class Intrinsics;
public:
- explicit GlobalObject(Realm&);
virtual void initialize(Realm&) override;
virtual ~GlobalObject() override;
+protected:
+ explicit GlobalObject(Realm&);
+
private:
virtual bool is_global_object() const final { return true; }
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/Collator.h b/Userland/Libraries/LibJS/Runtime/Intl/Collator.h
index 40f61f45d1..bd319bc801 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/Collator.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/Collator.h
@@ -43,7 +43,6 @@ public:
return AK::Array { "co"sv, "kf"sv, "kn"sv };
}
- explicit Collator(Object& prototype);
virtual ~Collator() override = default;
String const& locale() const { return m_locale; }
@@ -74,6 +73,8 @@ public:
void set_bound_compare(CollatorCompareFunction* bound_compare) { m_bound_compare = bound_compare; }
private:
+ explicit Collator(Object& prototype);
+
virtual void visit_edges(Visitor&) override;
String m_locale; // [[Locale]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/CollatorCompareFunction.h b/Userland/Libraries/LibJS/Runtime/Intl/CollatorCompareFunction.h
index 0bab632a37..3bdbc5dd6b 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/CollatorCompareFunction.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/CollatorCompareFunction.h
@@ -16,13 +16,14 @@ class CollatorCompareFunction : public NativeFunction {
public:
static CollatorCompareFunction* create(Realm&, Collator&);
- CollatorCompareFunction(Realm&, Collator&);
virtual void initialize(Realm&) override;
virtual ~CollatorCompareFunction() override = default;
virtual ThrowCompletionOr<Value> call() override;
private:
+ CollatorCompareFunction(Realm&, Collator&);
+
virtual void visit_edges(Visitor&) override;
Collator& m_collator; // [[Collator]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/CollatorConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/CollatorConstructor.h
index 778c817ce1..240122823e 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/CollatorConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/CollatorConstructor.h
@@ -14,7 +14,6 @@ class CollatorConstructor final : public NativeFunction {
JS_OBJECT(CollatorConstructor, NativeFunction);
public:
- explicit CollatorConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~CollatorConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit CollatorConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(supported_locales_of);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/CollatorPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/CollatorPrototype.h
index 42daa2e02d..f65e6d2f77 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/CollatorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/CollatorPrototype.h
@@ -15,11 +15,12 @@ class CollatorPrototype final : public PrototypeObject<CollatorPrototype, Collat
JS_PROTOTYPE_OBJECT(CollatorPrototype, Collator, Collator);
public:
- explicit CollatorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~CollatorPrototype() override = default;
private:
+ explicit CollatorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(compare_getter);
JS_DECLARE_NATIVE_FUNCTION(resolved_options);
};
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h
index 7ddf728f16..8c628d185d 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h
@@ -41,7 +41,6 @@ public:
return AK::Array { "ca"sv, "hc"sv, "nu"sv };
}
- DateTimeFormat(Object& prototype);
virtual ~DateTimeFormat() override = default;
String const& locale() const { return m_locale; }
@@ -128,6 +127,8 @@ public:
void set_bound_format(NativeFunction* bound_format) { m_bound_format = bound_format; }
private:
+ DateTimeFormat(Object& prototype);
+
static Style style_from_string(StringView style);
static StringView style_to_string(Style style);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.h
index 1e2bebbab7..1f0ea3f72e 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.h
@@ -14,7 +14,6 @@ class DateTimeFormatConstructor final : public NativeFunction {
JS_OBJECT(DateTimeFormatConstructor, NativeFunction);
public:
- explicit DateTimeFormatConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~DateTimeFormatConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit DateTimeFormatConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(supported_locales_of);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatFunction.h b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatFunction.h
index ece66beeec..d11669b8c7 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatFunction.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatFunction.h
@@ -18,13 +18,14 @@ class DateTimeFormatFunction final : public NativeFunction {
public:
static DateTimeFormatFunction* create(Realm&, DateTimeFormat&);
- explicit DateTimeFormatFunction(DateTimeFormat&, Object& prototype);
virtual ~DateTimeFormatFunction() override = default;
virtual void initialize(Realm&) override;
virtual ThrowCompletionOr<Value> call() override;
private:
+ explicit DateTimeFormatFunction(DateTimeFormat&, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
DateTimeFormat& m_date_time_format; // [[DateTimeFormat]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatPrototype.h
index bb925b7f98..c72a7bcae3 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatPrototype.h
@@ -15,11 +15,12 @@ class DateTimeFormatPrototype final : public PrototypeObject<DateTimeFormatProto
JS_PROTOTYPE_OBJECT(DateTimeFormatPrototype, DateTimeFormat, Intl.DateTimeFormat);
public:
- explicit DateTimeFormatPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~DateTimeFormatPrototype() override = default;
private:
+ explicit DateTimeFormatPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(format);
JS_DECLARE_NATIVE_FUNCTION(format_to_parts);
JS_DECLARE_NATIVE_FUNCTION(format_range);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DisplayNames.h b/Userland/Libraries/LibJS/Runtime/Intl/DisplayNames.h
index 23be399f5a..b9b677e2f6 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DisplayNames.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DisplayNames.h
@@ -39,7 +39,6 @@ class DisplayNames final : public Object {
};
public:
- DisplayNames(Object& prototype);
virtual ~DisplayNames() override = default;
String const& locale() const { return m_locale; }
@@ -63,6 +62,8 @@ public:
StringView language_display_string() const;
private:
+ DisplayNames(Object& prototype);
+
String m_locale; // [[Locale]]
Unicode::Style m_style { Unicode::Style::Long }; // [[Style]]
Type m_type { Type::Invalid }; // [[Type]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesConstructor.h
index 9686fc7cdd..ccd289d11b 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesConstructor.h
@@ -14,7 +14,6 @@ class DisplayNamesConstructor final : public NativeFunction {
JS_OBJECT(DisplayNamesConstructor, NativeFunction);
public:
- explicit DisplayNamesConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~DisplayNamesConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit DisplayNamesConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(supported_locales_of);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.h
index 77f82674ae..57bb97f0c3 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.h
@@ -15,11 +15,12 @@ class DisplayNamesPrototype final : public PrototypeObject<DisplayNamesPrototype
JS_PROTOTYPE_OBJECT(DisplayNamesPrototype, DisplayNames, Intl.DisplayNames);
public:
- explicit DisplayNamesPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~DisplayNamesPrototype() override = default;
private:
+ explicit DisplayNamesPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(of);
JS_DECLARE_NATIVE_FUNCTION(resolved_options);
};
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.h b/Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.h
index 575e861646..43f4f2e2e0 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.h
@@ -48,7 +48,6 @@ public:
return AK::Array { "nu"sv };
}
- explicit DurationFormat(Object& prototype);
virtual ~DurationFormat() override = default;
void set_locale(String locale) { m_locale = move(locale); }
@@ -148,6 +147,8 @@ public:
u8 fractional_digits() const { return m_fractional_digits.value(); }
private:
+ explicit DurationFormat(Object& prototype);
+
static Style style_from_string(StringView style);
static StringView style_to_string(Style);
static ValueStyle date_style_from_string(StringView date_style);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DurationFormatConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/DurationFormatConstructor.h
index f9199457bd..f0b37af706 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DurationFormatConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DurationFormatConstructor.h
@@ -14,7 +14,6 @@ class DurationFormatConstructor final : public NativeFunction {
JS_OBJECT(DurationFormatConstructor, NativeFunction);
public:
- explicit DurationFormatConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~DurationFormatConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit DurationFormatConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(supported_locales_of);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DurationFormatPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/DurationFormatPrototype.h
index a12677db6b..d10942cddf 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DurationFormatPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DurationFormatPrototype.h
@@ -15,11 +15,12 @@ class DurationFormatPrototype final : public PrototypeObject<DurationFormatProto
JS_PROTOTYPE_OBJECT(DurationFormatPrototype, DurationFormat, Intl.DurationFormat);
public:
- explicit DurationFormatPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~DurationFormatPrototype() override = default;
private:
+ explicit DurationFormatPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(format);
JS_DECLARE_NATIVE_FUNCTION(format_to_parts);
JS_DECLARE_NATIVE_FUNCTION(resolved_options);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/Intl.h b/Userland/Libraries/LibJS/Runtime/Intl/Intl.h
index c7aab2bdc4..0a9f262f5c 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/Intl.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/Intl.h
@@ -14,11 +14,12 @@ class Intl final : public Object {
JS_OBJECT(Intl, Object);
public:
- explicit Intl(Realm&);
virtual void initialize(Realm&) override;
virtual ~Intl() override = default;
private:
+ explicit Intl(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(get_canonical_locales);
JS_DECLARE_NATIVE_FUNCTION(supported_values_of);
};
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/ListFormat.h b/Userland/Libraries/LibJS/Runtime/Intl/ListFormat.h
index 550a400dfb..7a1f019d58 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/ListFormat.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/ListFormat.h
@@ -28,7 +28,6 @@ public:
Unit,
};
- ListFormat(Object& prototype);
virtual ~ListFormat() override = default;
String const& locale() const { return m_locale; }
@@ -43,6 +42,8 @@ public:
StringView style_string() const { return Unicode::style_to_string(m_style); }
private:
+ explicit ListFormat(Object& prototype);
+
String m_locale; // [[Locale]]
Type m_type { Type::Invalid }; // [[Type]]
Unicode::Style m_style { Unicode::Style::Long }; // [[Style]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/ListFormatConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/ListFormatConstructor.h
index e84065fcdd..3f4827ece2 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/ListFormatConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/ListFormatConstructor.h
@@ -14,7 +14,6 @@ class ListFormatConstructor final : public NativeFunction {
JS_OBJECT(ListFormatConstructor, NativeFunction);
public:
- explicit ListFormatConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~ListFormatConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit ListFormatConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(supported_locales_of);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/ListFormatPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/ListFormatPrototype.h
index bb9cde718f..74d5fe3714 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/ListFormatPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/ListFormatPrototype.h
@@ -15,11 +15,12 @@ class ListFormatPrototype final : public PrototypeObject<ListFormatPrototype, Li
JS_PROTOTYPE_OBJECT(ListFormatPrototype, ListFormat, Intl.ListFormat);
public:
- explicit ListFormatPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~ListFormatPrototype() override = default;
private:
+ explicit ListFormatPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(format);
JS_DECLARE_NATIVE_FUNCTION(format_to_parts);
JS_DECLARE_NATIVE_FUNCTION(resolved_options);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/Locale.h b/Userland/Libraries/LibJS/Runtime/Intl/Locale.h
index 2afdedfda7..0c8aa127f7 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/Locale.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/Locale.h
@@ -34,8 +34,6 @@ public:
return AK::Array { "ca"sv, "co"sv, "hc"sv, "kf"sv, "kn"sv, "nu"sv };
}
- Locale(Object& prototype);
- Locale(Unicode::LocaleID const&, Object& prototype);
virtual ~Locale() override = default;
String const& locale() const { return m_locale; }
@@ -65,6 +63,9 @@ public:
void set_numeric(bool numeric) { m_numeric = numeric; }
private:
+ explicit Locale(Object& prototype);
+ Locale(Unicode::LocaleID const&, Object& prototype);
+
String m_locale; // [[Locale]]
Optional<String> m_calendar; // [[Calendar]]
Optional<String> m_case_first; // [[CaseFirst]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/LocaleConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/LocaleConstructor.h
index e10856c295..d4524696cc 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/LocaleConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/LocaleConstructor.h
@@ -14,7 +14,6 @@ class LocaleConstructor final : public NativeFunction {
JS_OBJECT(LocaleConstructor, NativeFunction);
public:
- explicit LocaleConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~LocaleConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit LocaleConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/LocalePrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/LocalePrototype.h
index e84025fafd..03078adbfb 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/LocalePrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/LocalePrototype.h
@@ -15,11 +15,12 @@ class LocalePrototype final : public PrototypeObject<LocalePrototype, Locale> {
JS_PROTOTYPE_OBJECT(LocalePrototype, Locale, Intl.Locale);
public:
- explicit LocalePrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~LocalePrototype() override = default;
private:
+ explicit LocalePrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(maximize);
JS_DECLARE_NATIVE_FUNCTION(minimize);
JS_DECLARE_NATIVE_FUNCTION(to_string);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.h b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.h
index bedfd31cba..921f6db79c 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.h
@@ -56,7 +56,6 @@ public:
StripIfInteger,
};
- NumberFormatBase(Object& prototype);
virtual ~NumberFormatBase() override = default;
String const& locale() const { return m_locale; }
@@ -99,6 +98,9 @@ public:
StringView trailing_zero_display_string() const;
void set_trailing_zero_display(StringView trailing_zero_display);
+protected:
+ explicit NumberFormatBase(Object& prototype);
+
private:
String m_locale; // [[Locale]]
String m_data_locale; // [[DataLocale]]
@@ -174,7 +176,6 @@ public:
return AK::Array { "nu"sv };
}
- NumberFormat(Object& prototype);
virtual ~NumberFormat() override = default;
String const& numbering_system() const { return m_numbering_system; }
@@ -233,6 +234,8 @@ public:
Unicode::NumberFormat compact_format() const { return *m_compact_format; }
private:
+ explicit NumberFormat(Object& prototype);
+
virtual void visit_edges(Visitor&) override;
String m_locale; // [[Locale]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatConstructor.h
index 4d88eec5ff..ebe3bd603f 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatConstructor.h
@@ -15,7 +15,6 @@ class NumberFormatConstructor final : public NativeFunction {
JS_OBJECT(NumberFormatConstructor, NativeFunction);
public:
- explicit NumberFormatConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~NumberFormatConstructor() override = default;
@@ -23,6 +22,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit NumberFormatConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(supported_locales_of);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatFunction.h b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatFunction.h
index d562ca5c07..7ea30be9fc 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatFunction.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatFunction.h
@@ -18,13 +18,14 @@ class NumberFormatFunction final : public NativeFunction {
public:
static NumberFormatFunction* create(Realm&, NumberFormat&);
- explicit NumberFormatFunction(NumberFormat&, Object& prototype);
virtual ~NumberFormatFunction() override = default;
virtual void initialize(Realm&) override;
virtual ThrowCompletionOr<Value> call() override;
private:
+ explicit NumberFormatFunction(NumberFormat&, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
NumberFormat& m_number_format; // [[NumberFormat]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatPrototype.h
index 85e33daec9..4f5740662a 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormatPrototype.h
@@ -15,11 +15,12 @@ class NumberFormatPrototype final : public PrototypeObject<NumberFormatPrototype
JS_PROTOTYPE_OBJECT(NumberFormatPrototype, NumberFormat, Intl.NumberFormat);
public:
- explicit NumberFormatPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~NumberFormatPrototype() override = default;
private:
+ explicit NumberFormatPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(format);
JS_DECLARE_NATIVE_FUNCTION(format_to_parts);
JS_DECLARE_NATIVE_FUNCTION(format_range);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/PluralRules.h b/Userland/Libraries/LibJS/Runtime/Intl/PluralRules.h
index 86a353edcb..d5bc606d06 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/PluralRules.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/PluralRules.h
@@ -19,7 +19,6 @@ class PluralRules final : public NumberFormatBase {
JS_OBJECT(PluralRules, NumberFormatBase);
public:
- PluralRules(Object& prototype);
virtual ~PluralRules() override = default;
Unicode::PluralForm type() const { return m_type; }
@@ -27,6 +26,8 @@ public:
void set_type(StringView type) { m_type = Unicode::plural_form_from_string(type); }
private:
+ explicit PluralRules(Object& prototype);
+
Unicode::PluralForm m_type { Unicode::PluralForm::Cardinal }; // [[Type]]
};
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.h
index a622f2e230..5b7b7f73f9 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesConstructor.h
@@ -14,7 +14,6 @@ class PluralRulesConstructor final : public NativeFunction {
JS_OBJECT(PluralRulesConstructor, NativeFunction);
public:
- explicit PluralRulesConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~PluralRulesConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit PluralRulesConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(supported_locales_of);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesPrototype.h
index 35d794f401..5c48fa106e 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/PluralRulesPrototype.h
@@ -15,11 +15,12 @@ class PluralRulesPrototype final : public PrototypeObject<PluralRulesPrototype,
JS_PROTOTYPE_OBJECT(PluralRulesPrototype, PluralRules, Intl.PluralRules);
public:
- explicit PluralRulesPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~PluralRulesPrototype() override = default;
private:
+ explicit PluralRulesPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(select);
JS_DECLARE_NATIVE_FUNCTION(select_range);
JS_DECLARE_NATIVE_FUNCTION(resolved_options);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormat.h b/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormat.h
index ecf101bc75..22440bf6b9 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormat.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormat.h
@@ -33,7 +33,6 @@ public:
return AK::Array { "nu"sv };
}
- RelativeTimeFormat(Object& prototype);
virtual ~RelativeTimeFormat() override = default;
String const& locale() const { return m_locale; }
@@ -60,6 +59,8 @@ public:
void set_plural_rules(PluralRules* plural_rules) { m_plural_rules = plural_rules; }
private:
+ explicit RelativeTimeFormat(Object& prototype);
+
virtual void visit_edges(Cell::Visitor&) override;
String m_locale; // [[Locale]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatConstructor.h
index 205ad12c44..0fd742fb41 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatConstructor.h
@@ -14,7 +14,6 @@ class RelativeTimeFormatConstructor final : public NativeFunction {
JS_OBJECT(RelativeTimeFormatConstructor, NativeFunction);
public:
- explicit RelativeTimeFormatConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~RelativeTimeFormatConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit RelativeTimeFormatConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(supported_locales_of);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatPrototype.h
index e7d40f780e..4012ed2184 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/RelativeTimeFormatPrototype.h
@@ -15,11 +15,12 @@ class RelativeTimeFormatPrototype final : public PrototypeObject<RelativeTimeFor
JS_PROTOTYPE_OBJECT(RelativeTimeFormatPrototype, RelativeTimeFormat, Intl.RelativeTimeFormat);
public:
- explicit RelativeTimeFormatPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~RelativeTimeFormatPrototype() override = default;
private:
+ explicit RelativeTimeFormatPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(format);
JS_DECLARE_NATIVE_FUNCTION(format_to_parts);
JS_DECLARE_NATIVE_FUNCTION(resolved_options);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/SegmentIterator.h b/Userland/Libraries/LibJS/Runtime/Intl/SegmentIterator.h
index 02906050cd..58aa440e2b 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/SegmentIterator.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/SegmentIterator.h
@@ -18,7 +18,6 @@ class SegmentIterator final : public Object {
public:
static SegmentIterator* create(Realm&, Segmenter&, Utf16View const&, Segments const&);
- SegmentIterator(Realm&, Segmenter&, Utf16View const&, Segments const&);
virtual ~SegmentIterator() override = default;
Segmenter const& iterating_segmenter() const { return m_iterating_segmenter; }
@@ -29,6 +28,8 @@ public:
Segments const& segments() { return m_segments; }
private:
+ SegmentIterator(Realm&, Segmenter&, Utf16View const&, Segments const&);
+
virtual void visit_edges(Cell::Visitor&) override;
Segmenter& m_iterating_segmenter; // [[IteratingSegmenter]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/SegmentIteratorPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/SegmentIteratorPrototype.h
index de0d36d9dc..6be503d84f 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/SegmentIteratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/SegmentIteratorPrototype.h
@@ -15,11 +15,12 @@ class SegmentIteratorPrototype final : public PrototypeObject<SegmentIteratorPro
JS_PROTOTYPE_OBJECT(SegmentIteratorPrototype, SegmentIterator, SegmentIterator);
public:
- explicit SegmentIteratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~SegmentIteratorPrototype() override = default;
private:
+ explicit SegmentIteratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(next);
};
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/Segmenter.h b/Userland/Libraries/LibJS/Runtime/Intl/Segmenter.h
index 96a76cd96f..a8d91070c3 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/Segmenter.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/Segmenter.h
@@ -21,7 +21,6 @@ public:
Sentence,
};
- explicit Segmenter(Object& prototype);
virtual ~Segmenter() override = default;
String const& locale() const { return m_locale; }
@@ -32,6 +31,8 @@ public:
StringView segmenter_granularity_string() const;
private:
+ explicit Segmenter(Object& prototype);
+
String m_locale; // [[Locale]]
SegmenterGranularity m_segmenter_granularity { SegmenterGranularity::Grapheme }; // [[SegmenterGranularity]]
};
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/SegmenterConstructor.h b/Userland/Libraries/LibJS/Runtime/Intl/SegmenterConstructor.h
index 3931020f37..a9f90e8dbb 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/SegmenterConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/SegmenterConstructor.h
@@ -14,7 +14,6 @@ class SegmenterConstructor final : public NativeFunction {
JS_OBJECT(SegmenterConstructor, NativeFunction);
public:
- explicit SegmenterConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~SegmenterConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit SegmenterConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(supported_locales_of);
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/SegmenterPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/SegmenterPrototype.h
index 4f1942a055..672318f1cf 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/SegmenterPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/SegmenterPrototype.h
@@ -15,11 +15,12 @@ class SegmenterPrototype final : public PrototypeObject<SegmenterPrototype, Segm
JS_PROTOTYPE_OBJECT(SegmenterPrototype, Segmenter, Segmenter);
public:
- explicit SegmenterPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~SegmenterPrototype() override = default;
private:
+ explicit SegmenterPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(segment);
JS_DECLARE_NATIVE_FUNCTION(resolved_options);
};
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/Segments.h b/Userland/Libraries/LibJS/Runtime/Intl/Segments.h
index 251d132ad4..f4bb06166a 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/Segments.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/Segments.h
@@ -18,7 +18,6 @@ class Segments final : public Object {
public:
static Segments* create(Realm&, Segmenter&, Utf16String);
- Segments(Realm&, Segmenter&, Utf16String);
virtual ~Segments() override = default;
Segmenter& segments_segmenter() const { return m_segments_segmenter; }
@@ -28,6 +27,8 @@ public:
Optional<Vector<size_t>>& boundaries_cache() const { return m_boundaries_cache; }
private:
+ Segments(Realm&, Segmenter&, Utf16String);
+
virtual void visit_edges(Cell::Visitor&) override;
Segmenter& m_segments_segmenter; // [[SegmentsSegmenter]]
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/SegmentsPrototype.h b/Userland/Libraries/LibJS/Runtime/Intl/SegmentsPrototype.h
index 142c294c10..24ca244130 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/SegmentsPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Intl/SegmentsPrototype.h
@@ -15,11 +15,12 @@ class SegmentsPrototype final : public PrototypeObject<SegmentsPrototype, Segmen
JS_PROTOTYPE_OBJECT(SegmentsPrototype, Segments, Segments);
public:
- explicit SegmentsPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~SegmentsPrototype() override = default;
private:
+ explicit SegmentsPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(containing);
JS_DECLARE_NATIVE_FUNCTION(symbol_iterator);
};
diff --git a/Userland/Libraries/LibJS/Runtime/Intrinsics.h b/Userland/Libraries/LibJS/Runtime/Intrinsics.h
index 0d0cdb56f3..1c1ec426b1 100644
--- a/Userland/Libraries/LibJS/Runtime/Intrinsics.h
+++ b/Userland/Libraries/LibJS/Runtime/Intrinsics.h
@@ -18,8 +18,6 @@ class Intrinsics final : public Cell {
public:
static Intrinsics* create(Realm&);
- Intrinsics() = default;
-
Shape* empty_object_shape() { return m_empty_object_shape; }
Shape* new_object_shape() { return m_new_object_shape; }
@@ -114,6 +112,8 @@ public:
#undef __JS_ENUMERATE
private:
+ Intrinsics() = default;
+
virtual void visit_edges(Visitor&) override;
void initialize_intrinsics(Realm&);
diff --git a/Userland/Libraries/LibJS/Runtime/IteratorPrototype.h b/Userland/Libraries/LibJS/Runtime/IteratorPrototype.h
index 51161b6522..7dd85792ae 100644
--- a/Userland/Libraries/LibJS/Runtime/IteratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/IteratorPrototype.h
@@ -14,11 +14,12 @@ class IteratorPrototype : public Object {
JS_OBJECT(IteratorPrototype, Object)
public:
- IteratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~IteratorPrototype() override = default;
private:
+ IteratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(symbol_iterator);
};
diff --git a/Userland/Libraries/LibJS/Runtime/JSONObject.h b/Userland/Libraries/LibJS/Runtime/JSONObject.h
index 0fff26e1fd..0779e28b43 100644
--- a/Userland/Libraries/LibJS/Runtime/JSONObject.h
+++ b/Userland/Libraries/LibJS/Runtime/JSONObject.h
@@ -14,7 +14,6 @@ class JSONObject final : public Object {
JS_OBJECT(JSONObject, Object);
public:
- explicit JSONObject(Realm&);
virtual void initialize(Realm&) override;
virtual ~JSONObject() override = default;
@@ -25,6 +24,8 @@ public:
static Value parse_json_value(VM&, JsonValue const&);
private:
+ explicit JSONObject(Realm&);
+
struct StringifyState {
FunctionObject* replacer_function { nullptr };
HashTable<Object*> seen_objects;
diff --git a/Userland/Libraries/LibJS/Runtime/Map.h b/Userland/Libraries/LibJS/Runtime/Map.h
index 6cdef237b1..eed8cc4490 100644
--- a/Userland/Libraries/LibJS/Runtime/Map.h
+++ b/Userland/Libraries/LibJS/Runtime/Map.h
@@ -19,10 +19,12 @@ namespace JS {
class Map : public Object {
JS_OBJECT(Map, Object);
+ // NOTE: This awkwardness is due to Set using a Map internally.
+ friend class Set;
+
public:
static Map* create(Realm&);
- explicit Map(Object& prototype);
virtual ~Map() override = default;
void map_clear();
@@ -106,6 +108,7 @@ public:
EndIterator end() const { return {}; }
private:
+ explicit Map(Object& prototype);
virtual void visit_edges(Visitor& visitor) override;
size_t m_next_insertion_id { 0 };
diff --git a/Userland/Libraries/LibJS/Runtime/MapConstructor.h b/Userland/Libraries/LibJS/Runtime/MapConstructor.h
index ecf044339c..ed4d6c8ffc 100644
--- a/Userland/Libraries/LibJS/Runtime/MapConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/MapConstructor.h
@@ -14,7 +14,6 @@ class MapConstructor final : public NativeFunction {
JS_OBJECT(MapConstructor, NativeFunction);
public:
- explicit MapConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~MapConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject&) override;
private:
+ explicit MapConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(symbol_species_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/MapIterator.h b/Userland/Libraries/LibJS/Runtime/MapIterator.h
index 676f46c7d3..54641fa2ca 100644
--- a/Userland/Libraries/LibJS/Runtime/MapIterator.h
+++ b/Userland/Libraries/LibJS/Runtime/MapIterator.h
@@ -18,7 +18,6 @@ class MapIterator final : public Object {
public:
static MapIterator* create(Realm&, Map& map, Object::PropertyKind iteration_kind);
- explicit MapIterator(Map& map, Object::PropertyKind iteration_kind, Object& prototype);
virtual ~MapIterator() override = default;
Map& map() const { return m_map; }
@@ -28,6 +27,8 @@ public:
private:
friend class MapIteratorPrototype;
+ explicit MapIterator(Map& map, Object::PropertyKind iteration_kind, Object& prototype);
+
virtual void visit_edges(Cell::Visitor&) override;
Map& m_map;
diff --git a/Userland/Libraries/LibJS/Runtime/MapIteratorPrototype.h b/Userland/Libraries/LibJS/Runtime/MapIteratorPrototype.h
index 4aaf071e01..5f1e1db3c7 100644
--- a/Userland/Libraries/LibJS/Runtime/MapIteratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/MapIteratorPrototype.h
@@ -15,11 +15,12 @@ class MapIteratorPrototype final : public PrototypeObject<MapIteratorPrototype,
JS_PROTOTYPE_OBJECT(MapIteratorPrototype, MapIterator, MapIterator);
public:
- MapIteratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~MapIteratorPrototype() override = default;
private:
+ MapIteratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(next);
};
diff --git a/Userland/Libraries/LibJS/Runtime/MapPrototype.h b/Userland/Libraries/LibJS/Runtime/MapPrototype.h
index d8142b82d7..53a32640dc 100644
--- a/Userland/Libraries/LibJS/Runtime/MapPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/MapPrototype.h
@@ -15,11 +15,12 @@ class MapPrototype final : public PrototypeObject<MapPrototype, Map> {
JS_PROTOTYPE_OBJECT(MapPrototype, Map, Map);
public:
- MapPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~MapPrototype() override = default;
private:
+ explicit MapPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(clear);
JS_DECLARE_NATIVE_FUNCTION(delete_);
JS_DECLARE_NATIVE_FUNCTION(entries);
diff --git a/Userland/Libraries/LibJS/Runtime/MathObject.h b/Userland/Libraries/LibJS/Runtime/MathObject.h
index 5208e96d1f..a7253a5ba9 100644
--- a/Userland/Libraries/LibJS/Runtime/MathObject.h
+++ b/Userland/Libraries/LibJS/Runtime/MathObject.h
@@ -14,11 +14,12 @@ class MathObject final : public Object {
JS_OBJECT(MathObject, Object);
public:
- explicit MathObject(Realm&);
virtual void initialize(Realm&) override;
virtual ~MathObject() override = default;
private:
+ explicit MathObject(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(abs);
JS_DECLARE_NATIVE_FUNCTION(random);
JS_DECLARE_NATIVE_FUNCTION(sqrt);
diff --git a/Userland/Libraries/LibJS/Runtime/ModuleEnvironment.h b/Userland/Libraries/LibJS/Runtime/ModuleEnvironment.h
index 8670a915df..6b1b13e3f3 100644
--- a/Userland/Libraries/LibJS/Runtime/ModuleEnvironment.h
+++ b/Userland/Libraries/LibJS/Runtime/ModuleEnvironment.h
@@ -17,8 +17,6 @@ class ModuleEnvironment final : public DeclarativeEnvironment {
JS_ENVIRONMENT(ModuleEnvironment, DeclarativeEnvironment);
public:
- ModuleEnvironment(Environment* outer_environment);
-
// Note: Module Environment Records support all of the declarative Environment Record methods listed
// in Table 18 and share the same specifications for all of those methods except for
// GetBindingValue, DeleteBinding, HasThisBinding and GetThisBinding.
@@ -36,6 +34,8 @@ public:
virtual ThrowCompletionOr<bool> has_binding(FlyString const& name, Optional<size_t>* = nullptr) const override;
private:
+ explicit ModuleEnvironment(Environment* outer_environment);
+
struct IndirectBinding {
FlyString name;
Module* module;
diff --git a/Userland/Libraries/LibJS/Runtime/ModuleNamespaceObject.h b/Userland/Libraries/LibJS/Runtime/ModuleNamespaceObject.h
index 676e67a8c8..8c72cfd436 100644
--- a/Userland/Libraries/LibJS/Runtime/ModuleNamespaceObject.h
+++ b/Userland/Libraries/LibJS/Runtime/ModuleNamespaceObject.h
@@ -16,8 +16,6 @@ class ModuleNamespaceObject final : public Object {
JS_OBJECT(ModuleNamespaceObject, Object);
public:
- ModuleNamespaceObject(Realm&, Module* module, Vector<FlyString> exports);
-
// 10.4.6 Module Namespace Exotic Objects, https://tc39.es/ecma262/#sec-module-namespace-exotic-objects
virtual ThrowCompletionOr<Object*> internal_get_prototype_of() const override;
@@ -34,6 +32,8 @@ public:
virtual void initialize(Realm&) override;
private:
+ ModuleNamespaceObject(Realm&, Module* module, Vector<FlyString> exports);
+
// FIXME: UHHH how do we want to store this to avoid cycles but be safe??
Module* m_module; // [[Module]]
Vector<FlyString> m_exports; // [[Exports]]
diff --git a/Userland/Libraries/LibJS/Runtime/NativeFunction.h b/Userland/Libraries/LibJS/Runtime/NativeFunction.h
index a96517f7ed..510a255d42 100644
--- a/Userland/Libraries/LibJS/Runtime/NativeFunction.h
+++ b/Userland/Libraries/LibJS/Runtime/NativeFunction.h
@@ -23,8 +23,6 @@ public:
static NativeFunction* create(Realm&, Function<ThrowCompletionOr<Value>(VM&)> behaviour, i32 length, PropertyKey const& name, Optional<Realm*> = {}, Optional<Object*> prototype = {}, Optional<StringView> const& prefix = {});
static NativeFunction* create(Realm&, FlyString const& name, Function<ThrowCompletionOr<Value>(VM&)>);
- NativeFunction(Function<ThrowCompletionOr<Value>(VM&)>, Object* prototype, Realm& realm);
- NativeFunction(FlyString name, Function<ThrowCompletionOr<Value>(VM&)>, Object& prototype);
virtual void initialize(Realm&) override { }
virtual ~NativeFunction() override = default;
@@ -46,6 +44,8 @@ public:
protected:
NativeFunction(FlyString name, Object& prototype);
+ NativeFunction(Function<ThrowCompletionOr<Value>(VM&)>, Object* prototype, Realm& realm);
+ NativeFunction(FlyString name, Function<ThrowCompletionOr<Value>(VM&)>, Object& prototype);
explicit NativeFunction(Object& prototype);
private:
diff --git a/Userland/Libraries/LibJS/Runtime/NumberConstructor.h b/Userland/Libraries/LibJS/Runtime/NumberConstructor.h
index 1d2f765f38..e523bafcbe 100644
--- a/Userland/Libraries/LibJS/Runtime/NumberConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/NumberConstructor.h
@@ -14,7 +14,6 @@ class NumberConstructor final : public NativeFunction {
JS_OBJECT(NumberConstructor, NativeFunction);
public:
- explicit NumberConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~NumberConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit NumberConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(is_finite);
diff --git a/Userland/Libraries/LibJS/Runtime/NumberObject.h b/Userland/Libraries/LibJS/Runtime/NumberObject.h
index 16fd7fd2d9..ceaeb29e62 100644
--- a/Userland/Libraries/LibJS/Runtime/NumberObject.h
+++ b/Userland/Libraries/LibJS/Runtime/NumberObject.h
@@ -16,11 +16,13 @@ class NumberObject : public Object {
public:
static NumberObject* create(Realm&, double);
- NumberObject(double, Object& prototype);
virtual ~NumberObject() override = default;
double number() const { return m_value; }
+protected:
+ NumberObject(double, Object& prototype);
+
private:
double m_value { 0 };
};
diff --git a/Userland/Libraries/LibJS/Runtime/NumberPrototype.h b/Userland/Libraries/LibJS/Runtime/NumberPrototype.h
index e4819f5073..22139df606 100644
--- a/Userland/Libraries/LibJS/Runtime/NumberPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/NumberPrototype.h
@@ -14,7 +14,6 @@ class NumberPrototype final : public NumberObject {
JS_OBJECT(NumberPrototype, NumberObject);
public:
- explicit NumberPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~NumberPrototype() override = default;
@@ -24,6 +23,9 @@ public:
JS_DECLARE_NATIVE_FUNCTION(to_precision);
JS_DECLARE_NATIVE_FUNCTION(to_string);
JS_DECLARE_NATIVE_FUNCTION(value_of);
+
+private:
+ explicit NumberPrototype(Realm&);
};
}
diff --git a/Userland/Libraries/LibJS/Runtime/Object.h b/Userland/Libraries/LibJS/Runtime/Object.h
index a2a1ebec7a..6498ca841a 100644
--- a/Userland/Libraries/LibJS/Runtime/Object.h
+++ b/Userland/Libraries/LibJS/Runtime/Object.h
@@ -45,9 +45,6 @@ class Object : public Cell {
public:
static Object* create(Realm&, Object* prototype);
- Object(Realm&, Object* prototype);
- explicit Object(Object& prototype);
- explicit Object(Shape&);
virtual void initialize(Realm&) override;
virtual ~Object() = default;
@@ -189,8 +186,12 @@ public:
protected:
enum class GlobalObjectTag { Tag };
enum class ConstructWithoutPrototypeTag { Tag };
+
Object(GlobalObjectTag, Realm&);
Object(ConstructWithoutPrototypeTag, Realm&);
+ Object(Realm&, Object* prototype);
+ explicit Object(Object& prototype);
+ explicit Object(Shape&);
void set_prototype(Object*);
diff --git a/Userland/Libraries/LibJS/Runtime/ObjectConstructor.h b/Userland/Libraries/LibJS/Runtime/ObjectConstructor.h
index 41ece30cea..58b731fc7f 100644
--- a/Userland/Libraries/LibJS/Runtime/ObjectConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/ObjectConstructor.h
@@ -15,7 +15,6 @@ class ObjectConstructor final : public NativeFunction {
JS_OBJECT(ObjectConstructor, NativeFunction);
public:
- explicit ObjectConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~ObjectConstructor() override = default;
@@ -23,6 +22,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit ObjectConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(define_property);
diff --git a/Userland/Libraries/LibJS/Runtime/ObjectEnvironment.h b/Userland/Libraries/LibJS/Runtime/ObjectEnvironment.h
index ec5fa7dae5..813a711ccd 100644
--- a/Userland/Libraries/LibJS/Runtime/ObjectEnvironment.h
+++ b/Userland/Libraries/LibJS/Runtime/ObjectEnvironment.h
@@ -18,7 +18,6 @@ public:
No,
Yes,
};
- ObjectEnvironment(Object& binding_object, IsWithEnvironment, Environment* outer_environment);
virtual ThrowCompletionOr<bool> has_binding(FlyString const& name, Optional<size_t>* = nullptr) const override;
virtual ThrowCompletionOr<void> create_mutable_binding(VM&, FlyString const& name, bool can_be_deleted) override;
@@ -43,6 +42,8 @@ public:
bool is_with_environment() const { return m_with_environment; }
private:
+ ObjectEnvironment(Object& binding_object, IsWithEnvironment, Environment* outer_environment);
+
virtual void visit_edges(Visitor&) override;
Object& m_binding_object;
diff --git a/Userland/Libraries/LibJS/Runtime/ObjectPrototype.h b/Userland/Libraries/LibJS/Runtime/ObjectPrototype.h
index b4f31184b6..abb3a4976c 100644
--- a/Userland/Libraries/LibJS/Runtime/ObjectPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/ObjectPrototype.h
@@ -15,7 +15,6 @@ class ObjectPrototype final : public Object {
JS_OBJECT(ObjectPrototype, Object);
public:
- explicit ObjectPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~ObjectPrototype() override = default;
@@ -27,6 +26,8 @@ public:
JS_DECLARE_NATIVE_FUNCTION(to_string);
private:
+ explicit ObjectPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(has_own_property);
JS_DECLARE_NATIVE_FUNCTION(to_locale_string);
JS_DECLARE_NATIVE_FUNCTION(value_of);
diff --git a/Userland/Libraries/LibJS/Runtime/PrimitiveString.h b/Userland/Libraries/LibJS/Runtime/PrimitiveString.h
index 755946479d..768034fe62 100644
--- a/Userland/Libraries/LibJS/Runtime/PrimitiveString.h
+++ b/Userland/Libraries/LibJS/Runtime/PrimitiveString.h
@@ -19,9 +19,6 @@ class PrimitiveString final : public Cell {
JS_CELL(PrimitiveString, Cell);
public:
- explicit PrimitiveString(PrimitiveString&, PrimitiveString&);
- explicit PrimitiveString(String);
- explicit PrimitiveString(Utf16String);
virtual ~PrimitiveString();
PrimitiveString(PrimitiveString const&) = delete;
@@ -39,6 +36,10 @@ public:
Optional<Value> get(VM&, PropertyKey const&) const;
private:
+ explicit PrimitiveString(PrimitiveString&, PrimitiveString&);
+ explicit PrimitiveString(String);
+ explicit PrimitiveString(Utf16String);
+
virtual void visit_edges(Cell::Visitor&) override;
void resolve_rope_if_needed() const;
diff --git a/Userland/Libraries/LibJS/Runtime/PrivateEnvironment.h b/Userland/Libraries/LibJS/Runtime/PrivateEnvironment.h
index 5bdedd41e5..f9c6d07b05 100644
--- a/Userland/Libraries/LibJS/Runtime/PrivateEnvironment.h
+++ b/Userland/Libraries/LibJS/Runtime/PrivateEnvironment.h
@@ -31,13 +31,13 @@ class PrivateEnvironment : public Cell {
JS_CELL(PrivateEnvironment, Cell);
public:
- explicit PrivateEnvironment(PrivateEnvironment* parent);
-
PrivateName resolve_private_identifier(FlyString const& identifier) const;
void add_private_name(Badge<ClassExpression>, FlyString description);
private:
+ explicit PrivateEnvironment(PrivateEnvironment* parent);
+
virtual void visit_edges(Visitor&) override;
auto find_private_name(FlyString const& description) const
diff --git a/Userland/Libraries/LibJS/Runtime/Promise.h b/Userland/Libraries/LibJS/Runtime/Promise.h
index 2a3bf7e917..a4ef47c143 100644
--- a/Userland/Libraries/LibJS/Runtime/Promise.h
+++ b/Userland/Libraries/LibJS/Runtime/Promise.h
@@ -29,7 +29,6 @@ public:
static Promise* create(Realm&);
- explicit Promise(Object& prototype);
virtual ~Promise() = default;
State state() const { return m_state; }
@@ -48,6 +47,8 @@ public:
bool is_handled() const { return m_is_handled; }
protected:
+ explicit Promise(Object& prototype);
+
virtual void visit_edges(Visitor&) override;
private:
diff --git a/Userland/Libraries/LibJS/Runtime/PromiseConstructor.h b/Userland/Libraries/LibJS/Runtime/PromiseConstructor.h
index 73ba53eff0..3780ed9b1e 100644
--- a/Userland/Libraries/LibJS/Runtime/PromiseConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/PromiseConstructor.h
@@ -14,7 +14,6 @@ class PromiseConstructor final : public NativeFunction {
JS_OBJECT(PromiseConstructor, NativeFunction);
public:
- explicit PromiseConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~PromiseConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit PromiseConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(all);
diff --git a/Userland/Libraries/LibJS/Runtime/PromisePrototype.h b/Userland/Libraries/LibJS/Runtime/PromisePrototype.h
index e8e6c8cd15..9fc359d8cf 100644
--- a/Userland/Libraries/LibJS/Runtime/PromisePrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/PromisePrototype.h
@@ -14,11 +14,12 @@ class PromisePrototype final : public PrototypeObject<PromisePrototype, Promise>
JS_PROTOTYPE_OBJECT(PromisePrototype, Promise, Promise);
public:
- PromisePrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~PromisePrototype() override = default;
private:
+ PromisePrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(then);
JS_DECLARE_NATIVE_FUNCTION(catch_);
JS_DECLARE_NATIVE_FUNCTION(finally);
diff --git a/Userland/Libraries/LibJS/Runtime/PromiseReaction.h b/Userland/Libraries/LibJS/Runtime/PromiseReaction.h
index 2797766640..966d22094f 100644
--- a/Userland/Libraries/LibJS/Runtime/PromiseReaction.h
+++ b/Userland/Libraries/LibJS/Runtime/PromiseReaction.h
@@ -78,7 +78,6 @@ public:
return vm.heap().allocate_without_realm<PromiseReaction>(type, capability, move(handler));
}
- PromiseReaction(Type type, Optional<PromiseCapability> capability, Optional<JobCallback> handler);
virtual ~PromiseReaction() = default;
Type type() const { return m_type; }
@@ -88,6 +87,8 @@ public:
Optional<JobCallback> const& handler() const { return m_handler; }
private:
+ PromiseReaction(Type type, Optional<PromiseCapability> capability, Optional<JobCallback> handler);
+
virtual void visit_edges(Visitor&) override;
Type m_type;
diff --git a/Userland/Libraries/LibJS/Runtime/PromiseResolvingElementFunctions.h b/Userland/Libraries/LibJS/Runtime/PromiseResolvingElementFunctions.h
index 56c2154601..d878d7612f 100644
--- a/Userland/Libraries/LibJS/Runtime/PromiseResolvingElementFunctions.h
+++ b/Userland/Libraries/LibJS/Runtime/PromiseResolvingElementFunctions.h
@@ -15,28 +15,27 @@ namespace JS {
struct RemainingElements final : public Cell {
JS_CELL(RemainingElements, Cell);
+ u64 value { 0 };
+
+private:
RemainingElements() = default;
explicit RemainingElements(u64 initial_value)
: value(initial_value)
{
}
-
- u64 value { 0 };
};
class PromiseValueList final : public Cell {
JS_CELL(PromiseValueList, Cell);
public:
- PromiseValueList()
- {
- }
-
Vector<Value>& values() { return m_values; }
Vector<Value> const& values() const { return m_values; }
private:
+ PromiseValueList() = default;
+
virtual void visit_edges(Visitor&) override;
Vector<Value> m_values;
@@ -74,10 +73,11 @@ class PromiseAllResolveElementFunction final : public PromiseResolvingElementFun
public:
static PromiseAllResolveElementFunction* create(Realm&, size_t, PromiseValueList&, PromiseCapability, RemainingElements&);
- explicit PromiseAllResolveElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
virtual ~PromiseAllResolveElementFunction() override = default;
private:
+ explicit PromiseAllResolveElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
+
virtual ThrowCompletionOr<Value> resolve_element() override;
};
@@ -88,10 +88,11 @@ class PromiseAllSettledResolveElementFunction final : public PromiseResolvingEle
public:
static PromiseAllSettledResolveElementFunction* create(Realm&, size_t, PromiseValueList&, PromiseCapability, RemainingElements&);
- explicit PromiseAllSettledResolveElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
virtual ~PromiseAllSettledResolveElementFunction() override = default;
private:
+ explicit PromiseAllSettledResolveElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
+
virtual ThrowCompletionOr<Value> resolve_element() override;
};
@@ -102,10 +103,11 @@ class PromiseAllSettledRejectElementFunction final : public PromiseResolvingElem
public:
static PromiseAllSettledRejectElementFunction* create(Realm&, size_t, PromiseValueList&, PromiseCapability, RemainingElements&);
- explicit PromiseAllSettledRejectElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
virtual ~PromiseAllSettledRejectElementFunction() override = default;
private:
+ explicit PromiseAllSettledRejectElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
+
virtual ThrowCompletionOr<Value> resolve_element() override;
};
@@ -116,10 +118,11 @@ class PromiseAnyRejectElementFunction final : public PromiseResolvingElementFunc
public:
static PromiseAnyRejectElementFunction* create(Realm&, size_t, PromiseValueList&, PromiseCapability, RemainingElements&);
- explicit PromiseAnyRejectElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
virtual ~PromiseAnyRejectElementFunction() override = default;
private:
+ explicit PromiseAnyRejectElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
+
virtual ThrowCompletionOr<Value> resolve_element() override;
};
diff --git a/Userland/Libraries/LibJS/Runtime/PromiseResolvingFunction.h b/Userland/Libraries/LibJS/Runtime/PromiseResolvingFunction.h
index 759b9be6b8..46ad433f36 100644
--- a/Userland/Libraries/LibJS/Runtime/PromiseResolvingFunction.h
+++ b/Userland/Libraries/LibJS/Runtime/PromiseResolvingFunction.h
@@ -30,13 +30,14 @@ public:
static PromiseResolvingFunction* create(Realm&, Promise&, AlreadyResolved&, FunctionType);
- explicit PromiseResolvingFunction(Promise&, AlreadyResolved&, FunctionType, Object& prototype);
virtual void initialize(Realm&) override;
virtual ~PromiseResolvingFunction() override = default;
virtual ThrowCompletionOr<Value> call() override;
private:
+ explicit PromiseResolvingFunction(Promise&, AlreadyResolved&, FunctionType, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
Promise& m_promise;
diff --git a/Userland/Libraries/LibJS/Runtime/ProxyConstructor.h b/Userland/Libraries/LibJS/Runtime/ProxyConstructor.h
index 81bdbdd9ae..8cdb0cd677 100644
--- a/Userland/Libraries/LibJS/Runtime/ProxyConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/ProxyConstructor.h
@@ -15,7 +15,6 @@ class ProxyConstructor final : public NativeFunction {
JS_OBJECT(ProxyConstructor, NativeFunction);
public:
- explicit ProxyConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~ProxyConstructor() override = default;
@@ -23,6 +22,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit ProxyConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(revocable);
diff --git a/Userland/Libraries/LibJS/Runtime/ProxyObject.h b/Userland/Libraries/LibJS/Runtime/ProxyObject.h
index b6c228641a..c7ac85170b 100644
--- a/Userland/Libraries/LibJS/Runtime/ProxyObject.h
+++ b/Userland/Libraries/LibJS/Runtime/ProxyObject.h
@@ -18,7 +18,6 @@ class ProxyObject final : public FunctionObject {
public:
static ProxyObject* create(Realm&, Object& target, Object& handler);
- ProxyObject(Object& target, Object& handler, Object& prototype);
virtual ~ProxyObject() override = default;
virtual FlyString const& name() const override;
@@ -47,6 +46,8 @@ public:
virtual ThrowCompletionOr<Object*> internal_construct(MarkedVector<Value> arguments_list, FunctionObject& new_target) override;
private:
+ ProxyObject(Object& target, Object& handler, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
virtual bool is_function() const override { return m_target.is_function(); }
diff --git a/Userland/Libraries/LibJS/Runtime/Realm.h b/Userland/Libraries/LibJS/Runtime/Realm.h
index d1f4fecd73..5d699af5ff 100644
--- a/Userland/Libraries/LibJS/Runtime/Realm.h
+++ b/Userland/Libraries/LibJS/Runtime/Realm.h
@@ -27,8 +27,6 @@ public:
virtual ~HostDefined() = default;
};
- Realm() = default;
-
static Realm* create(VM&);
static ThrowCompletionOr<NonnullOwnPtr<ExecutionContext>> initialize_host_defined_realm(VM&, Function<Object*(Realm&)> create_global_object, Function<Object*(Realm&)> create_global_this_value);
@@ -49,6 +47,8 @@ public:
void set_host_defined(OwnPtr<HostDefined> host_defined) { m_host_defined = move(host_defined); }
private:
+ Realm() = default;
+
virtual void visit_edges(Visitor&) override;
Intrinsics* m_intrinsics { nullptr }; // [[Intrinsics]]
diff --git a/Userland/Libraries/LibJS/Runtime/ReflectObject.h b/Userland/Libraries/LibJS/Runtime/ReflectObject.h
index 53e40c319d..4f0058e930 100644
--- a/Userland/Libraries/LibJS/Runtime/ReflectObject.h
+++ b/Userland/Libraries/LibJS/Runtime/ReflectObject.h
@@ -14,11 +14,12 @@ class ReflectObject final : public Object {
JS_OBJECT(ReflectObject, Object);
public:
- explicit ReflectObject(Realm&);
virtual void initialize(Realm&) override;
virtual ~ReflectObject() override = default;
private:
+ explicit ReflectObject(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(apply);
JS_DECLARE_NATIVE_FUNCTION(construct);
JS_DECLARE_NATIVE_FUNCTION(define_property);
diff --git a/Userland/Libraries/LibJS/Runtime/RegExpConstructor.h b/Userland/Libraries/LibJS/Runtime/RegExpConstructor.h
index 543fea86f1..2d182ac041 100644
--- a/Userland/Libraries/LibJS/Runtime/RegExpConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/RegExpConstructor.h
@@ -14,7 +14,6 @@ class RegExpConstructor final : public NativeFunction {
JS_OBJECT(RegExpConstructor, NativeFunction);
public:
- explicit RegExpConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~RegExpConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit RegExpConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(symbol_species_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/RegExpObject.h b/Userland/Libraries/LibJS/Runtime/RegExpObject.h
index e90d26da00..3865a0b775 100644
--- a/Userland/Libraries/LibJS/Runtime/RegExpObject.h
+++ b/Userland/Libraries/LibJS/Runtime/RegExpObject.h
@@ -39,9 +39,6 @@ public:
static RegExpObject* create(Realm&);
static RegExpObject* create(Realm&, Regex<ECMA262> regex, String pattern, String flags);
- RegExpObject(Object& prototype);
- RegExpObject(Regex<ECMA262> regex, String pattern, String flags, Object& prototype);
-
ThrowCompletionOr<RegExpObject*> regexp_initialize(VM&, Value pattern, Value flags);
String escape_regexp_pattern() const;
@@ -54,6 +51,9 @@ public:
Regex<ECMA262> const& regex() const { return *m_regex; }
private:
+ RegExpObject(Object& prototype);
+ RegExpObject(Regex<ECMA262> regex, String pattern, String flags, Object& prototype);
+
String m_pattern;
String m_flags;
Optional<Regex<ECMA262>> m_regex;
diff --git a/Userland/Libraries/LibJS/Runtime/RegExpPrototype.h b/Userland/Libraries/LibJS/Runtime/RegExpPrototype.h
index 4eea613c89..69bbb6b14e 100644
--- a/Userland/Libraries/LibJS/Runtime/RegExpPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/RegExpPrototype.h
@@ -19,11 +19,12 @@ class RegExpPrototype final : public PrototypeObject<RegExpPrototype, RegExpObje
JS_PROTOTYPE_OBJECT(RegExpPrototype, RegExpObject, RegExp);
public:
- explicit RegExpPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~RegExpPrototype() override = default;
private:
+ explicit RegExpPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(exec);
JS_DECLARE_NATIVE_FUNCTION(flags);
JS_DECLARE_NATIVE_FUNCTION(symbol_match);
diff --git a/Userland/Libraries/LibJS/Runtime/RegExpStringIterator.h b/Userland/Libraries/LibJS/Runtime/RegExpStringIterator.h
index ad46bbf42b..d1918031e7 100644
--- a/Userland/Libraries/LibJS/Runtime/RegExpStringIterator.h
+++ b/Userland/Libraries/LibJS/Runtime/RegExpStringIterator.h
@@ -18,7 +18,6 @@ class RegExpStringIterator final : public Object {
public:
static RegExpStringIterator* create(Realm&, Object& regexp_object, Utf16String string, bool global, bool unicode);
- explicit RegExpStringIterator(Object& prototype, Object& regexp_object, Utf16String string, bool global, bool unicode);
virtual ~RegExpStringIterator() override = default;
Object& regexp_object() { return m_regexp_object; }
@@ -30,6 +29,8 @@ public:
void set_done() { m_done = true; }
private:
+ explicit RegExpStringIterator(Object& prototype, Object& regexp_object, Utf16String string, bool global, bool unicode);
+
virtual void visit_edges(Cell::Visitor&) override;
Object& m_regexp_object;
diff --git a/Userland/Libraries/LibJS/Runtime/RegExpStringIteratorPrototype.h b/Userland/Libraries/LibJS/Runtime/RegExpStringIteratorPrototype.h
index 249d8ff260..77ac5f678d 100644
--- a/Userland/Libraries/LibJS/Runtime/RegExpStringIteratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/RegExpStringIteratorPrototype.h
@@ -15,12 +15,13 @@ class RegExpStringIteratorPrototype final : public PrototypeObject<RegExpStringI
JS_PROTOTYPE_OBJECT(RegExpStringIteratorPrototype, RegExpStringIterator, RegExpStringIterator);
public:
- explicit RegExpStringIteratorPrototype(Realm&);
virtual ~RegExpStringIteratorPrototype() override = default;
virtual void initialize(Realm&) override;
private:
+ explicit RegExpStringIteratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(next);
};
diff --git a/Userland/Libraries/LibJS/Runtime/Set.h b/Userland/Libraries/LibJS/Runtime/Set.h
index af3ff7890f..5acf6ab5ab 100644
--- a/Userland/Libraries/LibJS/Runtime/Set.h
+++ b/Userland/Libraries/LibJS/Runtime/Set.h
@@ -19,7 +19,6 @@ class Set : public Object {
public:
static Set* create(Realm&);
- explicit Set(Object& prototype);
virtual ~Set() override = default;
// NOTE: Unlike what the spec says, we implement Sets using an underlying map,
@@ -37,6 +36,8 @@ public:
auto end() const { return m_values.end(); }
private:
+ explicit Set(Object& prototype);
+
virtual void visit_edges(Visitor& visitor) override;
Map m_values;
diff --git a/Userland/Libraries/LibJS/Runtime/SetConstructor.h b/Userland/Libraries/LibJS/Runtime/SetConstructor.h
index e8618688e9..e84f4c447e 100644
--- a/Userland/Libraries/LibJS/Runtime/SetConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/SetConstructor.h
@@ -14,7 +14,6 @@ class SetConstructor final : public NativeFunction {
JS_OBJECT(SetConstructor, NativeFunction);
public:
- explicit SetConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~SetConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject&) override;
private:
+ explicit SetConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(symbol_species_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/SetIterator.h b/Userland/Libraries/LibJS/Runtime/SetIterator.h
index 8b077c7f51..9caef615b3 100644
--- a/Userland/Libraries/LibJS/Runtime/SetIterator.h
+++ b/Userland/Libraries/LibJS/Runtime/SetIterator.h
@@ -18,7 +18,6 @@ class SetIterator final : public Object {
public:
static SetIterator* create(Realm&, Set& set, Object::PropertyKind iteration_kind);
- explicit SetIterator(Set& set, Object::PropertyKind iteration_kind, Object& prototype);
virtual ~SetIterator() override = default;
Set& set() const { return m_set; }
@@ -28,6 +27,8 @@ public:
private:
friend class SetIteratorPrototype;
+ explicit SetIterator(Set& set, Object::PropertyKind iteration_kind, Object& prototype);
+
virtual void visit_edges(Cell::Visitor&) override;
Set& m_set;
diff --git a/Userland/Libraries/LibJS/Runtime/SetIteratorPrototype.h b/Userland/Libraries/LibJS/Runtime/SetIteratorPrototype.h
index e50c00484a..4bf9e6b85b 100644
--- a/Userland/Libraries/LibJS/Runtime/SetIteratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/SetIteratorPrototype.h
@@ -15,11 +15,12 @@ class SetIteratorPrototype final : public PrototypeObject<SetIteratorPrototype,
JS_PROTOTYPE_OBJECT(SetIteratorPrototype, SetIterator, SetIterator);
public:
- SetIteratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~SetIteratorPrototype() override = default;
private:
+ explicit SetIteratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(next);
};
diff --git a/Userland/Libraries/LibJS/Runtime/SetPrototype.h b/Userland/Libraries/LibJS/Runtime/SetPrototype.h
index cc34da593d..824bf91d5d 100644
--- a/Userland/Libraries/LibJS/Runtime/SetPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/SetPrototype.h
@@ -15,11 +15,12 @@ class SetPrototype final : public PrototypeObject<SetPrototype, Set> {
JS_PROTOTYPE_OBJECT(SetPrototype, Set, Set);
public:
- SetPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~SetPrototype() override = default;
private:
+ explicit SetPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(add);
JS_DECLARE_NATIVE_FUNCTION(clear);
JS_DECLARE_NATIVE_FUNCTION(delete_);
diff --git a/Userland/Libraries/LibJS/Runtime/ShadowRealm.h b/Userland/Libraries/LibJS/Runtime/ShadowRealm.h
index d0ad14d8e2..f355d3f700 100644
--- a/Userland/Libraries/LibJS/Runtime/ShadowRealm.h
+++ b/Userland/Libraries/LibJS/Runtime/ShadowRealm.h
@@ -17,7 +17,6 @@ class ShadowRealm final : public Object {
JS_OBJECT(ShadowRealm, Object);
public:
- ShadowRealm(Realm&, ExecutionContext, Object& prototype);
virtual ~ShadowRealm() override = default;
[[nodiscard]] Realm const& shadow_realm() const { return m_shadow_realm; }
@@ -26,6 +25,8 @@ public:
[[nodiscard]] ExecutionContext& execution_context() { return m_execution_context; }
private:
+ ShadowRealm(Realm&, ExecutionContext, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
// 3.5 Properties of ShadowRealm Instances, https://tc39.es/proposal-shadowrealm/#sec-properties-of-shadowrealm-instances
diff --git a/Userland/Libraries/LibJS/Runtime/ShadowRealmConstructor.h b/Userland/Libraries/LibJS/Runtime/ShadowRealmConstructor.h
index f489dbaac7..a5c8dd5a1f 100644
--- a/Userland/Libraries/LibJS/Runtime/ShadowRealmConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/ShadowRealmConstructor.h
@@ -14,7 +14,6 @@ class ShadowRealmConstructor final : public NativeFunction {
JS_OBJECT(ShadowRealmConstructor, NativeFunction);
public:
- explicit ShadowRealmConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~ShadowRealmConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit ShadowRealmConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/ShadowRealmPrototype.h b/Userland/Libraries/LibJS/Runtime/ShadowRealmPrototype.h
index e0b9f99250..6e85ad4089 100644
--- a/Userland/Libraries/LibJS/Runtime/ShadowRealmPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/ShadowRealmPrototype.h
@@ -15,11 +15,12 @@ class ShadowRealmPrototype final : public PrototypeObject<ShadowRealmPrototype,
JS_PROTOTYPE_OBJECT(ShadowRealmPrototype, ShadowRealm, ShadowRealm);
public:
- explicit ShadowRealmPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~ShadowRealmPrototype() override = default;
private:
+ explicit ShadowRealmPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(evaluate);
JS_DECLARE_NATIVE_FUNCTION(import_value);
};
diff --git a/Userland/Libraries/LibJS/Runtime/Shape.h b/Userland/Libraries/LibJS/Runtime/Shape.h
index f879b37075..edb9648f63 100644
--- a/Userland/Libraries/LibJS/Runtime/Shape.h
+++ b/Userland/Libraries/LibJS/Runtime/Shape.h
@@ -49,10 +49,6 @@ public:
Prototype,
};
- explicit Shape(Realm&);
- Shape(Shape& previous_shape, StringOrSymbol const& property_key, PropertyAttributes attributes, TransitionType);
- Shape(Shape& previous_shape, Object* new_prototype);
-
Shape* create_put_transition(StringOrSymbol const&, PropertyAttributes attributes);
Shape* create_configure_transition(StringOrSymbol const&, PropertyAttributes attributes);
Shape* create_prototype_transition(Object* new_prototype);
@@ -86,6 +82,10 @@ public:
void reconfigure_property_in_unique_shape(StringOrSymbol const& property_key, PropertyAttributes attributes);
private:
+ explicit Shape(Realm&);
+ Shape(Shape& previous_shape, StringOrSymbol const& property_key, PropertyAttributes attributes, TransitionType);
+ Shape(Shape& previous_shape, Object* new_prototype);
+
virtual void visit_edges(Visitor&) override;
Shape* get_or_prune_cached_forward_transition(TransitionKey const&);
diff --git a/Userland/Libraries/LibJS/Runtime/StringConstructor.h b/Userland/Libraries/LibJS/Runtime/StringConstructor.h
index 43c48449a7..ea00356da9 100644
--- a/Userland/Libraries/LibJS/Runtime/StringConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/StringConstructor.h
@@ -14,7 +14,6 @@ class StringConstructor final : public NativeFunction {
JS_OBJECT(StringConstructor, NativeFunction);
public:
- explicit StringConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~StringConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit StringConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(raw);
diff --git a/Userland/Libraries/LibJS/Runtime/StringIterator.h b/Userland/Libraries/LibJS/Runtime/StringIterator.h
index fead3dd09b..4760cd73b2 100644
--- a/Userland/Libraries/LibJS/Runtime/StringIterator.h
+++ b/Userland/Libraries/LibJS/Runtime/StringIterator.h
@@ -17,13 +17,14 @@ class StringIterator final : public Object {
public:
static StringIterator* create(Realm&, String string);
- explicit StringIterator(String string, Object& prototype);
virtual ~StringIterator() override = default;
Utf8CodePointIterator& iterator() { return m_iterator; }
bool done() const { return m_done; }
private:
+ explicit StringIterator(String string, Object& prototype);
+
friend class StringIteratorPrototype;
String m_string;
diff --git a/Userland/Libraries/LibJS/Runtime/StringIteratorPrototype.h b/Userland/Libraries/LibJS/Runtime/StringIteratorPrototype.h
index 75089f3365..3c7720786b 100644
--- a/Userland/Libraries/LibJS/Runtime/StringIteratorPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/StringIteratorPrototype.h
@@ -16,11 +16,12 @@ class StringIteratorPrototype final : public PrototypeObject<StringIteratorProto
JS_PROTOTYPE_OBJECT(StringIteratorPrototype, StringIterator, StringIterator);
public:
- StringIteratorPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~StringIteratorPrototype() override = default;
private:
+ explicit StringIteratorPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(next);
};
diff --git a/Userland/Libraries/LibJS/Runtime/StringObject.h b/Userland/Libraries/LibJS/Runtime/StringObject.h
index eeda31ba33..4fc0fb29d2 100644
--- a/Userland/Libraries/LibJS/Runtime/StringObject.h
+++ b/Userland/Libraries/LibJS/Runtime/StringObject.h
@@ -16,13 +16,15 @@ class StringObject : public Object {
public:
static StringObject* create(Realm&, PrimitiveString&, Object& prototype);
- StringObject(PrimitiveString&, Object& prototype);
virtual void initialize(Realm&) override;
virtual ~StringObject() override = default;
PrimitiveString const& primitive_string() const { return m_string; }
PrimitiveString& primitive_string() { return m_string; }
+protected:
+ StringObject(PrimitiveString&, Object& prototype);
+
private:
virtual ThrowCompletionOr<Optional<PropertyDescriptor>> internal_get_own_property(PropertyKey const&) const override;
virtual ThrowCompletionOr<bool> internal_define_own_property(PropertyKey const&, PropertyDescriptor const&) override;
diff --git a/Userland/Libraries/LibJS/Runtime/Symbol.h b/Userland/Libraries/LibJS/Runtime/Symbol.h
index 4fd640370e..3cde01bd1b 100644
--- a/Userland/Libraries/LibJS/Runtime/Symbol.h
+++ b/Userland/Libraries/LibJS/Runtime/Symbol.h
@@ -18,7 +18,6 @@ class Symbol final : public Cell {
AK_MAKE_NONMOVABLE(Symbol);
public:
- Symbol(Optional<String>, bool);
virtual ~Symbol() = default;
String description() const { return m_description.value_or(""); }
@@ -27,6 +26,8 @@ public:
String to_string() const { return String::formatted("Symbol({})", description()); }
private:
+ Symbol(Optional<String>, bool);
+
Optional<String> m_description;
bool m_is_global;
};
diff --git a/Userland/Libraries/LibJS/Runtime/SymbolConstructor.h b/Userland/Libraries/LibJS/Runtime/SymbolConstructor.h
index 2d27b474ab..93b6bbf625 100644
--- a/Userland/Libraries/LibJS/Runtime/SymbolConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/SymbolConstructor.h
@@ -14,7 +14,6 @@ class SymbolConstructor final : public NativeFunction {
JS_OBJECT(SymbolConstructor, NativeFunction);
public:
- explicit SymbolConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~SymbolConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit SymbolConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(for_);
diff --git a/Userland/Libraries/LibJS/Runtime/SymbolObject.h b/Userland/Libraries/LibJS/Runtime/SymbolObject.h
index bf04e5a09b..7bbe829034 100644
--- a/Userland/Libraries/LibJS/Runtime/SymbolObject.h
+++ b/Userland/Libraries/LibJS/Runtime/SymbolObject.h
@@ -17,7 +17,6 @@ class SymbolObject : public Object {
public:
static SymbolObject* create(Realm&, Symbol&);
- SymbolObject(Symbol&, Object& prototype);
virtual ~SymbolObject() override = default;
Symbol& primitive_symbol() { return m_symbol; }
@@ -27,6 +26,8 @@ public:
bool is_global() const { return m_symbol.is_global(); }
private:
+ SymbolObject(Symbol&, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
Symbol& m_symbol;
diff --git a/Userland/Libraries/LibJS/Runtime/SymbolPrototype.h b/Userland/Libraries/LibJS/Runtime/SymbolPrototype.h
index d445ddaa85..9f0bd4e8eb 100644
--- a/Userland/Libraries/LibJS/Runtime/SymbolPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/SymbolPrototype.h
@@ -14,11 +14,12 @@ class SymbolPrototype final : public Object {
JS_OBJECT(SymbolPrototype, Object);
public:
- explicit SymbolPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~SymbolPrototype() override = default;
private:
+ explicit SymbolPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(description_getter);
JS_DECLARE_NATIVE_FUNCTION(to_string);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Calendar.h b/Userland/Libraries/LibJS/Runtime/Temporal/Calendar.h
index 50b98e5936..69f158e8e4 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/Calendar.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/Calendar.h
@@ -20,12 +20,13 @@ class Calendar final : public Object {
JS_OBJECT(Calendar, Object);
public:
- Calendar(String identifier, Object& prototype);
virtual ~Calendar() override = default;
[[nodiscard]] String const& identifier() const { return m_identifier; }
private:
+ Calendar(String identifier, Object& prototype);
+
// 12.5 Properties of Temporal.Calendar Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-calendar-instances
String m_identifier; // [[Identifier]]
};
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/CalendarConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/CalendarConstructor.h
index 9bf8ed4125..dfe868740f 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/CalendarConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/CalendarConstructor.h
@@ -14,7 +14,6 @@ class CalendarConstructor final : public NativeFunction {
JS_OBJECT(CalendarConstructor, NativeFunction);
public:
- explicit CalendarConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~CalendarConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit CalendarConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/CalendarPrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/CalendarPrototype.h
index 79b4ef726d..317c7ee426 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/CalendarPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/CalendarPrototype.h
@@ -15,11 +15,12 @@ class CalendarPrototype final : public PrototypeObject<CalendarPrototype, Calend
JS_PROTOTYPE_OBJECT(CalendarPrototype, Calendar, Temporal.Calendar);
public:
- explicit CalendarPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~CalendarPrototype() override = default;
private:
+ explicit CalendarPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(id_getter);
JS_DECLARE_NATIVE_FUNCTION(date_from_fields);
JS_DECLARE_NATIVE_FUNCTION(year_month_from_fields);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.h b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.h
index b50a9ef9b5..dbb9be08ce 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.h
@@ -22,7 +22,6 @@ class Duration final : public Object {
JS_OBJECT(Duration, Object);
public:
- Duration(double years, double months, double weeks, double days, double hours, double minutes, double seconds, double milliseconds, double microseconds, double nanoseconds, Object& prototype);
virtual ~Duration() override = default;
[[nodiscard]] double years() const { return m_years; }
@@ -37,6 +36,8 @@ public:
[[nodiscard]] double nanoseconds() const { return m_nanoseconds; }
private:
+ Duration(double years, double months, double weeks, double days, double hours, double minutes, double seconds, double milliseconds, double microseconds, double nanoseconds, Object& prototype);
+
// 7.4 Properties of Temporal.Duration Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-duration-instances
double m_years; // [[Years]]
double m_months; // [[Months]]
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/DurationConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/DurationConstructor.h
index 81dd0526c4..d83d07026a 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/DurationConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/DurationConstructor.h
@@ -14,7 +14,6 @@ class DurationConstructor final : public NativeFunction {
JS_OBJECT(DurationConstructor, NativeFunction);
public:
- explicit DurationConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~DurationConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit DurationConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/DurationPrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/DurationPrototype.h
index 69acdc3c48..07996aa841 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/DurationPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/DurationPrototype.h
@@ -15,11 +15,12 @@ class DurationPrototype final : public PrototypeObject<DurationPrototype, Durati
JS_PROTOTYPE_OBJECT(DurationPrototype, Duration, Temporal.Duration);
public:
- explicit DurationPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~DurationPrototype() override = default;
private:
+ explicit DurationPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(years_getter);
JS_DECLARE_NATIVE_FUNCTION(months_getter);
JS_DECLARE_NATIVE_FUNCTION(weeks_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Instant.h b/Userland/Libraries/LibJS/Runtime/Temporal/Instant.h
index cf5f2b74fe..0403db891b 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/Instant.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/Instant.h
@@ -20,12 +20,13 @@ class Instant final : public Object {
JS_OBJECT(Instant, Object);
public:
- Instant(BigInt const& nanoseconds, Object& prototype);
virtual ~Instant() override = default;
[[nodiscard]] BigInt const& nanoseconds() const { return m_nanoseconds; }
private:
+ Instant(BigInt const& nanoseconds, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
// 8.4 Properties of Temporal.Instant Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-instant-instances
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/InstantConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/InstantConstructor.h
index f223cd7691..d56e143290 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/InstantConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/InstantConstructor.h
@@ -14,7 +14,6 @@ class InstantConstructor final : public NativeFunction {
JS_OBJECT(InstantConstructor, NativeFunction);
public:
- explicit InstantConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~InstantConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit InstantConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/InstantPrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/InstantPrototype.h
index 14b448c269..80899bd45d 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/InstantPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/InstantPrototype.h
@@ -15,11 +15,12 @@ class InstantPrototype final : public PrototypeObject<InstantPrototype, Instant>
JS_PROTOTYPE_OBJECT(InstantPrototype, Instant, Temporal.Instant);
public:
- explicit InstantPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~InstantPrototype() override = default;
private:
+ explicit InstantPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(epoch_seconds_getter);
JS_DECLARE_NATIVE_FUNCTION(epoch_milliseconds_getter);
JS_DECLARE_NATIVE_FUNCTION(epoch_microseconds_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Now.h b/Userland/Libraries/LibJS/Runtime/Temporal/Now.h
index fe4e358218..c6821b5c43 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/Now.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/Now.h
@@ -15,11 +15,12 @@ class Now final : public Object {
JS_OBJECT(Now, Object);
public:
- explicit Now(Realm&);
virtual void initialize(Realm&) override;
virtual ~Now() override = default;
private:
+ explicit Now(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(time_zone);
JS_DECLARE_NATIVE_FUNCTION(instant);
JS_DECLARE_NATIVE_FUNCTION(plain_date_time);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.h
index 9cc63ca7f5..b26b104808 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.h
@@ -18,7 +18,6 @@ class PlainDate final : public Object {
JS_OBJECT(PlainDate, Object);
public:
- PlainDate(i32 iso_year, u8 iso_month, u8 iso_day, Object& calendar, Object& prototype);
virtual ~PlainDate() override = default;
[[nodiscard]] i32 iso_year() const { return m_iso_year; }
@@ -28,6 +27,8 @@ public:
[[nodiscard]] Object& calendar() { return m_calendar; }
private:
+ PlainDate(i32 iso_year, u8 iso_month, u8 iso_day, Object& calendar, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
// 3.4 Properties of Temporal.PlainDate Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-plaindate-instances
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateConstructor.h
index 05df5e88ce..57c9b09bd0 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateConstructor.h
@@ -14,7 +14,6 @@ class PlainDateConstructor final : public NativeFunction {
JS_OBJECT(PlainDateConstructor, NativeFunction);
public:
- explicit PlainDateConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainDateConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit PlainDateConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDatePrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDatePrototype.h
index 058d8339f1..6ffb2dcda2 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDatePrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDatePrototype.h
@@ -15,11 +15,12 @@ class PlainDatePrototype final : public PrototypeObject<PlainDatePrototype, Plai
JS_PROTOTYPE_OBJECT(PlainDatePrototype, PlainDate, Temporal.PlainDate);
public:
- explicit PlainDatePrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainDatePrototype() override = default;
private:
+ explicit PlainDatePrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(calendar_getter);
JS_DECLARE_NATIVE_FUNCTION(year_getter);
JS_DECLARE_NATIVE_FUNCTION(month_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTime.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTime.h
index 208ddc3507..8122772d2e 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTime.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTime.h
@@ -19,7 +19,6 @@ class PlainDateTime final : public Object {
JS_OBJECT(PlainDateTime, Object);
public:
- PlainDateTime(i32 iso_year, u8 iso_month, u8 iso_day, u8 iso_hour, u8 iso_minute, u8 iso_second, u16 iso_millisecond, u16 iso_microsecond, u16 iso_nanosecond, Object& calendar, Object& prototype);
virtual ~PlainDateTime() override = default;
[[nodiscard]] i32 iso_year() const { return m_iso_year; }
@@ -35,6 +34,8 @@ public:
[[nodiscard]] Object& calendar() { return m_calendar; }
private:
+ PlainDateTime(i32 iso_year, u8 iso_month, u8 iso_day, u8 iso_hour, u8 iso_minute, u8 iso_second, u16 iso_millisecond, u16 iso_microsecond, u16 iso_nanosecond, Object& calendar, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
// 5.4 Properties of Temporal.PlainDateTime Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-plaindatetime-instances
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimeConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimeConstructor.h
index f67172a74d..cebd1843f9 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimeConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimeConstructor.h
@@ -14,7 +14,6 @@ class PlainDateTimeConstructor final : public NativeFunction {
JS_OBJECT(PlainDateTimeConstructor, NativeFunction);
public:
- explicit PlainDateTimeConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainDateTimeConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit PlainDateTimeConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.h
index 23f4a1caa2..f290e18f39 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.h
@@ -15,11 +15,12 @@ class PlainDateTimePrototype final : public PrototypeObject<PlainDateTimePrototy
JS_PROTOTYPE_OBJECT(PlainDateTimePrototype, PlainDateTime, Temporal.PlainDateTime);
public:
- explicit PlainDateTimePrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainDateTimePrototype() override = default;
private:
+ explicit PlainDateTimePrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(calendar_getter);
JS_DECLARE_NATIVE_FUNCTION(year_getter);
JS_DECLARE_NATIVE_FUNCTION(month_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDay.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDay.h
index 9182d82a97..62dce155c5 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDay.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDay.h
@@ -14,7 +14,6 @@ class PlainMonthDay final : public Object {
JS_OBJECT(PlainMonthDay, Object);
public:
- PlainMonthDay(u8 iso_month, u8 iso_day, i32 iso_year, Object& calendar, Object& prototype);
virtual ~PlainMonthDay() override = default;
[[nodiscard]] i32 iso_year() const { return m_iso_year; }
@@ -24,6 +23,8 @@ public:
[[nodiscard]] Object& calendar() { return m_calendar; }
private:
+ PlainMonthDay(u8 iso_month, u8 iso_day, i32 iso_year, Object& calendar, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
// 10.4 Properties of Temporal.PlainMonthDay Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-plainmonthday-instances
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayConstructor.h
index eea34f44f6..f3a31ea24d 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayConstructor.h
@@ -14,7 +14,6 @@ class PlainMonthDayConstructor final : public NativeFunction {
JS_OBJECT(PlainMonthDayConstructor, NativeFunction);
public:
- explicit PlainMonthDayConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainMonthDayConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit PlainMonthDayConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayPrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayPrototype.h
index 80629771bf..c20cf81468 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainMonthDayPrototype.h
@@ -15,11 +15,12 @@ class PlainMonthDayPrototype final : public PrototypeObject<PlainMonthDayPrototy
JS_PROTOTYPE_OBJECT(PlainMonthDayPrototype, PlainMonthDay, Temporal.PlainMonthDay);
public:
- explicit PlainMonthDayPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainMonthDayPrototype() override = default;
private:
+ explicit PlainMonthDayPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(calendar_getter);
JS_DECLARE_NATIVE_FUNCTION(month_code_getter);
JS_DECLARE_NATIVE_FUNCTION(day_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainTime.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainTime.h
index 073adec047..6cae990c34 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainTime.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainTime.h
@@ -19,7 +19,6 @@ class PlainTime final : public Object {
JS_OBJECT(PlainDateTime, Object);
public:
- PlainTime(u8 iso_hour, u8 iso_minute, u8 iso_second, u16 iso_millisecond, u16 iso_microsecond, u16 iso_nanosecond, Calendar& calendar, Object& prototype);
virtual ~PlainTime() override = default;
[[nodiscard]] u8 iso_hour() const { return m_iso_hour; }
@@ -32,6 +31,8 @@ public:
[[nodiscard]] Calendar& calendar() { return m_calendar; }
private:
+ PlainTime(u8 iso_hour, u8 iso_minute, u8 iso_second, u16 iso_millisecond, u16 iso_microsecond, u16 iso_nanosecond, Calendar& calendar, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
// 4.4 Properties of Temporal.PlainTime Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-plaintime-instances
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainTimeConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainTimeConstructor.h
index dc2f3da126..4b1df4b3dd 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainTimeConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainTimeConstructor.h
@@ -14,7 +14,6 @@ class PlainTimeConstructor final : public NativeFunction {
JS_OBJECT(PlainTimeConstructor, NativeFunction);
public:
- explicit PlainTimeConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainTimeConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit PlainTimeConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.h
index 1445243864..00bdbf5423 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.h
@@ -15,11 +15,12 @@ class PlainTimePrototype final : public PrototypeObject<PlainTimePrototype, Plai
JS_PROTOTYPE_OBJECT(PlainTimePrototype, PlainTime, Temporal.PlainTime);
public:
- explicit PlainTimePrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainTimePrototype() override = default;
private:
+ explicit PlainTimePrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(calendar_getter);
JS_DECLARE_NATIVE_FUNCTION(hour_getter);
JS_DECLARE_NATIVE_FUNCTION(minute_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.h
index 0e3a8b792a..b6b7ae4a08 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.h
@@ -15,7 +15,6 @@ class PlainYearMonth final : public Object {
JS_OBJECT(PlainYearMonth, Object);
public:
- PlainYearMonth(i32 iso_year, u8 iso_month, u8 iso_day, Object& calendar, Object& prototype);
virtual ~PlainYearMonth() override = default;
[[nodiscard]] i32 iso_year() const { return m_iso_year; }
@@ -25,6 +24,8 @@ public:
[[nodiscard]] Object& calendar() { return m_calendar; }
private:
+ PlainYearMonth(i32 iso_year, u8 iso_month, u8 iso_day, Object& calendar, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
// 9.4 Properties of Temporal.PlainYearMonth Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-plainyearmonth-instances
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthConstructor.h
index 7b1e556d7a..8068ec43ca 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthConstructor.h
@@ -14,7 +14,6 @@ class PlainYearMonthConstructor final : public NativeFunction {
JS_OBJECT(PlainYearMonthConstructor, NativeFunction);
public:
- explicit PlainYearMonthConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainYearMonthConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit PlainYearMonthConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthPrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthPrototype.h
index 4fbeb5c01c..3e987a077d 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonthPrototype.h
@@ -15,11 +15,12 @@ class PlainYearMonthPrototype final : public PrototypeObject<PlainYearMonthProto
JS_PROTOTYPE_OBJECT(PlainYearMonthPrototype, PlainYearMonth, Temporal.PlainYearMonth);
public:
- explicit PlainYearMonthPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~PlainYearMonthPrototype() override = default;
private:
+ explicit PlainYearMonthPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(calendar_getter);
JS_DECLARE_NATIVE_FUNCTION(year_getter);
JS_DECLARE_NATIVE_FUNCTION(month_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Temporal.h b/Userland/Libraries/LibJS/Runtime/Temporal/Temporal.h
index 360cd8f27d..90c6a45251 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/Temporal.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/Temporal.h
@@ -14,9 +14,11 @@ class Temporal final : public Object {
JS_OBJECT(Temporal, Object);
public:
- explicit Temporal(Realm&);
virtual void initialize(Realm&) override;
virtual ~Temporal() override = default;
+
+private:
+ explicit Temporal(Realm&);
};
}
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.h b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.h
index 74987776a7..420a6ba1a9 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.h
@@ -20,7 +20,6 @@ public:
// Needs to store values in the range -8.64 * 10^13 to 8.64 * 10^13
using OffsetType = double;
- explicit TimeZone(Object& prototype);
virtual ~TimeZone() override = default;
[[nodiscard]] String const& identifier() const { return m_identifier; }
@@ -30,6 +29,8 @@ public:
void set_offset_nanoseconds(OffsetType offset_nanoseconds) { m_offset_nanoseconds = offset_nanoseconds; };
private:
+ explicit TimeZone(Object& prototype);
+
// 11.5 Properties of Temporal.TimeZone Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-timezone-instances
String m_identifier; // [[Identifier]]
Optional<OffsetType> m_offset_nanoseconds; // [[OffsetNanoseconds]]
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZoneConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZoneConstructor.h
index ba1481048e..65923cd488 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZoneConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZoneConstructor.h
@@ -14,7 +14,6 @@ class TimeZoneConstructor final : public NativeFunction {
JS_OBJECT(TimeZoneConstructor, NativeFunction);
public:
- explicit TimeZoneConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~TimeZoneConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit TimeZoneConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZonePrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZonePrototype.h
index 08976b9396..a1fb7f9103 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZonePrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZonePrototype.h
@@ -15,11 +15,12 @@ class TimeZonePrototype final : public PrototypeObject<TimeZonePrototype, TimeZo
JS_PROTOTYPE_OBJECT(TimeZonePrototype, TimeZone, Temporal.TimeZone);
public:
- explicit TimeZonePrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~TimeZonePrototype() override = default;
private:
+ explicit TimeZonePrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(id_getter);
JS_DECLARE_NATIVE_FUNCTION(get_offset_nanoseconds_for);
JS_DECLARE_NATIVE_FUNCTION(get_offset_string_for);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.h b/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.h
index fb2f02f4c0..6655f7f770 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.h
@@ -15,7 +15,6 @@ class ZonedDateTime final : public Object {
JS_OBJECT(ZonedDateTime, Object);
public:
- ZonedDateTime(BigInt const& nanoseconds, Object& time_zone, Object& calendar, Object& prototype);
virtual ~ZonedDateTime() override = default;
[[nodiscard]] BigInt const& nanoseconds() const { return m_nanoseconds; }
@@ -25,6 +24,8 @@ public:
[[nodiscard]] Object& calendar() { return m_calendar; }
private:
+ ZonedDateTime(BigInt const& nanoseconds, Object& time_zone, Object& calendar, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
// 6.4 Properties of Temporal.ZonedDateTime Instances, https://tc39.es/proposal-temporal/#sec-properties-of-temporal-zoneddatetime-instances
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimeConstructor.h b/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimeConstructor.h
index 3fd8dcfd0f..459651e115 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimeConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimeConstructor.h
@@ -14,7 +14,6 @@ class ZonedDateTimeConstructor final : public NativeFunction {
JS_OBJECT(ZonedDateTimeConstructor, NativeFunction);
public:
- explicit ZonedDateTimeConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~ZonedDateTimeConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
private:
+ explicit ZonedDateTimeConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
JS_DECLARE_NATIVE_FUNCTION(from);
diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimePrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimePrototype.h
index 8e3addd255..86bb929a52 100644
--- a/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimePrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimePrototype.h
@@ -15,11 +15,12 @@ class ZonedDateTimePrototype final : public PrototypeObject<ZonedDateTimePrototy
JS_PROTOTYPE_OBJECT(ZonedDateTimePrototype, ZonedDateTime, Temporal.ZonedDateTime);
public:
- explicit ZonedDateTimePrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~ZonedDateTimePrototype() override = default;
private:
+ explicit ZonedDateTimePrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(calendar_getter);
JS_DECLARE_NATIVE_FUNCTION(time_zone_getter);
JS_DECLARE_NATIVE_FUNCTION(year_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/TypedArray.h b/Userland/Libraries/LibJS/Runtime/TypedArray.h
index 403c809a51..58459fd26c 100644
--- a/Userland/Libraries/LibJS/Runtime/TypedArray.h
+++ b/Userland/Libraries/LibJS/Runtime/TypedArray.h
@@ -414,7 +414,7 @@ public:
return { move(keys) };
}
- Span<const UnderlyingBufferDataType> data() const
+ Span<UnderlyingBufferDataType const> data() const
{
return { reinterpret_cast<UnderlyingBufferDataType const*>(m_viewed_array_buffer->buffer().data() + m_byte_offset), m_array_length };
}
@@ -471,22 +471,25 @@ ThrowCompletionOr<double> compare_typed_array_elements(VM&, Value x, Value y, Fu
Realm&, u32 length, FunctionObject& new_target); \
static ThrowCompletionOr<ClassName*> create(Realm&, u32 length); \
static ClassName* create(Realm&, u32 length, ArrayBuffer& buffer); \
- ClassName(Object& prototype, u32 length, ArrayBuffer& array_buffer); \
virtual FlyString const& element_name() const override; \
+ \
+ protected: \
+ ClassName(Object& prototype, u32 length, ArrayBuffer& array_buffer); \
}; \
class PrototypeName final : public Object { \
JS_OBJECT(PrototypeName, Object); \
\
public: \
- PrototypeName(Realm&); \
virtual void initialize(Realm&) override; \
virtual ~PrototypeName() override; \
+ \
+ private: \
+ PrototypeName(Realm&); \
}; \
class ConstructorName final : public TypedArrayConstructor { \
JS_OBJECT(ConstructorName, TypedArrayConstructor); \
\
public: \
- explicit ConstructorName(Realm&); \
virtual void initialize(Realm&) override; \
virtual ~ConstructorName() override; \
\
@@ -494,6 +497,7 @@ ThrowCompletionOr<double> compare_typed_array_elements(VM&, Value x, Value y, Fu
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override; \
\
private: \
+ explicit ConstructorName(Realm&); \
virtual bool has_constructor() const override \
{ \
return true; \
diff --git a/Userland/Libraries/LibJS/Runtime/TypedArrayConstructor.h b/Userland/Libraries/LibJS/Runtime/TypedArrayConstructor.h
index a75c819f1c..e98eeb4155 100644
--- a/Userland/Libraries/LibJS/Runtime/TypedArrayConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/TypedArrayConstructor.h
@@ -14,7 +14,6 @@ class TypedArrayConstructor : public NativeFunction {
JS_OBJECT(TypedArrayConstructor, NativeFunction);
public:
- TypedArrayConstructor(FlyString const& name, Object& prototype);
explicit TypedArrayConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~TypedArrayConstructor() override = default;
@@ -22,6 +21,9 @@ public:
virtual ThrowCompletionOr<Value> call() override;
virtual ThrowCompletionOr<Object*> construct(FunctionObject& new_target) override;
+protected:
+ TypedArrayConstructor(FlyString const& name, Object& prototype);
+
private:
virtual bool has_constructor() const override { return true; }
diff --git a/Userland/Libraries/LibJS/Runtime/TypedArrayPrototype.h b/Userland/Libraries/LibJS/Runtime/TypedArrayPrototype.h
index f7ba75970e..cb73efd9eb 100644
--- a/Userland/Libraries/LibJS/Runtime/TypedArrayPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/TypedArrayPrototype.h
@@ -15,11 +15,12 @@ class TypedArrayPrototype final : public Object {
JS_OBJECT(TypedArrayPrototype, Object);
public:
- explicit TypedArrayPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~TypedArrayPrototype() override = default;
private:
+ explicit TypedArrayPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(buffer_getter);
JS_DECLARE_NATIVE_FUNCTION(byte_length_getter);
JS_DECLARE_NATIVE_FUNCTION(byte_offset_getter);
diff --git a/Userland/Libraries/LibJS/Runtime/WeakMap.h b/Userland/Libraries/LibJS/Runtime/WeakMap.h
index 9ea83683df..832de588cb 100644
--- a/Userland/Libraries/LibJS/Runtime/WeakMap.h
+++ b/Userland/Libraries/LibJS/Runtime/WeakMap.h
@@ -21,7 +21,6 @@ class WeakMap final
public:
static WeakMap* create(Realm&);
- explicit WeakMap(Object& prototype);
virtual ~WeakMap() override = default;
HashMap<Cell*, Value> const& values() const { return m_values; };
@@ -30,6 +29,8 @@ public:
virtual void remove_dead_cells(Badge<Heap>) override;
private:
+ explicit WeakMap(Object& prototype);
+
void visit_edges(Visitor&) override;
HashMap<Cell*, Value> m_values; // This stores Cell pointers instead of Object pointers to aide with sweeping
diff --git a/Userland/Libraries/LibJS/Runtime/WeakMapConstructor.h b/Userland/Libraries/LibJS/Runtime/WeakMapConstructor.h
index 05489291f1..ff1ccaa11e 100644
--- a/Userland/Libraries/LibJS/Runtime/WeakMapConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/WeakMapConstructor.h
@@ -14,7 +14,6 @@ class WeakMapConstructor final : public NativeFunction {
JS_OBJECT(WeakMapConstructor, NativeFunction);
public:
- explicit WeakMapConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~WeakMapConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject&) override;
private:
+ explicit WeakMapConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/WeakMapPrototype.h b/Userland/Libraries/LibJS/Runtime/WeakMapPrototype.h
index be4a3ac739..32aec28120 100644
--- a/Userland/Libraries/LibJS/Runtime/WeakMapPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/WeakMapPrototype.h
@@ -15,11 +15,12 @@ class WeakMapPrototype final : public PrototypeObject<WeakMapPrototype, WeakMap>
JS_PROTOTYPE_OBJECT(WeakMapPrototype, WeakMap, WeakMap);
public:
- WeakMapPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~WeakMapPrototype() override = default;
private:
+ explicit WeakMapPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(delete_);
JS_DECLARE_NATIVE_FUNCTION(get);
JS_DECLARE_NATIVE_FUNCTION(has);
diff --git a/Userland/Libraries/LibJS/Runtime/WeakRef.h b/Userland/Libraries/LibJS/Runtime/WeakRef.h
index c49c4fbef2..02d4371baf 100644
--- a/Userland/Libraries/LibJS/Runtime/WeakRef.h
+++ b/Userland/Libraries/LibJS/Runtime/WeakRef.h
@@ -21,8 +21,6 @@ public:
static WeakRef* create(Realm&, Object&);
static WeakRef* create(Realm&, Symbol&);
- explicit WeakRef(Object&, Object& prototype);
- explicit WeakRef(Symbol&, Object& prototype);
virtual ~WeakRef() override = default;
auto const& value() const { return m_value; };
@@ -32,6 +30,9 @@ public:
virtual void remove_dead_cells(Badge<Heap>) override;
private:
+ explicit WeakRef(Object&, Object& prototype);
+ explicit WeakRef(Symbol&, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
Variant<Object*, Symbol*, Empty> m_value;
diff --git a/Userland/Libraries/LibJS/Runtime/WeakRefConstructor.h b/Userland/Libraries/LibJS/Runtime/WeakRefConstructor.h
index efdc7dc1e5..e25a5fb9ce 100644
--- a/Userland/Libraries/LibJS/Runtime/WeakRefConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/WeakRefConstructor.h
@@ -14,7 +14,6 @@ class WeakRefConstructor final : public NativeFunction {
JS_OBJECT(WeakRefConstructor, NativeFunction);
public:
- explicit WeakRefConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~WeakRefConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject&) override;
private:
+ explicit WeakRefConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.h b/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.h
index a39967e6d6..3dbe323a7d 100644
--- a/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.h
@@ -15,11 +15,12 @@ class WeakRefPrototype final : public PrototypeObject<WeakRefPrototype, WeakRef>
JS_PROTOTYPE_OBJECT(WeakRefPrototype, WeakRef, WeakRef);
public:
- WeakRefPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~WeakRefPrototype() override = default;
private:
+ explicit WeakRefPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(deref);
};
diff --git a/Userland/Libraries/LibJS/Runtime/WeakSet.h b/Userland/Libraries/LibJS/Runtime/WeakSet.h
index 7a21bcca03..9894ce10ac 100644
--- a/Userland/Libraries/LibJS/Runtime/WeakSet.h
+++ b/Userland/Libraries/LibJS/Runtime/WeakSet.h
@@ -21,7 +21,6 @@ class WeakSet final
public:
static WeakSet* create(Realm&);
- explicit WeakSet(Object& prototype);
virtual ~WeakSet() override = default;
HashTable<Cell*> const& values() const { return m_values; };
@@ -30,6 +29,8 @@ public:
virtual void remove_dead_cells(Badge<Heap>) override;
private:
+ explicit WeakSet(Object& prototype);
+
HashTable<Cell*> m_values; // This stores Cell pointers instead of Object pointers to aide with sweeping
};
diff --git a/Userland/Libraries/LibJS/Runtime/WeakSetConstructor.h b/Userland/Libraries/LibJS/Runtime/WeakSetConstructor.h
index 6187a0e298..de9e1a3944 100644
--- a/Userland/Libraries/LibJS/Runtime/WeakSetConstructor.h
+++ b/Userland/Libraries/LibJS/Runtime/WeakSetConstructor.h
@@ -14,7 +14,6 @@ class WeakSetConstructor final : public NativeFunction {
JS_OBJECT(WeakSetConstructor, NativeFunction);
public:
- explicit WeakSetConstructor(Realm&);
virtual void initialize(Realm&) override;
virtual ~WeakSetConstructor() override = default;
@@ -22,6 +21,8 @@ public:
virtual ThrowCompletionOr<Object*> construct(FunctionObject&) override;
private:
+ explicit WeakSetConstructor(Realm&);
+
virtual bool has_constructor() const override { return true; }
};
diff --git a/Userland/Libraries/LibJS/Runtime/WeakSetPrototype.h b/Userland/Libraries/LibJS/Runtime/WeakSetPrototype.h
index 0ad81f9619..2a01447bef 100644
--- a/Userland/Libraries/LibJS/Runtime/WeakSetPrototype.h
+++ b/Userland/Libraries/LibJS/Runtime/WeakSetPrototype.h
@@ -15,11 +15,12 @@ class WeakSetPrototype final : public PrototypeObject<WeakSetPrototype, WeakSet>
JS_PROTOTYPE_OBJECT(WeakSetPrototype, WeakSet, WeakSet);
public:
- WeakSetPrototype(Realm&);
virtual void initialize(Realm&) override;
virtual ~WeakSetPrototype() override = default;
private:
+ explicit WeakSetPrototype(Realm&);
+
JS_DECLARE_NATIVE_FUNCTION(add);
JS_DECLARE_NATIVE_FUNCTION(delete_);
JS_DECLARE_NATIVE_FUNCTION(has);
diff --git a/Userland/Libraries/LibJS/Runtime/WrappedFunction.h b/Userland/Libraries/LibJS/Runtime/WrappedFunction.h
index 5008dc32cc..4cc6c98d86 100644
--- a/Userland/Libraries/LibJS/Runtime/WrappedFunction.h
+++ b/Userland/Libraries/LibJS/Runtime/WrappedFunction.h
@@ -17,7 +17,6 @@ class WrappedFunction final : public FunctionObject {
public:
static ThrowCompletionOr<WrappedFunction*> create(Realm&, Realm& caller_realm, FunctionObject& target_function);
- WrappedFunction(Realm&, FunctionObject&, Object& prototype);
virtual ~WrappedFunction() = default;
virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override;
@@ -31,6 +30,8 @@ public:
FunctionObject& wrapped_target_function() { return m_wrapped_target_function; }
private:
+ WrappedFunction(Realm&, FunctionObject&, Object& prototype);
+
virtual void visit_edges(Visitor&) override;
// Internal Slots of Wrapped Function Exotic Objects, https://tc39.es/proposal-shadowrealm/#table-internal-slots-of-wrapped-function-exotic-objects