aboutsummaryrefslogtreecommitdiff
path: root/Driver/RewriteTest.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2008-01-09 18:15:42 +0000
committerFariborz Jahanian <fjahanian@apple.com>2008-01-09 18:15:42 +0000
commit88f50f31d84185827a8f765dd611134bcaface7b (patch)
tree918cedf59d4396d3834ac1cce4821565d0153f3d /Driver/RewriteTest.cpp
parent3f76f2aa6e479bc6ec73aa449975804751da8109 (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.cpp16
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());