diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2008-01-09 18:15:42 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2008-01-09 18:15:42 +0000 |
commit | 88f50f31d84185827a8f765dd611134bcaface7b (patch) | |
tree | 918cedf59d4396d3834ac1cce4821565d0153f3d /Driver/RewriteTest.cpp | |
parent | 3f76f2aa6e479bc6ec73aa449975804751da8109 (diff) |
Type-cast RHS of assignment to prevent warning compiling rewritten foreach code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45777 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Driver/RewriteTest.cpp')
-rw-r--r-- | Driver/RewriteTest.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/Driver/RewriteTest.cpp b/Driver/RewriteTest.cpp index 1ba0af5ae3..81f818a67b 100644 --- a/Driver/RewriteTest.cpp +++ b/Driver/RewriteTest.cpp @@ -808,7 +808,7 @@ void RewriteTest::SynthCountByEnumWithState(std::string &buf) { /// do { /// if (startMutations != *enumState.mutationsPtr) /// objc_enumerationMutation(l_collection); -/// elem = enumState.itemsPtr[counter++]; +/// elem = (type)enumState.itemsPtr[counter++]; /// stmts; /// } while (counter < limit); /// } while (limit = [l_collection countByEnumeratingWithState:&enumState @@ -826,19 +826,23 @@ Stmt *RewriteTest::RewriteObjCForCollectionStmt(ObjCForCollectionStmt *S) { const char *startBuf = SM->getCharacterData(startLoc); const char *startCollectionBuf = SM->getCharacterData(collectionLoc); const char *elementName; + std::string elementTypeAsString; std::string buf; buf = "\n{\n\t"; if (DeclStmt *DS = dyn_cast<DeclStmt>(S->getElement())) { // type elem; QualType ElementType = cast<ValueDecl>(DS->getDecl())->getType(); - buf += ElementType.getAsString(); + elementTypeAsString = ElementType.getAsString(); + buf += elementTypeAsString; buf += " "; elementName = DS->getDecl()->getName(); buf += elementName; buf += ";\n\t"; } - else if (DeclRefExpr *DR = dyn_cast<DeclRefExpr>(S->getElement())) + else if (DeclRefExpr *DR = dyn_cast<DeclRefExpr>(S->getElement())) { elementName = DR->getDecl()->getName(); + elementTypeAsString = DR->getDecl()->getType().getAsString(); + } else assert(false && "RewriteObjCForCollectionStmt - bad element kind"); @@ -879,7 +883,7 @@ Stmt *RewriteTest::RewriteObjCForCollectionStmt(ObjCForCollectionStmt *S) { /// do { /// if (startMutations != *enumState.mutationsPtr) /// objc_enumerationMutation(l_collection); - /// elem = enumState.itemsPtr[counter++]; + /// elem = (type)enumState.itemsPtr[counter++]; buf += "if (limit) {\n\t"; buf += "unsigned long startMutations = *enumState.mutationsPtr;\n\t"; buf += "do {\n\t\t"; @@ -888,7 +892,9 @@ Stmt *RewriteTest::RewriteObjCForCollectionStmt(ObjCForCollectionStmt *S) { buf += "if (startMutations != *enumState.mutationsPtr)\n\t\t\t\t"; buf += "objc_enumerationMutation(l_collection);\n\t\t\t"; buf += elementName; - buf += " = enumState.itemsPtr[counter++];"; + buf += " = ("; + buf += elementTypeAsString; + buf += ")enumState.itemsPtr[counter++];"; // Replace ')' in for '(' type elem in collection ')' with all of these. Rewrite.ReplaceText(lparenLoc, 1, buf.c_str(), buf.size()); |