[cfe-commits] r92986 - in /cfe/trunk: lib/Frontend/RewriteObjC.cpp test/Rewriter/rewrite-foreach-7.m

Fariborz Jahanian fjahanian at apple.com
Thu Jan 7 17:29:44 PST 2010


Author: fjahanian
Date: Thu Jan  7 19:29:44 2010
New Revision: 92986

URL: http://llvm.org/viewvc/llvm-project?rev=92986&view=rev
Log:
clang ObjC rewriter: generated code used in "for (x in y)" loop uses 
incorrect cast, causing compile error (fixes radar 7342867).


Added:
    cfe/trunk/test/Rewriter/rewrite-foreach-7.m
Modified:
    cfe/trunk/lib/Frontend/RewriteObjC.cpp

Modified: cfe/trunk/lib/Frontend/RewriteObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/RewriteObjC.cpp?rev=92986&r1=92985&r2=92986&view=diff

==============================================================================
--- cfe/trunk/lib/Frontend/RewriteObjC.cpp (original)
+++ cfe/trunk/lib/Frontend/RewriteObjC.cpp Thu Jan  7 19:29:44 2010
@@ -1483,14 +1483,18 @@
   SynthCountByEnumWithState(buf);
   buf += ");\n\t";
   buf += elementName;
-  buf += " = ((id)0);\n\t";
+  buf += " = ((";
+  buf += elementTypeAsString;
+  buf += ")0);\n\t";
   buf += "__break_label_";
   buf += utostr(ObjCBcLabelNo.back());
   buf += ": ;\n\t";
   buf += "}\n\t";
   buf += "else\n\t\t";
   buf += elementName;
-  buf += " = ((id)0);\n";
+  buf += " = ((";
+  buf += elementTypeAsString;
+  buf += ")0);\n\t";
   buf += "}\n";
 
   // Insert all these *after* the statement body.

Added: cfe/trunk/test/Rewriter/rewrite-foreach-7.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/rewrite-foreach-7.m?rev=92986&view=auto

==============================================================================
--- cfe/trunk/test/Rewriter/rewrite-foreach-7.m (added)
+++ cfe/trunk/test/Rewriter/rewrite-foreach-7.m Thu Jan  7 19:29:44 2010
@@ -0,0 +1,7 @@
+// RUN: %clang_cc1 -rewrite-objc %s -o -
+
+ at class NSArray;
+int main() {
+	NSArray *foo;
+	for (Class c in foo) { }
+}





More information about the cfe-commits mailing list