aboutsummaryrefslogtreecommitdiff
path: root/Driver/RewriteTest.cpp
diff options
context:
space:
mode:
authorSteve Naroff <snaroff@apple.com>2007-11-05 14:36:37 +0000
committerSteve Naroff <snaroff@apple.com>2007-11-05 14:36:37 +0000
commit352336bb0a480b044eb03e7359e73d3b173d9cdd (patch)
tree1684ae22eecdf4ae2da90249b9251d6fa8aff3b4 /Driver/RewriteTest.cpp
parentf11b7d0838bc1ea84f4b6ff57360c71c1a975d9c (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.cpp26
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();