From d2f6e642b39b0bc356fbabc61d9cf27267b48d2f Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Tue, 21 Jan 2014 11:20:33 -0800 Subject: [PATCH] Objective-C class fields must be TypeIdentifiers. --- Cycript.yy.in | 2 +- ObjectiveC/Replace.cpp | 4 ++-- ObjectiveC/Syntax.hpp | 8 +++----- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Cycript.yy.in b/Cycript.yy.in index f4c1ffd..2227201 100644 --- a/Cycript.yy.in +++ b/Cycript.yy.in @@ -1481,7 +1481,7 @@ ClassSuperOpt ; ClassFieldListOpt - : Expression Identifier ";" ClassFieldListOpt { $$ = CYNew CYField($1, $2, $4); } + : TypedIdentifier ";" ClassFieldListOpt { $$ = CYNew CYField($1, $3); } | LexSetRegExp { $$ = NULL; } ; diff --git a/ObjectiveC/Replace.cpp b/ObjectiveC/Replace.cpp index ae3b20e..1f92319 100644 --- a/ObjectiveC/Replace.cpp +++ b/ObjectiveC/Replace.cpp @@ -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)) ); } diff --git a/ObjectiveC/Syntax.hpp b/ObjectiveC/Syntax.hpp index 4c15344..e04f71d 100644 --- a/ObjectiveC/Syntax.hpp +++ b/ObjectiveC/Syntax.hpp @@ -113,13 +113,11 @@ struct CYSelector : struct CYField : CYNext { - CYExpression *type_; - CYIdentifier *name_; + CYTypedIdentifier *typed_; - CYField(CYExpression *type, CYIdentifier *name, CYField *next = NULL) : + CYField(CYTypedIdentifier *typed, CYField *next = NULL) : CYNext(next), - type_(type), - name_(name) + typed_(typed) { } -- 2.47.2