From b6a68c04655e749a978b2ee7e9a80409a396fd00 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Tue, 16 Feb 2010 17:26:03 +0000 Subject: [PATCH] Minor rewriter cleanup and a test for a block rewriting bug. llvm-svn: 96361 --- clang/lib/Frontend/RewriteObjC.cpp | 2 +- clang/test/Rewriter/rewrite-block-pointer.mm | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/clang/lib/Frontend/RewriteObjC.cpp b/clang/lib/Frontend/RewriteObjC.cpp index bf6d2ac8fabb..9d4d60471604 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::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 b03b7a9dec0a..9d07038bd27e 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); + }); +} -- GitLab