Update of /cvsroot/cpptool/rfta/src/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv6744/src/rfta
Modified Files:
CodeModel.cpp CodeModelElement.cpp CodeModelExpressions.cpp
CodeRewriter.cpp CodeRewriter.h CodeWriterTest.cpp
Log Message:
* added rewriting for a replaced expression
Index: CodeModel.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeModel.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** CodeModel.cpp 23 Dec 2002 22:31:02 -0000 1.2
--- CodeModel.cpp 25 Dec 2002 12:13:56 -0000 1.3
***************
*** 305,309 ****
Generator::generateGenericExpression( const ASTNodePtr &expressionNode )
{
! ExpressionPtr expression( new GenericExpression() );
expression->setSourceRange( expressionNode->getRange() );
return expression;
--- 305,310 ----
Generator::generateGenericExpression( const ASTNodePtr &expressionNode )
{
! std::string value = expressionNode->getOriginalText();
! ExpressionPtr expression( new GenericExpression( value ) );
expression->setSourceRange( expressionNode->getRange() );
return expression;
Index: CodeModelElement.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeModelElement.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** CodeModelElement.cpp 23 Dec 2002 22:31:02 -0000 1.2
--- CodeModelElement.cpp 25 Dec 2002 12:13:56 -0000 1.3
***************
*** 13,16 ****
--- 13,17 ----
Element::Element()
+ : wasReplaced_( false )
{
unsetSourceRange();
***************
*** 27,30 ****
--- 28,32 ----
{
sourceRange_ = sourceRange;
+ wasReplaced_ = false;
}
***************
*** 48,51 ****
--- 50,67 ----
{
return sourceRange_.getStartIndex() != -1;
+ }
+
+
+ bool
+ Element::wasReplaced() const
+ {
+ return wasReplaced_;
+ }
+
+
+ void
+ Element::replace()
+ {
+ wasReplaced_ = true;
}
Index: CodeModelExpressions.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeModelExpressions.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** CodeModelExpressions.cpp 22 Dec 2002 11:44:01 -0000 1.2
--- CodeModelExpressions.cpp 25 Dec 2002 12:13:56 -0000 1.3
***************
*** 16,19 ****
--- 16,39 ----
+ GenericExpression::GenericExpression( const std::string &value )
+ : value_( value )
+ {
+ }
+
+
+ const std::string
+ GenericExpression::getValue() const
+ {
+ return value_;
+ }
+
+
+ void
+ GenericExpression::setValue( const std::string &value )
+ {
+ replace();
+ value_ = value;
+ }
+
void
Index: CodeRewriter.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** CodeRewriter.cpp 22 Dec 2002 15:47:01 -0000 1.1
--- CodeRewriter.cpp 25 Dec 2002 12:13:56 -0000 1.2
***************
*** 6,9 ****
--- 6,13 ----
#include "stdafx.h"
#include "CodeRewriter.h"
+ #include "ReplaceTextTransform.h"
+ #include <rfta/refactoring/TextDocument.h>
+ #include <rfta/refactoring/CodeModelExpressions.h>
+ #include <rfta/refactoring/CodeModelStatements.h>
***************
*** 23,30 ****
void
! CodeRewriter::rewrite( Element &element,
TextDocument &document )
{
! // element.rewrite( *this );
}
--- 27,209 ----
void
! CodeRewriter::rewrite( Statement &statement,
TextDocument &document )
{
! statement.accept( *this );
!
! transforms_.apply( document );
! }
!
!
! void
! CodeRewriter::visit( BreakStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( CaseStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( CompoundStatement &statement )
! {
! for ( int index =0; index < statement.getStatementCount(); ++index )
! statement.getStatementAt( index )->accept( *this );
! }
!
!
! void
! CodeRewriter::visit( ConditionStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( ContinueStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( DefaultStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( DeclarationStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( DoStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( ExpressionStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( FlowControlStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( ForStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( GotoStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( IfStatement &statement )
! {
! statement.getCondition()->accept( *this );
! statement.getThenStatement()->accept( *this );
! if ( statement.hasElseStatement() )
! statement.getElseStatement()->accept( *this );
! }
!
!
! void
! CodeRewriter::visit( IterationStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( LabelStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( NullStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( ReturnStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( SwitchLabelStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( SwitchStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( WhileStatement &statement )
! {
! }
!
!
! void
! CodeRewriter::visit( AssignInitializerExpression &expression )
! {
! }
!
!
! void
! CodeRewriter::visit( ConstructorInitializerExpression &expression )
! {
! }
!
!
! void
! CodeRewriter::visit( DeclaratorExpression &expression )
! {
! }
!
!
! void
! CodeRewriter::visit( DefaultConditionExpression &expression )
! {
! }
!
!
! void
! CodeRewriter::visit( Expression &expression )
! {
! }
!
!
! void
! CodeRewriter::visit( GenericExpression &expression )
! {
! if ( expression.wasReplaced() )
! {
! transforms_.add( *new ReplaceTextTransform( expression.getSourceRange(),
! expression.getValue() ) );
! }
! }
!
!
! void
! CodeRewriter::visit( NullExpression &expression )
! {
}
Index: CodeRewriter.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** CodeRewriter.h 22 Dec 2002 15:47:01 -0000 1.1
--- CodeRewriter.h 25 Dec 2002 12:13:56 -0000 1.2
***************
*** 6,10 ****
#define RFTA_CODEREWRITER_H
! #include <rfta/refactoring/CodeModelElement.h>
namespace Refactoring {
--- 6,11 ----
#define RFTA_CODEREWRITER_H
! #include <rfta/refactoring/CodeModelVisitor.h>
! #include "TransformList.h"
namespace Refactoring {
***************
*** 16,20 ****
/// Rewrite source to match change made to the model.
! class CodeRewriter
{
public:
--- 17,22 ----
/// Rewrite source to match change made to the model.
! class CodeRewriter : private StatementVisitor
! , private ExpressionVisitor
{
public:
***************
*** 24,31 ****
virtual ~CodeRewriter();
! void rewrite( Element &element,
TextDocument &document );
private:
const std::string originalSource_;
};
--- 26,66 ----
virtual ~CodeRewriter();
! void rewrite( Statement &statement,
TextDocument &document );
private:
+ // overridden from StatementVisitor
+ void visit( BreakStatement &statement );
+ void visit( CaseStatement &statement );
+ void visit( CompoundStatement &statement );
+ void visit( ConditionStatement &statement );
+ void visit( ContinueStatement &statement );
+ void visit( DefaultStatement &statement );
+ void visit( DeclarationStatement &statement );
+ void visit( DoStatement &statement );
+ void visit( ExpressionStatement &statement );
+ void visit( FlowControlStatement &statement );
+ void visit( ForStatement &statement );
+ void visit( GotoStatement &statement );
+ void visit( IfStatement &statement );
+ void visit( IterationStatement &statement );
+ void visit( LabelStatement &statement );
+ void visit( NullStatement &statement );
+ void visit( ReturnStatement &statement );
+ void visit( SwitchLabelStatement &statement );
+ void visit( SwitchStatement &statement );
+ void visit( WhileStatement &statement );
+
+ // overridden from ExpressionVisitor
+ void visit( AssignInitializerExpression &expression );
+ void visit( ConstructorInitializerExpression &expression );
+ void visit( DeclaratorExpression &expression );
+ void visit( DefaultConditionExpression &expression );
+ void visit( Expression &expression );
+ void visit( GenericExpression &expression );
+ void visit( NullExpression &expression );
+
+ private:
+ TransformList transforms_;
const std::string originalSource_;
};
Index: CodeWriterTest.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** CodeWriterTest.cpp 22 Dec 2002 15:47:01 -0000 1.1
--- CodeWriterTest.cpp 25 Dec 2002 12:13:56 -0000 1.2
***************
*** 61,65 ****
{
source_ = "{"
! " doStuff();"
"}";
--- 61,66 ----
{
source_ = "{"
! " if (true)"
! " return;"
"}";
***************
*** 68,73 ****
RFTA_ASSERT_EQUAL( 1, compound_->getStatementCount() );
! CodeModel::StatementPtr statement( new CodeModel::NullStatement() );
! compound_->setStatementAt( 0, statement );
CodeModel::CodeRewriter writer( source_ );
--- 69,78 ----
RFTA_ASSERT_EQUAL( 1, compound_->getStatementCount() );
! CodeModel::IfStatement &ifStatement =
! static_cast<CodeModel::IfStatement &>( *compound_->getStatementAt(0) );
! CodeModel::GenericExpression &condition =
! static_cast<CodeModel::GenericExpression &>(
! *ifStatement.getCondition() );
! condition.setValue( "false" );
CodeModel::CodeRewriter writer( source_ );
***************
*** 75,81 ****
std::string expectedSource = "{"
! " ;"
"}";
! // RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() );
}
--- 80,87 ----
std::string expectedSource = "{"
! " if (false)"
! " return;"
"}";
! RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() );
}
|