From: <bl...@us...> - 2003-03-15 21:51:46
|
Update of /cvsroot/cpptool/rfta/src/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv13677/src/rfta Modified Files: CodeModelStatements.cpp CodeRewriter.cpp CodeWriterTest.cpp CodeWriterTest.h Log Message: * added support for inserting label and goto statements. Index: CodeModelStatements.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeModelStatements.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CodeModelStatements.cpp 8 Mar 2003 13:11:42 -0000 1.4 --- CodeModelStatements.cpp 15 Mar 2003 21:51:43 -0000 1.5 *************** *** 352,356 **** ! LabelStatement::LabelStatement( const std::string &labelName ) : labelName_( labelName ) { --- 352,356 ---- ! LabelHolderStatement::LabelHolderStatement( const std::string &labelName ) : labelName_( labelName ) { *************** *** 359,363 **** const std::string ! LabelStatement::getLabelName() const { return labelName_; --- 359,363 ---- const std::string ! LabelHolderStatement::getLabelName() const { return labelName_; *************** *** 366,374 **** void ! LabelStatement::setLabelName( const std::string &labelName ) { labelName_ = labelName; } void LabelStatement::accept( StatementVisitor &visitor ) --- 366,381 ---- void ! LabelHolderStatement::setLabelName( const std::string &labelName ) { labelName_ = labelName; } + + + LabelStatement::LabelStatement( const std::string &labelName ) + : LabelHolderStatement( labelName ) + { + } + void LabelStatement::accept( StatementVisitor &visitor ) *************** *** 379,382 **** --- 386,403 ---- + GotoStatement::GotoStatement( const std::string &labelName ) + : LabelHolderStatement( labelName ) + { + } + + void + GotoStatement::accept( StatementVisitor &visitor ) + { + FlowControlStatement::accept( visitor ); + visitor.visit( *this ); + } + + + void SwitchLabelStatement::accept( StatementVisitor &visitor ) *************** *** 513,525 **** { return change_; - } - - - - void - GotoStatement::accept( StatementVisitor &visitor ) - { - FlowControlStatement::accept( visitor ); - visitor.visit( *this ); } --- 534,537 ---- Index: CodeRewriter.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** CodeRewriter.cpp 15 Mar 2003 21:37:25 -0000 1.11 --- CodeRewriter.cpp 15 Mar 2003 21:51:43 -0000 1.12 *************** *** 208,211 **** --- 208,212 ---- CodeRewriter::visit( GotoStatement &statement ) { + insertText( "\n" + indentManager_.getIndentSpacer() + "goto " + statement.getLabelName() + ";" ); } *************** *** 230,233 **** --- 231,235 ---- CodeRewriter::visit( LabelStatement &statement ) { + insertText( "\n" + statement.getLabelName() + ":" ); } Index: CodeWriterTest.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** CodeWriterTest.cpp 15 Mar 2003 21:37:25 -0000 1.13 --- CodeWriterTest.cpp 15 Mar 2003 21:51:43 -0000 1.14 *************** *** 412,414 **** --- 412,458 ---- + void + CodeWriterTest::testInsertLabelStatement() + { + source_ = "{\n" + "}"; + + generateCompound(); + + RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() ); + + CodeModel::StatementPtr labelStatement( new CodeModel::LabelStatement( "error" ) ); + compound_->appendStatement( labelStatement ); + + rewriteSource(); + + std::string expectedSource = "{\n" + "error:\n" + "}"; + RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() ); + } + + + void + CodeWriterTest::testInsertGotoStatement() + { + source_ = "{\n" + "}"; + + generateCompound(); + + RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() ); + + CodeModel::StatementPtr gotoStatement( new CodeModel::GotoStatement( "error" ) ); + compound_->appendStatement( gotoStatement ); + + rewriteSource(); + + std::string expectedSource = "{\n" + " goto error;\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.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** CodeWriterTest.h 15 Mar 2003 21:37:25 -0000 1.10 --- CodeWriterTest.h 15 Mar 2003 21:51:43 -0000 1.11 *************** *** 34,37 **** --- 34,39 ---- CPPUNIT_TEST( testInsertDoStatement ); CPPUNIT_TEST( testInsertSwitchStatement ); + CPPUNIT_TEST( testInsertLabelStatement ); + CPPUNIT_TEST( testInsertGotoStatement ); CPPUNIT_TEST_SUITE_END(); *************** *** 60,63 **** --- 62,67 ---- void testInsertDoStatement(); void testInsertSwitchStatement(); + void testInsertLabelStatement(); + void testInsertGotoStatement(); private: |