1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 19:07:34 +00:00

LibJS: Hide all the constructors!

Now that the GC allocator is able to invoke Cell subclass constructors
directly via friendship, we no longer need to keep them public. :^)
This commit is contained in:
Andreas Kling 2022-08-28 23:51:28 +02:00
parent d54ba587f3
commit 35c9aa7c05
196 changed files with 456 additions and 242 deletions

View file

@ -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]]
};

View file

@ -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);

View file

@ -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);

View file

@ -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]]

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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&);
};
}

View file

@ -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]]

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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);