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 | b6a68c04655e749a978b2ee7e9a80409a396fd00 (patch) | |
| tree | 3c413c6d7663c358ef3cf77e2ce5d2ad3bfc0f09 | |
| parent | 70aa8d074599e622822d208512e8fc71f0ec4f8d (diff) | |
| download | bcm5719-llvm-b6a68c04655e749a978b2ee7e9a80409a396fd00.tar.gz bcm5719-llvm-b6a68c04655e749a978b2ee7e9a80409a396fd00.zip | |
Minor rewriter cleanup and a test for a block rewriting bug.
llvm-svn: 96361
| -rw-r--r-- | clang/lib/Frontend/RewriteObjC.cpp | 2 | ||||
| -rw-r--r-- | clang/test/Rewriter/rewrite-block-pointer.mm | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/clang/lib/Frontend/RewriteObjC.cpp b/clang/lib/Frontend/RewriteObjC.cpp index bf6d2ac8fab..9d4d6047160 100644 --- a/clang/lib/Frontend/RewriteObjC.cpp +++ b/clang/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/clang/test/Rewriter/rewrite-block-pointer.mm b/clang/test/Rewriter/rewrite-block-pointer.mm index b03b7a9dec0..9d07038bd27 100644 --- a/clang/test/Rewriter/rewrite-block-pointer.mm +++ b/clang/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); + }); +} |

