diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2012-06-29 19:55:46 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-06-29 19:55:46 +0000 |
| commit | 2794ad59aad48c6b3088bb2cd40ad4fa13d695f8 (patch) | |
| tree | 00ecd7b387c5037d5fc9cc78ac3d92aafed2e9a4 /clang/lib/Rewrite/RewriteModernObjC.cpp | |
| parent | cbeddfeed799c28d8216bd7499ac8c5a360ce086 (diff) | |
| download | bcm5719-llvm-2794ad59aad48c6b3088bb2cd40ad4fa13d695f8.tar.gz bcm5719-llvm-2794ad59aad48c6b3088bb2cd40ad4fa13d695f8.zip | |
objective-c modern translator: synthesize argument type
correctly for blocks and function pointer arguments
in the written constructor. // rdar://11359268
llvm-svn: 159456
Diffstat (limited to 'clang/lib/Rewrite/RewriteModernObjC.cpp')
| -rw-r--r-- | clang/lib/Rewrite/RewriteModernObjC.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/clang/lib/Rewrite/RewriteModernObjC.cpp b/clang/lib/Rewrite/RewriteModernObjC.cpp index a14a9efb784..37e780aba35 100644 --- a/clang/lib/Rewrite/RewriteModernObjC.cpp +++ b/clang/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. |

