aboutsummaryrefslogtreecommitdiff
path: root/lib/Rewrite/RewriteModernObjC.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2012-06-29 19:55:46 +0000
committerFariborz Jahanian <fjahanian@apple.com>2012-06-29 19:55:46 +0000
commit6734ec41ab596088fd157b127f98aeae59ce8e6d (patch)
treeea083a4b29f59a6b8ce976802d1fd1ef173d5a45 /lib/Rewrite/RewriteModernObjC.cpp
parent49f6dacd450dca1cbffc4d7ef561442f653899e3 (diff)
objective-c modern translator: synthesize argument type
correctly for blocks and function pointer arguments in the written constructor. // rdar://11359268 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159456 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Rewrite/RewriteModernObjC.cpp')
-rw-r--r--lib/Rewrite/RewriteModernObjC.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/Rewrite/RewriteModernObjC.cpp b/lib/Rewrite/RewriteModernObjC.cpp
index a14a9efb78..37e780aba3 100644
--- a/lib/Rewrite/RewriteModernObjC.cpp
+++ b/lib/Rewrite/RewriteModernObjC.cpp
@@ -3108,13 +3108,16 @@ Expr *RewriteModernObjC::SynthMsgSendStretCallExpr(FunctionDecl *MsgSendStretFla
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 @@ void RewriteModernObjC::Initialize(ASTContext &context) {
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.