From: Jay Freeman (saurik) Date: Wed, 16 Dec 2015 00:30:13 +0000 (-0800) Subject: Always assign methods (to support JavaScriptCore). X-Git-Tag: v0.9.590~211 X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/7b87d2051f4c0c29515b30b1202a23a52e2d5f9e?hp=032131d5afeca86ad9d94d9bd7e4f299d06906b1 Always assign methods (to support JavaScriptCore). --- diff --git a/Replace.cpp b/Replace.cpp index 4729086..c78f380 100644 --- a/Replace.cpp +++ b/Replace.cpp @@ -745,7 +745,7 @@ CYExpression *CYPrefix::Replace(CYContext &context) { } CYProperty *CYProperty::ReplaceAll(CYContext &context, CYBuilder &builder, CYExpression *self, bool update) { - update |= name_->Computed(); + update |= Update(); if (update) Replace(context, builder, self, false); if (next_ != NULL) @@ -765,6 +765,10 @@ void CYProperty::Replace(CYContext &context, CYBuilder &builder, CYExpression *s Replace(context, builder, self, name, protect); } +bool CYProperty::Update() const { + return name_->Computed(); +} + void CYPropertyGetter::Replace(CYContext &context, CYBuilder &builder, CYExpression *self, CYExpression *name, bool protect) { CYIdentifier *unique(context.Unique()); builder.declarations_ @@ -786,6 +790,10 @@ void CYPropertyMethod::Replace(CYContext &context, CYBuilder &builder, CYExpress CYDefineProperty(self, name, true, !protect, $ CYPropertyValue($S("value"), $V(unique), $ CYPropertyValue($S("writable"), $ CYTrue())))); } +bool CYPropertyMethod::Update() const { + return true; +} + void CYPropertySetter::Replace(CYContext &context, CYBuilder &builder, CYExpression *self, CYExpression *name, bool protect) { CYIdentifier *unique(context.Unique()); builder.declarations_ diff --git a/Syntax.hpp b/Syntax.hpp index c091cec..7bc5bbe 100644 --- a/Syntax.hpp +++ b/Syntax.hpp @@ -1261,6 +1261,8 @@ struct CYProperty : { } + virtual bool Update() const; + CYProperty *ReplaceAll(CYContext &context, CYBuilder &builder, CYExpression *self, bool update); void Replace(CYContext &context, CYBuilder &builder, CYExpression *self, bool protect); @@ -1715,6 +1717,8 @@ struct CYPropertyMethod : { } + bool Update() const override; + virtual CYFunctionExpression *Constructor(); virtual void Replace(CYContext &context, CYBuilder &builder, CYExpression *self, CYExpression *name, bool protect);