From: Jay Freeman (saurik) <saurik@saurik.com>
Date: Mon, 12 Jul 2010 00:20:10 +0000 (+0000)
Subject: Remove CYExpression::ReplaceAll into CYCompound::Replace.
X-Git-Tag: v0.9.432~19
X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/9efd8b032d404ee2ad8267df43e7888416e4ff83?ds=inline

Remove CYExpression::ReplaceAll into CYCompound::Replace.
---

diff --git a/Parser.hpp b/Parser.hpp
index 48ba4f0..12a5afd 100644
--- a/Parser.hpp
+++ b/Parser.hpp
@@ -561,8 +561,6 @@ struct CYExpression :
     virtual CYExpression *ClassName(CYContext &context, bool object);
     virtual void ClassName(CYOutput &out, bool object) const;
 
-    CYExpression *ReplaceAll(CYContext &context);
-
     virtual CYExpression *Replace(CYContext &context) = 0;
 
     virtual CYExpression *Primitive(CYContext &context) {
diff --git a/Replace.cpp b/Replace.cpp
index acc4a44..3538944 100644
--- a/Replace.cpp
+++ b/Replace.cpp
@@ -136,8 +136,10 @@ CYStatement *CYComment::Replace(CYContext &context) {
 }
 
 CYExpression *CYCompound::Replace(CYContext &context) {
-    expressions_ = expressions_->ReplaceAll(context);
-    return expressions_ == NULL ? NULL : this;
+    CYExpression **last(&expressions_);
+    for (CYExpression *next(expressions_); next != NULL; next = next->next_)
+        last = &(*last = next->Replace(context))->next_;
+    return this;
 }
 
 CYFunctionParameter *CYComprehension::Parameters(CYContext &context) const { $T(NULL)
@@ -283,18 +285,6 @@ CYExpression *CYExpression::ForEachIn(CYContext &context) {
     return this;
 }
 
-CYExpression *CYExpression::ReplaceAll(CYContext &context) { $T(NULL)
-    CYExpression *replace(this);
-    context.Replace(replace);
-
-    if (CYExpression *next = next_->ReplaceAll(context))
-        replace->SetNext(next);
-    else
-        replace->SetNext(next_);
-
-    return replace;
-}
-
 CYNumber *CYFalse::Number(CYContext &context) {
     return $D(0);
 }