mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 21:27:35 +00:00
LibJS: Use CreateUnmappedArgumentsObject for non-simple parameter lists
This patch implements the IsSimpleParameterList static semantics for ordinary function objects. We now also create an unmapped arguments object for callee contexts with non-simple parameter lists, instead of only doing it in strict mode. Covered by test262.
This commit is contained in:
parent
e2e695bc9f
commit
d1ffeaf66d
3 changed files with 18 additions and 1 deletions
|
@ -57,12 +57,17 @@ public:
|
|||
ThisMode this_mode() const { return m_this_mode; }
|
||||
void set_this_mode(ThisMode this_mode) { m_this_mode = this_mode; }
|
||||
|
||||
// This is for IsSimpleParameterList (static semantics)
|
||||
bool has_simple_parameter_list() const { return m_has_simple_parameter_list; }
|
||||
|
||||
protected:
|
||||
virtual void visit_edges(Visitor&) override;
|
||||
|
||||
explicit FunctionObject(Object& prototype);
|
||||
FunctionObject(Value bound_this, Vector<Value> bound_arguments, Object& prototype);
|
||||
|
||||
void set_has_simple_parameter_list(bool b) { m_has_simple_parameter_list = b; }
|
||||
|
||||
private:
|
||||
virtual bool is_function() const override { return true; }
|
||||
Value m_bound_this;
|
||||
|
@ -70,6 +75,7 @@ private:
|
|||
Value m_home_object;
|
||||
ConstructorKind m_constructor_kind = ConstructorKind::Base;
|
||||
ThisMode m_this_mode { ThisMode::Global };
|
||||
bool m_has_simple_parameter_list { false };
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue