Type encoding for structs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44087 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/AST/ASTContext.cpp b/AST/ASTContext.cpp
index 132224c..b844adf 100644
--- a/AST/ASTContext.cpp
+++ b/AST/ASTContext.cpp
@@ -1050,8 +1050,18 @@
     S += ']';
   } else if (T->getAsFunctionType()) {
     S += '?';
+  } else if (const RecordType *RTy = T->getAsRecordType()) {
+    RecordDecl *RDecl= RTy->getDecl();
+    S += '{';
+    S += RDecl->getName();
+    S += '=';
+    for (int i = 0; i < RDecl->getNumMembers(); i++) {
+      FieldDecl *field = RDecl->getMember(i);
+      getObjcEncodingForType(field->getType(), S);
+    }
+    S += '}';
   } else
-    assert(0 && "@encode for type not implemented!");
+      assert(0 && "@encode for type not implemented!");
 }
 
 void ASTContext::getObjcEncodingForTypeQualifier(Decl::ObjcDeclQualifier QT,