diff options
author | Steve Naroff <snaroff@apple.com> | 2007-11-05 14:36:37 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2007-11-05 14:36:37 +0000 |
commit | 352336bb0a480b044eb03e7359e73d3b173d9cdd (patch) | |
tree | 1684ae22eecdf4ae2da90249b9251d6fa8aff3b4 /Driver/RewriteTest.cpp | |
parent | f11b7d0838bc1ea84f4b6ff57360c71c1a975d9c (diff) |
- change the synthesized typedef (for classes) to be of type "objc_object".
- fix a couple bugs in RewriteObjCStringLiteral.
- convert "Class" -> "id" in RewriteMessageExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43704 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Driver/RewriteTest.cpp')
-rw-r--r-- | Driver/RewriteTest.cpp | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/Driver/RewriteTest.cpp b/Driver/RewriteTest.cpp index d3455af69a..58de9f60c1 100644 --- a/Driver/RewriteTest.cpp +++ b/Driver/RewriteTest.cpp @@ -273,9 +273,7 @@ void RewriteTest::RewriteForwardClassDecl(ObjcClassDecl *ClassDecl) { ObjcInterfaceDecl *ForwardDecl = ForwardDecls[i]; if (ObjcForwardDecls.count(ForwardDecl)) continue; - typedefString += "typedef struct "; - typedefString += ForwardDecl->getName(); - typedefString += " "; + typedefString += "typedef struct objc_object "; typedefString += ForwardDecl->getName(); typedefString += ";\n"; @@ -341,9 +339,7 @@ void RewriteTest::RewriteInterfaceDecl(ObjcInterfaceDecl *ClassDecl) { std::string ResultStr; if (!ObjcForwardDecls.count(ClassDecl)) { // we haven't seen a forward decl - generate a typedef. - ResultStr += "typedef struct "; - ResultStr += ClassDecl->getName(); - ResultStr += " "; + ResultStr += "typedef struct objc_object "; ResultStr += ClassDecl->getName(); ResultStr += ";"; @@ -586,15 +582,11 @@ Stmt *RewriteTest::RewriteObjCStringLiteral(ObjCStringLiteral *Exp) { expType = Context->getPointerType(StrRep->getType()); Unop = new UnaryOperator(StrRep, UnaryOperator::AddrOf, expType, SourceLocation()); - // struct NSString * - if (!NSStringRecord) - NSStringRecord = new RecordDecl(Decl::Struct, SourceLocation(), - &Context->Idents.get("NSString"), 0); - expType = Context->getPointerType(Context->getTagDeclType(NSStringRecord)); - cast = new CastExpr(expType, Unop, SourceLocation()); + // cast to NSConstantString * + cast = new CastExpr(Exp->getType(), Unop, SourceLocation()); Rewrite.ReplaceStmt(Exp, cast); delete Exp; - return StrRep; + return cast; } Stmt *RewriteTest::RewriteMessageExpr(ObjCMessageExpr *Exp) { @@ -650,8 +642,12 @@ Stmt *RewriteTest::RewriteMessageExpr(ObjCMessageExpr *Exp) { ArgTypes.push_back(Context->getObjcSelType()); if (ObjcMethodDecl *mDecl = Exp->getMethodDecl()) { // Push any user argument types. - for (int i = 0; i < mDecl->getNumParams(); i++) - ArgTypes.push_back(mDecl->getParamDecl(i)->getType()); + for (int i = 0; i < mDecl->getNumParams(); i++) { + QualType t = mDecl->getParamDecl(i)->getType(); + if (t == Context->getObjcClassType()) + t = Context->getObjcIdType(); // Convert "Class"->"id" + ArgTypes.push_back(t); + } returnType = mDecl->getResultType(); } else { returnType = Context->getObjcIdType(); |