]> git.saurik.com Git - cycript.git/commitdiff
Objective-C class fields must be TypeIdentifiers.
authorJay Freeman (saurik) <saurik@saurik.com>
Tue, 21 Jan 2014 19:20:33 +0000 (11:20 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Tue, 21 Jan 2014 19:20:51 +0000 (11:20 -0800)
Cycript.yy.in
ObjectiveC/Replace.cpp
ObjectiveC/Syntax.hpp

index f4c1ffdba1aad2dcae78ad26b2554eed51d5860e..2227201e0cd184bf619e48ad062d0690b53a7d6a 100644 (file)
@@ -1481,7 +1481,7 @@ ClassSuperOpt
     ;
 
 ClassFieldListOpt
-    : Expression Identifier ";" ClassFieldListOpt { $$ = CYNew CYField($1, $2, $4); }
+    : TypedIdentifier ";" ClassFieldListOpt { $$ = CYNew CYField($1, $3); }
     | LexSetRegExp { $$ = NULL; }
     ;
 
index ae3b20e9891ff7171a9eacd7c2403b8abb9773ae..1f92319b6a60d0b03690dbc518847418ce05f833 100644 (file)
@@ -82,13 +82,13 @@ CYStatement *CYField::Replace(CYContext &context) const { $T(NULL)
     CYVariable *cyn($V("$cyn"));
     CYVariable *cyt($V("$cyt"));
 
-    CYExpression *type($C0($M(type_, $S("toString"))));
+    CYExpression *type($C0($M(typed_->Replace(context), $S("toString"))));
 
     return $ CYBlock($$->*
         next_->Replace(context)->*
         $E($ CYAssign(cyt, type))->*
         $E($ CYAssign(cyn, $N1($V("Type"), cyt)))->*
-        $E($C5($V("class_addIvar"), $V("$cyc"), $S(name_->Word()), $M(cyn, $S("size")), $M(cyn, $S("alignment")), cyt))
+        $E($C5($V("class_addIvar"), $V("$cyc"), $S(typed_->identifier_->Word()), $M(cyn, $S("size")), $M(cyn, $S("alignment")), cyt))
     );
 }
 
index 4c15344da5a4265c5889a51f370957d1ac1d5e0f..e04f71d38a8732675685ee199c4ce4184f65413b 100644 (file)
@@ -113,13 +113,11 @@ struct CYSelector :
 struct CYField :
     CYNext<CYField>
 {
-    CYExpression *type_;
-    CYIdentifier *name_;
+    CYTypedIdentifier *typed_;
 
-    CYField(CYExpression *type, CYIdentifier *name, CYField *next = NULL) :
+    CYField(CYTypedIdentifier *typed, CYField *next = NULL) :
         CYNext<CYField>(next),
-        type_(type),
-        name_(name)
+        typed_(typed)
     {
     }