From: <bl...@us...> - 2003-03-16 21:38:45
|
Update of /cvsroot/cpptool/rfta/src/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv29748/src/rfta Modified Files: CodeModelStatements.cpp CodeRewriter.cpp CodeWriterTest.cpp CodeWriterTest.h Log Message: * added support for replacing expression statement. Index: CodeModelStatements.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeModelStatements.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** CodeModelStatements.cpp 16 Mar 2003 21:27:03 -0000 1.14 --- CodeModelStatements.cpp 16 Mar 2003 21:38:41 -0000 1.15 *************** *** 588,591 **** --- 588,598 ---- + Change + ExpressionStatement::getExpressionChange() const + { + return expressionTracker_.getChange(); + } + + void ExpressionStatement::accept( StatementVisitor &visitor ) Index: CodeRewriter.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.cpp,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** CodeRewriter.cpp 16 Mar 2003 21:27:03 -0000 1.29 --- CodeRewriter.cpp 16 Mar 2003 21:38:41 -0000 1.30 *************** *** 392,398 **** CodeRewriter::visit( ExpressionStatement &statement ) { ! beginInsertNewStatement(); ! statement.getExpression()->accept( *this ); ! endInsertNewStatement(); } --- 392,403 ---- CodeRewriter::visit( ExpressionStatement &statement ) { ! if ( isInserting() ) ! beginInsertNewStatement(); ! ! handleMandatoryChange( statement.getExpressionChange(), ! *statement.getExpression() ); ! ! if ( isInserting() ) ! endInsertNewStatement(); } Index: CodeWriterTest.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** CodeWriterTest.cpp 16 Mar 2003 21:27:04 -0000 1.30 --- CodeWriterTest.cpp 16 Mar 2003 21:38:41 -0000 1.31 *************** *** 402,405 **** --- 402,422 ---- + void + CodeWriterTest::testModifyExpressionStatement() + { + source_ = "{\n" + " call( 123 );\n" + "}"; + generateCompound(); + + CodeModel::ExpressionStatement &expressionStatement = + dynamic_cast<CodeModel::ExpressionStatement &>( *compound_->getStatementAt(0) ); + expressionStatement.setExpression( makeExpression( "x++;" ) ); // @todo expression statement node should not includes the ';' as part of the expression. + generateAndCheckSource( "{\n" + " x++;\n" + "}" ); + } + + } // namespace Refactoring Index: CodeWriterTest.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.h,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** CodeWriterTest.h 16 Mar 2003 21:27:05 -0000 1.25 --- CodeWriterTest.h 16 Mar 2003 21:38:41 -0000 1.26 *************** *** 34,37 **** --- 34,38 ---- CPPUNIT_TEST( testModifyDoIteratedStatement ); CPPUNIT_TEST( testModifyCaseStatement ); + CPPUNIT_TEST( testModifyExpressionStatement ); CPPUNIT_TEST_SUITE_END(); *************** *** 69,72 **** --- 70,75 ---- void testModifyCaseStatement(); + + void testModifyExpressionStatement(); private: |