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:
|