]> granicus.if.org Git - clang/commitdiff
clang ObjC rewriter: generated code used in "for (x in y)" loop uses
authorFariborz Jahanian <fjahanian@apple.com>
Fri, 8 Jan 2010 01:29:44 +0000 (01:29 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Fri, 8 Jan 2010 01:29:44 +0000 (01:29 +0000)
incorrect cast, causing compile error (fixes radar 7342867).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92986 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Frontend/RewriteObjC.cpp
test/Rewriter/rewrite-foreach-7.m [new file with mode: 0644]

index 4245856efa537a51128934c08348bdec2449e430..ee803a33e3a3f1509b7248bf5a18b5e20207b6b0 100644 (file)
@@ -1483,14 +1483,18 @@ Stmt *RewriteObjC::RewriteObjCForCollectionStmt(ObjCForCollectionStmt *S,
   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.
diff --git a/test/Rewriter/rewrite-foreach-7.m b/test/Rewriter/rewrite-foreach-7.m
new file mode 100644 (file)
index 0000000..9fa6a1a
--- /dev/null
@@ -0,0 +1,7 @@
+// RUN: %clang_cc1 -rewrite-objc %s -o -
+
+@class NSArray;
+int main() {
+       NSArray *foo;
+       for (Class c in foo) { }
+}