JavaScriptCore:
[WebKit-https.git] / JavaScriptCore / kjs / nodes.h
index 678af2dbd4874127b62029faea161c80ff68ea02..b24c22c2fa214430a1e027b47a3778166162e67b 100644 (file)
@@ -236,6 +236,13 @@ namespace KJS {
     virtual Precedence precedence() const { return PrecPrimary; }
   };
 
+  class PlaceholderTrueNode : public TrueNode {
+  public:
+    // Like TrueNode, but does not serialize as "true".
+    PlaceholderTrueNode() KJS_FAST_CALL : TrueNode() { }
+    virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
+  };
+
   class NumberNode : public ExpressionNode {
   public:
     NumberNode(double v) KJS_FAST_CALL : ExpressionNode(NumberType), m_double(v) {}
@@ -1814,11 +1821,11 @@ namespace KJS {
   class ForNode : public StatementNode {
   public:
       ForNode(ExpressionNode* e1, ExpressionNode* e2, ExpressionNode* e3, StatementNode* s, bool e1WasVarDecl) KJS_FAST_CALL
-        : expr1(e1 ? e1 : new TrueNode)
-        , expr2(e2 ? e2 : new TrueNode)
-        , expr3(e3 ? e3 : new TrueNode)
+        : expr1(e1 ? e1 : new PlaceholderTrueNode)
+        , expr2(e2 ? e2 : new PlaceholderTrueNode)
+        , expr3(e3 ? e3 : new PlaceholderTrueNode)
         , statement(s)
-        , expr1WasVarDecl(e1WasVarDecl)
+        , expr1WasVarDecl(e1 && e1WasVarDecl)
     {
         ASSERT(expr1);
         ASSERT(expr2);