summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/RewriteObjC.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-01-25 20:50:02 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-01-25 20:50:02 +0000
commitd360ce9d572acb509f28378d98a6f010dccd4a5d (patch)
tree40632bef77b771dcd74149731c591706060f3292 /clang/lib/Frontend/RewriteObjC.cpp
parentec039dff43528247777dfb5858d2d4f5f9023cff (diff)
downloadbcm5719-llvm-d360ce9d572acb509f28378d98a6f010dccd4a5d.tar.gz
bcm5719-llvm-d360ce9d572acb509f28378d98a6f010dccd4a5d.zip
Fixes a rewriting bug of access ivar of a variable cast
to subclass. (Fixes radar 7575882). llvm-svn: 94444
Diffstat (limited to 'clang/lib/Frontend/RewriteObjC.cpp')
-rw-r--r--clang/lib/Frontend/RewriteObjC.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Frontend/RewriteObjC.cpp b/clang/lib/Frontend/RewriteObjC.cpp
index 35d8dde8eaa..19c714da3da 100644
--- a/clang/lib/Frontend/RewriteObjC.cpp
+++ b/clang/lib/Frontend/RewriteObjC.cpp
@@ -4308,7 +4308,16 @@ void RewriteObjC::RewriteCastExpr(CStyleCastExpr *CE) {
TypeAsString.c_str(), TypeAsString.size());
return;
}
-
+ if (QT->isObjCObjectPointerType()) {
+ QualType ptee = QT->getAs<ObjCObjectPointerType>()->getPointeeType();
+ std::string TypeAsString = "(struct ";
+ TypeAsString += ptee.getAsString();
+ TypeAsString += "_IMPL *";
+ TypeAsString += ")";
+ ReplaceText(LocStart, endBuf-startBuf+1,
+ TypeAsString.c_str(), TypeAsString.size());
+ return;
+ }
// advance the location to startArgList.
const char *argPtr = startBuf;
OpenPOWER on IntegriCloud