summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS/Runtime/FunctionObject.h
diff options
context:
space:
mode:
authordavidot <david.tuin@gmail.com>2021-08-28 17:11:05 +0200
committerLinus Groh <mail@linusgroh.de>2021-09-01 13:39:14 +0100
commitdef8b44c4083f2d79bdb7b44701d6a353cb52394 (patch)
treeaad665b8885c15f53acd6aa35048d17b867bfcb9 /Userland/Libraries/LibJS/Runtime/FunctionObject.h
parent3b6a8d1d53e4d530ff827e2ab3e61388ff62cb8b (diff)
downloadserenity-def8b44c4083f2d79bdb7b44701d6a353cb52394.zip
LibJS: Add support for public fields in classes
Diffstat (limited to 'Userland/Libraries/LibJS/Runtime/FunctionObject.h')
-rw-r--r--Userland/Libraries/LibJS/Runtime/FunctionObject.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/FunctionObject.h b/Userland/Libraries/LibJS/Runtime/FunctionObject.h
index 5b089877b1..3cfa762166 100644
--- a/Userland/Libraries/LibJS/Runtime/FunctionObject.h
+++ b/Userland/Libraries/LibJS/Runtime/FunctionObject.h
@@ -63,6 +63,17 @@ public:
// This is for IsSimpleParameterList (static semantics)
bool has_simple_parameter_list() const { return m_has_simple_parameter_list; }
+ // [[Fields]]
+ struct InstanceField {
+ StringOrSymbol name;
+ FunctionObject* initializer { nullptr };
+
+ void define_field(VM& vm, Object& receiver) const;
+ };
+
+ Vector<InstanceField> const& fields() const { return m_fields; }
+ void add_field(StringOrSymbol property_key, FunctionObject* initializer);
+
protected:
virtual void visit_edges(Visitor&) override;
@@ -79,6 +90,7 @@ private:
ConstructorKind m_constructor_kind = ConstructorKind::Base;
ThisMode m_this_mode { ThisMode::Global };
bool m_has_simple_parameter_list { false };
+ Vector<InstanceField> m_fields;
};
}