Update of /cvsroot/cpptool/rfta/src/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv10111 Modified Files: CodeModelElement.cpp CodeModelExpressions.cpp CodeRewriter.cpp CodeRewriter.h CodeWriterTest.cpp CodeWriterTest.h IndentLevelManager.h Log Message: * inserted return statement may have a value. Index: CodeModelElement.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeModelElement.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CodeModelElement.cpp 6 Mar 2003 22:17:57 -0000 1.4 --- CodeModelElement.cpp 7 Mar 2003 09:41:11 -0000 1.5 *************** *** 129,177 **** - #if 0 - void - Element::setSourceRange( const SourceRange &sourceRange ) - { - sourceRange_ = sourceRange; - wasReplaced_ = false; - } - - - void - Element::unsetSourceRange() - { - sourceRange_ = SourceRange( -1, 0 ); - } - - - const SourceRange & - Element::getSourceRange() const - { - return sourceRange_; - } - - - bool - Element::hasSourceRange() const - { - return sourceRange_.getStartIndex() != -1; - } - - - bool - Element::wasReplaced() const - { - return wasReplaced_; - } - - - void - Element::replace() - { - wasReplaced_ = true; - } - #endif - - } // namespace CodeModel } // namespace Refactoring --- 129,132 ---- Index: CodeModelExpressions.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeModelExpressions.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CodeModelExpressions.cpp 6 Mar 2003 22:17:57 -0000 1.4 --- CodeModelExpressions.cpp 7 Mar 2003 09:41:11 -0000 1.5 *************** *** 21,31 **** } ! /* GenericExpression::GenericExpression( const std::string &value ) - : value_( value ) { } ! const std::string GenericExpression::getValue() const --- 21,31 ---- } ! GenericExpression::GenericExpression( const std::string &value ) { + setText( value ); } ! /* const std::string GenericExpression::getValue() const Index: CodeRewriter.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CodeRewriter.cpp 7 Mar 2003 07:58:31 -0000 1.4 --- CodeRewriter.cpp 7 Mar 2003 09:41:11 -0000 1.5 *************** *** 11,15 **** #include <rfta/refactoring/CodeModelStatements.h> - namespace Refactoring { namespace CodeModel { --- 11,14 ---- *************** *** 64,67 **** --- 63,73 ---- void + CodeRewriter::insertText( const std::string &content ) + { + replaceText( getCurrentInsertionRange(), content ); + } + + + void CodeRewriter::setPreviousStatementEnd( CompoundStatement &statement, int subStatementIndex ) *************** *** 209,213 **** replaceText( text.getOriginalSourceRange(), text.getOriginalText() ); else if ( text.isNewText() ) ! replaceText( getCurrentInsertionRange(), "\n" + indentManager_.getIndentSpacer() + "return;" ); } --- 215,227 ---- replaceText( text.getOriginalSourceRange(), text.getOriginalText() ); else if ( text.isNewText() ) ! { ! insertText( "\n" + indentManager_.getIndentSpacer() + "return" ); ! if ( statement.hasValue() ) ! { ! insertText( " " ); ! statement.getValue()->accept( *this ); ! } ! insertText( ";" ); ! } } *************** *** 268,271 **** --- 282,289 ---- replaceText( expression.getText().getOriginalSourceRange(), expression.getText().getOriginalText() ); + } + else if ( expression.getText().isNewText() ) + { + insertText( expression.getText().getOriginalText() ); } } Index: CodeRewriter.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CodeRewriter.h 7 Mar 2003 07:58:31 -0000 1.4 --- CodeRewriter.h 7 Mar 2003 09:41:11 -0000 1.5 *************** *** 6,14 **** #define RFTA_CODEREWRITER_H #include <rfta/parser/SourceRange.h> #include <rfta/refactoring/CodeModelVisitor.h> - #include "IndentLevelManager.h" - #include "TransformList.h" #include <string> --- 6,14 ---- #define RFTA_CODEREWRITER_H + #include "TransformList.h" #include <rfta/parser/SourceRange.h> #include <rfta/refactoring/CodeModelVisitor.h> #include <string> + #include "IndentLevelManager.h" *************** *** 76,79 **** --- 76,81 ---- void deleteText( const SourceRange &range ); + + void insertText( const std::string &content ); private: Index: CodeWriterTest.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CodeWriterTest.cpp 7 Mar 2003 07:58:31 -0000 1.5 --- CodeWriterTest.cpp 7 Mar 2003 09:41:11 -0000 1.6 *************** *** 115,117 **** --- 115,144 ---- + void + CodeWriterTest::testInsertReturnValueStatement() + { + source_ = " {\n" + " }"; + + generateCompound(); + + RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() ); + compound_->appendStatement( CodeModel::StatementPtr( new CodeModel::ReturnStatement( makeTrueExpression() ) ) ); + + rewriteSource(); + + std::string expectedSource = " {\n" + " return true;\n" + " }"; + RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() ); + } + + + CodeModel::ExpressionPtr + CodeWriterTest::makeTrueExpression() + { + return CodeModel::ExpressionPtr( new CodeModel::GenericExpression( "true" ) ); + } + + } // namespace Refactoring Index: CodeWriterTest.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CodeWriterTest.h 7 Mar 2003 07:58:31 -0000 1.3 --- CodeWriterTest.h 7 Mar 2003 09:41:11 -0000 1.4 *************** *** 6,14 **** #define RFTA_CODEWRITERTEST_H - #include "SourceBasedTestBase.h" - #include "CodeRewriter.h" #include <rfta/refactoring/CodeModelStatements.h> #include <rfta/refactoring/CodeModelExpressions.h> #include <rfta/refactoring/PlainTextDocument.h> --- 6,14 ---- #define RFTA_CODEWRITERTEST_H #include <rfta/refactoring/CodeModelStatements.h> #include <rfta/refactoring/CodeModelExpressions.h> #include <rfta/refactoring/PlainTextDocument.h> + #include "SourceBasedTestBase.h" + #include "CodeRewriter.h" *************** *** 23,26 **** --- 23,27 ---- CPPUNIT_TEST( testRewriteStatement ); CPPUNIT_TEST( testInsertStatement ); + CPPUNIT_TEST( testInsertReturnValueStatement ); CPPUNIT_TEST_SUITE_END(); *************** *** 38,45 **** --- 39,48 ---- void testRewriteStatement(); void testInsertStatement(); + void testInsertReturnValueStatement(); private: void generateCompound(); void rewriteSource(); + CodeModel::ExpressionPtr makeTrueExpression(); CodeModel::CompoundStatementPtr compound_; Index: IndentLevelManager.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/IndentLevelManager.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** IndentLevelManager.h 7 Mar 2003 07:58:31 -0000 1.2 --- IndentLevelManager.h 7 Mar 2003 09:41:11 -0000 1.3 *************** *** 6,9 **** --- 6,11 ---- #define RFTA_INDENTLEVELMANAGER_H + #include <rfta/refactoring/Config.h> + #include <string> namespace Refactoring |