[cfe-commits] r159456 - in /cfe/trunk: lib/Rewrite/RewriteModernObjC.cpp test/Rewriter/objc-modern-StretAPI.mm
Fariborz Jahanian
fjahanian at apple.com
Fri Jun 29 12:55:46 PDT 2012
Author: fjahanian
Date: Fri Jun 29 14:55:46 2012
New Revision: 159456
URL: http://llvm.org/viewvc/llvm-project?rev=159456&view=rev
Log:
objective-c modern translator: synthesize argument type
correctly for blocks and function pointer arguments
in the written constructor. // rdar://11359268
Modified:
cfe/trunk/lib/Rewrite/RewriteModernObjC.cpp
cfe/trunk/test/Rewriter/objc-modern-StretAPI.mm
Modified: cfe/trunk/lib/Rewrite/RewriteModernObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Rewrite/RewriteModernObjC.cpp?rev=159456&r1=159455&r2=159456&view=diff
==============================================================================
--- cfe/trunk/lib/Rewrite/RewriteModernObjC.cpp (original)
+++ cfe/trunk/lib/Rewrite/RewriteModernObjC.cpp Fri Jun 29 14:55:46 2012
@@ -3108,13 +3108,16 @@
str += name;
str += "(id receiver, SEL sel";
for (unsigned i = 2; i < ArgTypes.size(); i++) {
- str += ", "; str += ArgTypes[i].getAsString(Context->getPrintingPolicy());
- str += " arg"; str += utostr(i);
+ std::string ArgName = "arg"; ArgName += utostr(i);
+ ArgTypes[i].getAsStringInternal(ArgName, Context->getPrintingPolicy());
+ str += ", "; str += ArgName;
}
// could be vararg.
for (unsigned i = ArgTypes.size(); i < MsgExprs.size(); i++) {
- str += ", "; str += MsgExprs[i]->getType().getAsString(Context->getPrintingPolicy());
- str += " arg"; str += utostr(i);
+ std::string ArgName = "arg"; ArgName += utostr(i);
+ MsgExprs[i]->getType().getAsStringInternal(ArgName,
+ Context->getPrintingPolicy());
+ str += ", "; str += ArgName;
}
str += ") {\n";
@@ -5956,8 +5959,6 @@
Preamble += "#define __block\n";
Preamble += "#define __weak\n";
}
-
- // needed for use of memset.
Preamble += "\nextern \"C\" void * memset(void *b, int c, unsigned long len);\n";
// Declarations required for modern objective-c array and dictionary literals.
Modified: cfe/trunk/test/Rewriter/objc-modern-StretAPI.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/objc-modern-StretAPI.mm?rev=159456&r1=159455&r2=159456&view=diff
==============================================================================
--- cfe/trunk/test/Rewriter/objc-modern-StretAPI.mm (original)
+++ cfe/trunk/test/Rewriter/objc-modern-StretAPI.mm Fri Jun 29 14:55:46 2012
@@ -3,6 +3,7 @@
// rdar://11359268
extern "C" void *sel_registerName(const char *);
+typedef unsigned long size_t;
union U {
double d1;
@@ -35,6 +36,8 @@
S s3 = [PI() VAMeth : 0, "hello", "there"];
+ S s4 = [PI() VAMeth : 2, ^{}, &foo];
+
return [PI() Meth1];
}
More information about the cfe-commits
mailing list