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