From 6de88a873a4cbe06d72602eef57d68006730a80b Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Tue, 13 Nov 2007 23:21:38 +0000 Subject: [PATCH] Type encoding for structs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44087 91177308-0d34-0410-b5e6-96231b3b80d8 --- AST/ASTContext.cpp | 12 +++++++++++- test/Sema/metadata-test-2.m | 15 +++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 test/Sema/metadata-test-2.m diff --git a/AST/ASTContext.cpp b/AST/ASTContext.cpp index 132224cbd7..b844adf431 100644 --- a/AST/ASTContext.cpp +++ b/AST/ASTContext.cpp @@ -1050,8 +1050,18 @@ void ASTContext::getObjcEncodingForType(QualType T, std::string& S) const 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, diff --git a/test/Sema/metadata-test-2.m b/test/Sema/metadata-test-2.m new file mode 100644 index 0000000000..dbaf035fd8 --- /dev/null +++ b/test/Sema/metadata-test-2.m @@ -0,0 +1,15 @@ +// RUN: clang -rewrite-test %s + +typedef struct _NSPoint { + float x; + float y; +} NSPoint; + +@interface Intf +- (void) MyMeth : (NSPoint) Arg1; +@end + +@implementation Intf +- (void) MyMeth : (NSPoint) Arg1{} +@end + -- 2.50.1