Update of /cvsroot/cpptool/rfta/src/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv9325/src/rfta
Modified Files:
CodeRewriter.cpp CodeWriterTest.cpp CodeWriterTest.h
IndentLevelManager.cpp IndentLevelManager.h
Log Message:
* added support for inserting if/then statement.
Index: CodeRewriter.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** CodeRewriter.cpp 15 Mar 2003 22:05:23 -0000 1.13
--- CodeRewriter.cpp 16 Mar 2003 06:52:20 -0000 1.14
***************
*** 254,258 ****
--- 254,270 ----
CodeRewriter::visit( IfStatement &statement )
{
+ if ( isInserting() )
+ {
+ beginInsertNewStatement();
+ insertText( "if ( " );
+ }
statement.getCondition()->accept( *this );
+
+ IndentLevelManager::IndentRestorer restorer( indentManager_ );
+ if ( isInserting() )
+ {
+ insertText( " )" );
+ indentManager_.enterNewIfStatement();
+ }
statement.getThenStatement()->accept( *this );
if ( statement.hasElseStatement() )
Index: CodeWriterTest.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** CodeWriterTest.cpp 15 Mar 2003 21:51:43 -0000 1.14
--- CodeWriterTest.cpp 16 Mar 2003 06:52:20 -0000 1.15
***************
*** 456,458 ****
--- 456,484 ----
+ void
+ CodeWriterTest::testInsertIfThenStatement()
+ {
+ source_ = "{\n"
+ "}";
+
+ generateCompound();
+
+ RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() );
+
+ CodeModel::StatementPtr nullStatement( new CodeModel::NullStatement() );
+ CodeModel::StatementPtr ifStatement(
+ new CodeModel::IfStatement( makeExpression( "x < y" ),
+ nullStatement ) );
+ compound_->appendStatement( ifStatement );
+
+ rewriteSource();
+
+ std::string expectedSource = "{\n"
+ " if ( x < y )\n"
+ " ;\n"
+ "}";
+ RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() );
+ }
+
+
} // namespace Refactoring
Index: CodeWriterTest.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** CodeWriterTest.h 15 Mar 2003 21:51:43 -0000 1.11
--- CodeWriterTest.h 16 Mar 2003 06:52:20 -0000 1.12
***************
*** 36,39 ****
--- 36,40 ----
CPPUNIT_TEST( testInsertLabelStatement );
CPPUNIT_TEST( testInsertGotoStatement );
+ CPPUNIT_TEST( testInsertIfThenStatement );
CPPUNIT_TEST_SUITE_END();
***************
*** 64,67 ****
--- 65,69 ----
void testInsertLabelStatement();
void testInsertGotoStatement();
+ void testInsertIfThenStatement();
private:
Index: IndentLevelManager.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/IndentLevelManager.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** IndentLevelManager.cpp 15 Mar 2003 20:57:38 -0000 1.3
--- IndentLevelManager.cpp 16 Mar 2003 06:52:20 -0000 1.4
***************
*** 39,42 ****
--- 39,49 ----
+ void
+ IndentLevelManager::enterNewIfStatement()
+ {
+ pushIndent( getIndentLevel() + indentWidth_ );
+ }
+
+
int
IndentLevelManager::findIndentLevelOf( int pos ) const
Index: IndentLevelManager.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/IndentLevelManager.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** IndentLevelManager.h 15 Mar 2003 20:57:38 -0000 1.4
--- IndentLevelManager.h 16 Mar 2003 06:52:20 -0000 1.5
***************
*** 60,63 ****
--- 60,65 ----
void enterNewCompoundStatement();
+ void enterNewIfStatement();
+
int getIndentLevel() const;
|