]> git.saurik.com Git - cycript.git/blobdiff - Syntax.hpp
Add workaround for zero-sized struct (and use it).
[cycript.git] / Syntax.hpp
index 5599f7e27795d9d246b043e13b0b86e2f16e4584..abf05bcc31933717419330ba8917b1acb8caa912 100644 (file)
@@ -1089,21 +1089,26 @@ struct CYClause :
 };
 
 struct CYElement :
+    CYNext<CYElement>,
     CYThing
 {
+    CYElement(CYElement *next) :
+        CYNext<CYElement>(next)
+    {
+    }
+
     virtual bool Elision() const = 0;
 
     virtual void Replace(CYContext &context) = 0;
 };
 
 struct CYElementValue :
-    CYNext<CYElement>,
     CYElement
 {
     CYExpression *value_;
 
     CYElementValue(CYExpression *value, CYElement *next = NULL) :
-        CYNext<CYElement>(next),
+        CYElement(next),
         value_(value)
     {
     }
@@ -1121,7 +1126,8 @@ struct CYElementSpread :
 {
     CYExpression *value_;
 
-    CYElementSpread(CYExpression *value) :
+    CYElementSpread(CYExpression *value, CYElement *next = NULL) :
+        CYElement(next),
         value_(value)
     {
     }
@@ -2220,6 +2226,17 @@ struct CYTypedParameter :
     virtual void Output(CYOutput &out) const;
 };
 
+struct CYTypedFormal {
+    bool variadic_;
+    CYTypedParameter *parameters_;
+
+    CYTypedFormal(bool variadic) :
+        variadic_(variadic),
+        parameters_(NULL)
+    {
+    }
+};
+
 struct CYLambda :
     CYTarget
 {
@@ -2375,10 +2392,12 @@ struct CYTypeBlockWith :
 struct CYTypeFunctionWith :
     CYTypeModifier
 {
+    bool variadic_;
     CYTypedParameter *parameters_;
 
-    CYTypeFunctionWith(CYTypedParameter *parameters, CYTypeModifier *next = NULL) :
+    CYTypeFunctionWith(bool variadic, CYTypedParameter *parameters, CYTypeModifier *next = NULL) :
         CYTypeModifier(next),
+        variadic_(variadic),
         parameters_(parameters)
     {
     }