aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Rewrite/RewriteModernObjC.cpp3
-rw-r--r--lib/Rewrite/RewriteObjC.cpp3
-rw-r--r--test/Rewriter/func-in-impl.m29
3 files changed, 35 insertions, 0 deletions
diff --git a/lib/Rewrite/RewriteModernObjC.cpp b/lib/Rewrite/RewriteModernObjC.cpp
index a981ffdf6e..26646901f0 100644
--- a/lib/Rewrite/RewriteModernObjC.cpp
+++ b/lib/Rewrite/RewriteModernObjC.cpp
@@ -4834,6 +4834,9 @@ void RewriteModernObjC::HandleDeclInMainFile(Decl *D) {
// definitions using the same code.
RewriteBlocksInFunctionProtoType(FD->getType(), FD);
+ if (!FD->isThisDeclarationADefinition())
+ break;
+
// FIXME: If this should support Obj-C++, support CXXTryStmt
if (CompoundStmt *Body = dyn_cast_or_null<CompoundStmt>(FD->getBody())) {
CurFunctionDef = FD;
diff --git a/lib/Rewrite/RewriteObjC.cpp b/lib/Rewrite/RewriteObjC.cpp
index 5018112699..6e8789f6db 100644
--- a/lib/Rewrite/RewriteObjC.cpp
+++ b/lib/Rewrite/RewriteObjC.cpp
@@ -4922,6 +4922,9 @@ void RewriteObjC::HandleDeclInMainFile(Decl *D) {
// definitions using the same code.
RewriteBlocksInFunctionProtoType(FD->getType(), FD);
+ if (!FD->isThisDeclarationADefinition())
+ break;
+
// FIXME: If this should support Obj-C++, support CXXTryStmt
if (CompoundStmt *Body = dyn_cast_or_null<CompoundStmt>(FD->getBody())) {
CurFunctionDef = FD;
diff --git a/test/Rewriter/func-in-impl.m b/test/Rewriter/func-in-impl.m
new file mode 100644
index 0000000000..6242c7ea77
--- /dev/null
+++ b/test/Rewriter/func-in-impl.m
@@ -0,0 +1,29 @@
+// RUN: %clang_cc1 -rewrite-objc %s -o - | FileCheck %s
+
+@interface I {
+ id _delegate;
+}
+-(void)foo;
+@end
+
+@implementation I
+
+static void KKKK(int w);
+
+-(void) foo {
+ KKKK(0);
+}
+
+static void KKKK(int w) {
+ I *self = (I *)0;
+ if ([self->_delegate respondsToSelector:@selector(handlePortMessage:)]) {
+ }
+}
+
+-(void) foo2 {
+ KKKK(0);
+}
+
+@end
+
+// CHECK: if (((id (*)(id, SEL, ...))(void *)objc_msgSend)((id)((struct I_IMPL *)self)->_delegate, sel_registerName("respondsToSelector:"), sel_registerName("handlePortMessage:")))