diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-02-16 17:26:03 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-02-16 17:26:03 +0000 |
commit | 210c248449788d9ef910c8222267029653f83a2f (patch) | |
tree | 0168f8ba0060234262682c567a0081eec3df11d3 | |
parent | 6418825fb8934128e847d17b0d0a171dcca32e9b (diff) |
Minor rewriter cleanup and a test for a block rewriting bug.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96361 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Frontend/RewriteObjC.cpp | 2 | ||||
-rw-r--r-- | test/Rewriter/rewrite-block-pointer.mm | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/Frontend/RewriteObjC.cpp b/lib/Frontend/RewriteObjC.cpp index bf6d2ac8fa..9d4d604716 100644 --- a/lib/Frontend/RewriteObjC.cpp +++ b/lib/Frontend/RewriteObjC.cpp @@ -3918,7 +3918,6 @@ std::string RewriteObjC::SynthesizeBlockFunc(BlockExpr *CE, int i, for (llvm::SmallVector<ValueDecl*,8>::iterator I = BlockByCopyDecls.begin(), E = BlockByCopyDecls.end(); I != E; ++I) { S += " "; - std::string Name = (*I)->getNameAsString(); // Handle nested closure invocation. For example: // // void (^myImportedClosure)(void); @@ -3937,6 +3936,7 @@ std::string RewriteObjC::SynthesizeBlockFunc(BlockExpr *CE, int i, S += "__cself->" + (*I)->getNameAsString() + "; // bound by copy\n"; } else { + std::string Name = (*I)->getNameAsString(); (*I)->getType().getAsStringInternal(Name, Context->PrintingPolicy); S += Name + " = __cself->" + (*I)->getNameAsString() + "; // bound by copy\n"; diff --git a/test/Rewriter/rewrite-block-pointer.mm b/test/Rewriter/rewrite-block-pointer.mm index b03b7a9dec..9d07038bd2 100644 --- a/test/Rewriter/rewrite-block-pointer.mm +++ b/test/Rewriter/rewrite-block-pointer.mm @@ -2,6 +2,7 @@ // RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s // radar 7638400 +// FIXME. Arrange this test's rewritten source to compile with clang @interface X @end @@ -14,3 +15,16 @@ static void enumerateIt(void (^block)(id, id, char *)) { @end // CHECK-LP: static void enumerateIt(void (*)(id, id, char *)); + +// radar 7651312 +void apply(void (^block)(int)); + +static void x(int (^cmp)(int, int)) { + x(cmp); +} + +static void y(int (^cmp)(int, int)) { + apply(^(int sect) { + x(cmp); + }); +} |