]> git.saurik.com Git - cycript.git/commitdiff
CYMessage syntax should not be using CYEncodedType.
authorJay Freeman (saurik) <saurik@saurik.com>
Fri, 31 Oct 2014 08:42:04 +0000 (01:42 -0700)
committerJay Freeman (saurik) <saurik@saurik.com>
Fri, 31 Oct 2014 08:42:04 +0000 (01:42 -0700)
Cycript.yy.in
ObjectiveC/Replace.cpp
ObjectiveC/Syntax.hpp

index d9b9a1da9c8e3e64ae8609b1610f3a03f5bfc569..3ad89f82c74c37c9c50e97318083d10039ad94ba 100644 (file)
@@ -486,7 +486,6 @@ int cylex(YYSTYPE *, cy::location *, void *);
 
 @begin C
 %type <typedIdentifier_> ArrayedType
-%type <expression_> EncodedType
 %type <modifier_> FunctionedType
 %type <specifier_> IntegerType
 %type <specifier_> IntegerTypeOpt
@@ -532,7 +531,7 @@ int cylex(YYSTYPE *, cy::location *, void *);
 %type <selector_> SelectorExpressionOpt
 %type <argument_> SelectorList
 %type <word_> SelectorWordOpt
-%type <expression_> TypeOpt
+%type <typedIdentifier_> TypeOpt
 %type <argument_> VariadicCall
 @end
 
@@ -1481,12 +1480,8 @@ TypedIdentifier
     : TypeQualifierLeft PrimitiveType TypeQualifierRight { $$ = $3; $$->specifier_ = $2; CYSetLast($1) = $$->modifier_; $$->modifier_ = $1; }
     ;
 
-EncodedType
-    : TypedIdentifier { $$ = CYNew CYEncodedType($1); }
-    ;
-
 PrimaryExpression
-    : "@encode" "(" EncodedType ")" { $$ = $3; }
+    : "@encode" "(" TypedIdentifier ")" { $$ = CYNew CYEncodedType($3); }
     ;
 /* }}} */
 @end
@@ -1514,7 +1509,7 @@ MessageScope
     ;
 
 TypeOpt
-    : "(" LexSetRegExp EncodedType ")" { $$ = $3; }
+    : "(" LexSetRegExp TypedIdentifier ")" { $$ = $3; }
     | { $$ = NULL; }
     ;
 
index 74a687f467fdb37812cb5c60b9687d0824b287ea..d90eecfd1a80b648b8548d2184dbb3809761a9e3 100644 (file)
 
 #include <sstream>
 
-static CYExpression *MessageType(CYContext &context, CYExpression *type, CYMessageParameter *next, CYExpression *extra = NULL) {
+static CYExpression *MessageType(CYContext &context, CYTypedIdentifier *type, CYMessageParameter *next, CYExpression *extra = NULL) {
     if (type == NULL)
         return NULL;
 
-    CYExpression *left($C0($M(type, $S("toString"))));
+    CYExpression *left($C0($M(type->Replace(context), $S("toString"))));
     if (extra != NULL)
         left = $ CYAdd(left, extra);
 
index 0777d24fd42e7cb9044eaddda9cb896da145e815..5702171318c91d80bcb645e1a001f0ff58705549 100644 (file)
@@ -129,10 +129,10 @@ struct CYMessageParameter :
     CYNext<CYMessageParameter>
 {
     CYWord *tag_;
-    CYExpression *type_;
+    CYTypedIdentifier *type_;
     CYIdentifier *name_;
 
-    CYMessageParameter(CYWord *tag, CYExpression *type, CYIdentifier *name) :
+    CYMessageParameter(CYWord *tag, CYTypedIdentifier *type, CYIdentifier *name) :
         tag_(tag),
         type_(type),
         name_(name)
@@ -149,11 +149,11 @@ struct CYMessage :
     CYNext<CYMessage>
 {
     bool instance_;
-    CYExpression *type_;
+    CYTypedIdentifier *type_;
     CYMessageParameter *parameters_;
     CYBlock code_;
 
-    CYMessage(bool instance, CYExpression *type, CYMessageParameter *parameter, CYStatement *statements) :
+    CYMessage(bool instance, CYTypedIdentifier *type, CYMessageParameter *parameter, CYStatement *statements) :
         instance_(instance),
         type_(type),
         parameters_(parameter),