|
|
|
@ -31,6 +31,7 @@ using ICSharpCode.NRefactory.CSharp.Resolver; |
|
|
|
using ICSharpCode.NRefactory.CSharp.Analysis; |
|
|
|
using ICSharpCode.NRefactory.CSharp.Analysis; |
|
|
|
using System.Threading; |
|
|
|
using System.Threading; |
|
|
|
using ICSharpCode.NRefactory.TypeSystem; |
|
|
|
using ICSharpCode.NRefactory.TypeSystem; |
|
|
|
|
|
|
|
using System.Threading.Tasks; |
|
|
|
|
|
|
|
|
|
|
|
namespace ICSharpCode.NRefactory.CSharp.Refactoring.ExtractMethod |
|
|
|
namespace ICSharpCode.NRefactory.CSharp.Refactoring.ExtractMethod |
|
|
|
{ |
|
|
|
{ |
|
|
|
@ -78,10 +79,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring.ExtractMethod |
|
|
|
}; |
|
|
|
}; |
|
|
|
if (!StaticVisitor.UsesNotStaticMember(context, expression)) |
|
|
|
if (!StaticVisitor.UsesNotStaticMember(context, expression)) |
|
|
|
method.Modifiers |= Modifiers.Static; |
|
|
|
method.Modifiers |= Modifiers.Static; |
|
|
|
script.InsertWithCursor(context.TranslateString("Extract method"), Script.InsertPosition.Before, method); |
|
|
|
var task = script.InsertWithCursor(context.TranslateString("Extract method"), Script.InsertPosition.Before, method); |
|
|
|
var target = new IdentifierExpression(methodName); |
|
|
|
task.ContinueWith (delegate { |
|
|
|
script.Replace(expression, new InvocationExpression(target)); |
|
|
|
var target = new IdentifierExpression(methodName); |
|
|
|
// script.Link(target, method.NameToken);
|
|
|
|
script.Replace(expression, new InvocationExpression(target)); |
|
|
|
|
|
|
|
script.Link(target, method.NameToken); |
|
|
|
|
|
|
|
}, TaskScheduler.FromCurrentSynchronizationContext ()); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -171,7 +174,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring.ExtractMethod |
|
|
|
mod = ParameterModifier.Out; |
|
|
|
mod = ParameterModifier.Out; |
|
|
|
argumentExpression = new DirectionExpression(FieldDirection.Out, argumentExpression); |
|
|
|
argumentExpression = new DirectionExpression(FieldDirection.Out, argumentExpression); |
|
|
|
break; |
|
|
|
break; |
|
|
|
// case DefiniteAssignmentStatus.Unassigned:
|
|
|
|
// case DefiniteAssignmentStatus.Unassigned:
|
|
|
|
default: |
|
|
|
default: |
|
|
|
mod = ParameterModifier.None; |
|
|
|
mod = ParameterModifier.None; |
|
|
|
break; |
|
|
|
break; |
|
|
|
@ -180,13 +183,14 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring.ExtractMethod |
|
|
|
new ParameterDeclaration(context.CreateShortType(status.Item1.Type), status.Item1.Name, mod)); |
|
|
|
new ParameterDeclaration(context.CreateShortType(status.Item1.Type), status.Item1.Name, mod)); |
|
|
|
invocation.Arguments.Add(argumentExpression); |
|
|
|
invocation.Arguments.Add(argumentExpression); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var task = script.InsertWithCursor(context.TranslateString("Extract method"), Script.InsertPosition.Before, method); |
|
|
|
foreach (var node in statements.Skip (1)) { |
|
|
|
task.ContinueWith (delegate { |
|
|
|
script.Remove(node); |
|
|
|
foreach (var node in statements.Skip (1)) { |
|
|
|
} |
|
|
|
script.Remove(node); |
|
|
|
script.Replace(statements [0], new ExpressionStatement(invocation)); |
|
|
|
} |
|
|
|
script.InsertWithCursor(context.TranslateString("Extract method"), Script.InsertPosition.Before, method); |
|
|
|
script.Replace(statements [0], new ExpressionStatement(invocation)); |
|
|
|
//script.Link(target, method.NameToken);
|
|
|
|
script.Link(target, method.NameToken); |
|
|
|
|
|
|
|
}, TaskScheduler.FromCurrentSynchronizationContext ()); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|