diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-01-19 21:48:35 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-01-19 21:48:35 +0000 |
commit | f3b9b9583e38fe18937f465658ec76b32dd5a337 (patch) | |
tree | 8c01115d6f14e88a358c2a049abc0d3d8b306121 /clang/lib/Frontend/RewriteObjC.cpp | |
parent | 936b0d314406f17c88212766d8b77a8594f4c016 (diff) | |
download | bcm5719-llvm-f3b9b9583e38fe18937f465658ec76b32dd5a337.tar.gz bcm5719-llvm-f3b9b9583e38fe18937f465658ec76b32dd5a337.zip |
Rewriteing of gnu extension __typeof in objective-c rewriter.
Fixes radar 6358225.
llvm-svn: 93917
Diffstat (limited to 'clang/lib/Frontend/RewriteObjC.cpp')
-rw-r--r-- | clang/lib/Frontend/RewriteObjC.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/clang/lib/Frontend/RewriteObjC.cpp b/clang/lib/Frontend/RewriteObjC.cpp index 5a5b0eada3a..2e101f402b7 100644 --- a/clang/lib/Frontend/RewriteObjC.cpp +++ b/clang/lib/Frontend/RewriteObjC.cpp @@ -4293,7 +4293,19 @@ void RewriteObjC::RewriteCastExpr(CStyleCastExpr *CE) { const char *startBuf = SM->getCharacterData(LocStart); const char *endBuf = SM->getCharacterData(LocEnd); - + QualType QT = CE->getType(); + const Type* TypePtr = QT->getAs<Type>(); + if (isa<TypeOfExprType>(TypePtr)) { + const TypeOfExprType *TypeOfExprTypePtr = cast<TypeOfExprType>(TypePtr); + QT = TypeOfExprTypePtr->getUnderlyingExpr()->getType(); + std::string TypeAsString = "("; + TypeAsString += QT.getAsString(); + TypeAsString += ")"; + ReplaceText(LocStart, endBuf-startBuf+1, + TypeAsString.c_str(), TypeAsString.size()); + return; + } + // advance the location to startArgList. const char *argPtr = startBuf; |