]> granicus.if.org Git - clang/commitdiff
Refactor Rewritetest::RewriteObjcQualifiedInterfaceTypes in preparation for more
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 11 Dec 2007 19:56:36 +0000 (19:56 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 11 Dec 2007 19:56:36 +0000 (19:56 +0000)
general use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44876 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/RewriteTest.cpp

index 3ec5a10b2c45ed6f2dafeb55cd60a243ae2a6701..77adafecba6effae4c7d1d3b6d637de346f7cae1 100644 (file)
@@ -147,8 +147,7 @@ namespace {
     void RewriteMethodDeclarations(int nMethods, ObjcMethodDecl **Methods);
     void RewriteProperties(int nProperties, ObjcPropertyDecl **Properties);
     void RewriteFunctionDecl(FunctionDecl *FD);
-    void RewriteObjcQualifiedInterfaceTypes(
-        const FunctionTypeProto *proto, FunctionDecl *FD);
+    void RewriteObjcQualifiedInterfaceTypes(Decl *Dcl);
     bool needToScanForQualifiers(QualType T);
     ObjcInterfaceDecl *isSuperReceiver(Expr *recExpr);
     QualType getSuperStructType();
@@ -991,9 +990,18 @@ bool RewriteTest::needToScanForQualifiers(QualType T) {
   return false;
 }
 
-void RewriteTest::RewriteObjcQualifiedInterfaceTypes(
-  const FunctionTypeProto *proto, FunctionDecl *FD) {
+void RewriteTest::RewriteObjcQualifiedInterfaceTypes(Decl *Dcl) {
   
+  FunctionDecl *FD = dyn_cast<FunctionDecl>(Dcl);
+  if (!FD)
+    return;
+  // Check for ObjC 'id' and class types that have been adorned with protocol
+  // information (id<p>, C<p>*). The protocol references need to be rewritten!
+  const FunctionType *funcType = FD->getType()->getAsFunctionType();
+  assert(funcType && "missing function type");
+  const FunctionTypeProto *proto = dyn_cast<FunctionTypeProto>(funcType);
+  if (!proto)
+    return;
   if (needToScanForQualifiers(proto->getResultType())) {
     // Since types are unique, we need to scan the buffer.
     SourceLocation Loc = FD->getLocation();
@@ -1069,12 +1077,7 @@ void RewriteTest::RewriteFunctionDecl(FunctionDecl *FD) {
     SelGetUidFunctionDecl = FD;
     return;
   }
-  // Check for ObjC 'id' and class types that have been adorned with protocol
-  // information (id<p>, C<p>*). The protocol references need to be rewritten!
-  const FunctionType *funcType = FD->getType()->getAsFunctionType();
-  assert(funcType && "missing function type");
-  if (const FunctionTypeProto *proto = dyn_cast<FunctionTypeProto>(funcType))
-    RewriteObjcQualifiedInterfaceTypes(proto, FD);
+  RewriteObjcQualifiedInterfaceTypes(FD);
 }
 
 // SynthMsgSendFunctionDecl - id objc_msgSend(id self, SEL op, ...);