|
|
@ -66,15 +66,15 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring |
|
|
|
Expression argExpr; |
|
|
|
Expression argExpr; |
|
|
|
if (node.ParameterModifier == ParameterModifier.Ref) { |
|
|
|
if (node.ParameterModifier == ParameterModifier.Ref) { |
|
|
|
body.Add (new VariableDeclarationStatement (node.Type.Clone (), node.Name, defaultExpr)); |
|
|
|
body.Add (new VariableDeclarationStatement (node.Type.Clone (), node.Name, defaultExpr)); |
|
|
|
argExpr = new DirectionExpression (FieldDirection.Ref, new IdentifierExpression (node.Name)); |
|
|
|
argExpr = GetArgumentExpression (node); |
|
|
|
} else if (node.ParameterModifier == ParameterModifier.Out) { |
|
|
|
} else if (node.ParameterModifier == ParameterModifier.Out) { |
|
|
|
body.Add (new VariableDeclarationStatement (node.Type.Clone (), node.Name)); |
|
|
|
body.Add (new VariableDeclarationStatement (node.Type.Clone (), node.Name)); |
|
|
|
argExpr = new DirectionExpression (FieldDirection.Out, new IdentifierExpression (node.Name)); |
|
|
|
argExpr = GetArgumentExpression (node); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
argExpr = defaultExpr; |
|
|
|
argExpr = defaultExpr; |
|
|
|
} |
|
|
|
} |
|
|
|
body.Add (new InvocationExpression (new IdentifierExpression (methodDecl.Name), |
|
|
|
body.Add (new InvocationExpression (new IdentifierExpression (methodDecl.Name), |
|
|
|
methodDecl.Parameters.Select (param => param == node ? argExpr : new IdentifierExpression (param.Name)))); |
|
|
|
methodDecl.Parameters.Select (param => param == node ? argExpr : GetArgumentExpression(param)))); |
|
|
|
|
|
|
|
|
|
|
|
var decl = (MethodDeclaration)methodDecl.Clone (); |
|
|
|
var decl = (MethodDeclaration)methodDecl.Clone (); |
|
|
|
decl.Parameters.Remove (decl.Parameters.First (param => param.Name == node.Name)); |
|
|
|
decl.Parameters.Remove (decl.Parameters.First (param => param.Name == node.Name)); |
|
|
@ -87,6 +87,18 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static Expression GetArgumentExpression(ParameterDeclaration parameter) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var identifierExpr = new IdentifierExpression(parameter.Name); |
|
|
|
|
|
|
|
switch (parameter.ParameterModifier) { |
|
|
|
|
|
|
|
case ParameterModifier.Out: |
|
|
|
|
|
|
|
return new DirectionExpression (FieldDirection.Out, identifierExpr); |
|
|
|
|
|
|
|
case ParameterModifier.Ref: |
|
|
|
|
|
|
|
return new DirectionExpression (FieldDirection.Ref, identifierExpr); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return identifierExpr; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static Expression GetDefaultValueExpression (RefactoringContext context, AstType astType) |
|
|
|
static Expression GetDefaultValueExpression (RefactoringContext context, AstType astType) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var type = context.ResolveType (astType); |
|
|
|
var type = context.ResolveType (astType); |
|
|
|