From: Fariborz Jahanian Date: Fri, 8 Jan 2010 01:29:44 +0000 (+0000) Subject: clang ObjC rewriter: generated code used in "for (x in y)" loop uses X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=65b0aa5d3973e07c8c4449ef2b81c389fd48229a;p=clang clang ObjC rewriter: generated code used in "for (x in y)" loop uses 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 --- diff --git a/lib/Frontend/RewriteObjC.cpp b/lib/Frontend/RewriteObjC.cpp index 4245856efa..ee803a33e3 100644 --- a/lib/Frontend/RewriteObjC.cpp +++ b/lib/Frontend/RewriteObjC.cpp @@ -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 index 0000000000..9fa6a1a9f0 --- /dev/null +++ b/test/Rewriter/rewrite-foreach-7.m @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -rewrite-objc %s -o - + +@class NSArray; +int main() { + NSArray *foo; + for (Class c in foo) { } +}