1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using ICSharpCode.NRefactory.Ast;
7
namespace ICSharpCode.NRefactory.Visitors
9
class RenameIdentifierVisitor : AbstractAstVisitor
11
protected StringComparer nameComparer;
12
protected string from, to;
14
public RenameIdentifierVisitor(string from, string to, StringComparer nameComparer)
16
this.nameComparer = nameComparer;
21
public override object VisitIdentifierExpression(IdentifierExpression identifierExpression, object data)
23
if (nameComparer.Equals(identifierExpression.Identifier, from)) {
24
identifierExpression.Identifier = to;
26
return base.VisitIdentifierExpression(identifierExpression, data);
30
sealed class RenameLocalVariableVisitor : RenameIdentifierVisitor
32
public RenameLocalVariableVisitor(string from, string to, StringComparer nameComparer)
33
: base(from, to, nameComparer)
37
public override object VisitVariableDeclaration(VariableDeclaration variableDeclaration, object data)
39
if (nameComparer.Equals(from, variableDeclaration.Name)) {
40
variableDeclaration.Name = to;
42
return base.VisitVariableDeclaration(variableDeclaration, data);
45
public override object VisitParameterDeclarationExpression(ParameterDeclarationExpression parameterDeclarationExpression, object data)
47
if (nameComparer.Equals(from, parameterDeclarationExpression.ParameterName)) {
48
parameterDeclarationExpression.ParameterName = to;
50
return base.VisitParameterDeclarationExpression(parameterDeclarationExpression, data);
53
public override object VisitForeachStatement(ForeachStatement foreachStatement, object data)
55
if (nameComparer.Equals(from, foreachStatement.VariableName)) {
56
foreachStatement.VariableName = to;
58
return base.VisitForeachStatement(foreachStatement, data);